15088: Adds link account panel reducer tests
authorEric Biagiotti <ebiagiotti@veritasgenetics.com>
Thu, 9 May 2019 21:39:18 +0000 (17:39 -0400)
committerEric Biagiotti <ebiagiotti@veritasgenetics.com>
Thu, 9 May 2019 21:39:18 +0000 (17:39 -0400)
Arvados-DCO-1.1-Signed-off-by: Eric Biagiotti <ebiagiotti@veritasgenetics.com>

src/store/link-account-panel/link-account-panel-reducer.test.ts [new file with mode: 0644]
src/store/link-account-panel/link-account-panel-reducer.ts

diff --git a/src/store/link-account-panel/link-account-panel-reducer.test.ts b/src/store/link-account-panel/link-account-panel-reducer.test.ts
new file mode 100644 (file)
index 0000000..4cb88a8
--- /dev/null
@@ -0,0 +1,73 @@
+// Copyright (C) The Arvados Authors. All rights reserved.
+//
+// SPDX-License-Identifier: AGPL-3.0
+
+import { linkAccountPanelReducer, LinkAccountPanelError, LinkAccountPanelStatus, OriginatingUser } from "~/store/link-account-panel/link-account-panel-reducer";
+import { linkAccountPanelActions } from "~/store/link-account-panel/link-account-panel-actions";
+import { UserResource } from "~/models/user";
+
+describe('link-account-panel-reducer', () => {
+    const initialState = undefined;
+
+    it('handles initial link account state', () => {
+        const targetUser = { } as any;
+        targetUser.username = "targetUser";
+
+        const state = linkAccountPanelReducer(initialState, linkAccountPanelActions.LINK_INIT({targetUser}));
+        expect(state).toEqual({
+            targetUser,
+            targetUserToken: undefined,
+            userToLink: undefined,
+            userToLinkToken: undefined,
+            originatingUser: OriginatingUser.NONE,
+            error: LinkAccountPanelError.NONE,
+            status: LinkAccountPanelStatus.INITIAL
+        });
+    });
+
+    it('handles loaded link account state', () => {
+        const targetUser = { } as any;
+        targetUser.username = "targetUser";
+        const targetUserToken = "targettoken";
+
+        const userToLink = { } as any;
+        userToLink.username = "userToLink";
+        const userToLinkToken = "usertoken";
+
+        const originatingUser = OriginatingUser.TARGET_USER;
+
+        const state = linkAccountPanelReducer(initialState, linkAccountPanelActions.LINK_LOAD({
+            originatingUser, targetUser, targetUserToken, userToLink, userToLinkToken}));
+        expect(state).toEqual({
+            targetUser,
+            targetUserToken,
+            userToLink,
+            userToLinkToken,
+            originatingUser: OriginatingUser.TARGET_USER,
+            error: LinkAccountPanelError.NONE,
+            status: LinkAccountPanelStatus.LINKING
+        });
+    });
+
+    it('handles loaded invalid account state', () => {
+        const targetUser = { } as any;
+        targetUser.username = "targetUser";
+
+        const userToLink = { } as any;
+        userToLink.username = "userToLink";
+
+        const originatingUser = OriginatingUser.TARGET_USER;
+        const error = LinkAccountPanelError.NON_ADMIN;
+
+        const state = linkAccountPanelReducer(initialState, linkAccountPanelActions.LINK_INVALID({targetUser, userToLink, originatingUser, error}));
+        expect(state).toEqual({
+            targetUser,
+            targetUserToken: undefined,
+            userToLink,
+            userToLinkToken: undefined,
+            originatingUser: OriginatingUser.TARGET_USER,
+            error: LinkAccountPanelError.NON_ADMIN,
+            status: LinkAccountPanelStatus.ERROR
+        });
+    });
+});
index a8533185ba623d7270523e2b3fbdf8dcd6e90ae4..80878c3471dec02457b380962928672306a7fec8 100644 (file)
@@ -36,7 +36,7 @@ export interface LinkAccountPanelState {
 }
 
 const initialState = {
-    originatingUser: undefined,
+    originatingUser: OriginatingUser.NONE,
     targetUser: undefined,
     targetUserToken: undefined,
     userToLink: undefined,
@@ -49,13 +49,21 @@ export const linkAccountPanelReducer = (state: LinkAccountPanelState = initialSt
     linkAccountPanelActions.match(action, {
         default: () => state,
         LINK_INIT: ({ targetUser }) => ({
-            ...state, targetUser, status: LinkAccountPanelStatus.INITIAL, error: LinkAccountPanelError.NONE, originatingUser: OriginatingUser.NONE
+            targetUser, targetUserToken: undefined,
+            userToLink: undefined, userToLinkToken: undefined,
+            status: LinkAccountPanelStatus.INITIAL, error: LinkAccountPanelError.NONE, originatingUser: OriginatingUser.NONE
         }),
         LINK_LOAD: ({ originatingUser, userToLink, targetUser, targetUserToken, userToLinkToken}) => ({
-            ...state, originatingUser, targetUser, targetUserToken, userToLink, userToLinkToken, status: LinkAccountPanelStatus.LINKING, error: LinkAccountPanelError.NONE
+            originatingUser,
+            targetUser, targetUserToken,
+            userToLink, userToLinkToken,
+            status: LinkAccountPanelStatus.LINKING, error: LinkAccountPanelError.NONE
         }),
         LINK_INVALID: ({originatingUser, targetUser, userToLink, error}) => ({
-            ...state, originatingUser, targetUser, userToLink, error, status: LinkAccountPanelStatus.ERROR
+            originatingUser,
+            targetUser, targetUserToken: undefined,
+            userToLink, userToLinkToken: undefined,
+            error, status: LinkAccountPanelStatus.ERROR
         }),
         HAS_SESSION_DATA: () => ({
             ...state, status: LinkAccountPanelStatus.HAS_SESSION_DATA