Merge branch '17019-token-visible-within-test'
[arvados-workbench2.git] / src / store / context-menu / context-menu-actions.test.ts
1 // Copyright (C) The Arvados Authors. All rights reserved.
2 //
3 // SPDX-License-Identifier: AGPL-3.0
4
5 import * as resource from '~/models/resource';
6 import { ContextMenuKind } from '~/views-components/context-menu/context-menu';
7 import { resourceKindToContextMenuKind } from './context-menu-actions';
8
9 describe('context-menu-actions', () => {
10     describe('resourceKindToContextMenuKind', () => {
11         const uuid = '123';
12
13         describe('ResourceKind.PROJECT', () => {
14             beforeEach(() => {
15                 // setup
16                 jest.spyOn(resource, 'extractUuidKind')
17                     .mockImplementation(() => resource.ResourceKind.PROJECT);
18             });
19
20             it('should return ContextMenuKind.PROJECT_ADMIN', () => {
21                 // given
22                 const isAdmin = true;
23
24                 // when
25                 const result = resourceKindToContextMenuKind(uuid, isAdmin);
26
27                 // then
28                 expect(result).toEqual(ContextMenuKind.PROJECT_ADMIN);
29             });
30
31             it('should return ContextMenuKind.PROJECT', () => {
32                 // given
33                 const isAdmin = false;
34                 const isEditable = true;
35
36                 // when
37                 const result = resourceKindToContextMenuKind(uuid, isAdmin, isEditable);
38
39                 // then
40                 expect(result).toEqual(ContextMenuKind.PROJECT);
41             });
42
43             it('should return ContextMenuKind.READONLY_PROJECT', () => {
44                 // given
45                 const isAdmin = false;
46                 const isEditable = false;
47
48                 // when
49                 const result = resourceKindToContextMenuKind(uuid, isAdmin, isEditable);
50
51                 // then
52                 expect(result).toEqual(ContextMenuKind.READONLY_PROJECT);
53             });
54         });
55
56         describe('ResourceKind.COLLECTION', () => {
57             beforeEach(() => {
58                 // setup
59                 jest.spyOn(resource, 'extractUuidKind')
60                     .mockImplementation(() => resource.ResourceKind.COLLECTION);
61             });
62
63             it('should return ContextMenuKind.COLLECTION_ADMIN', () => {
64                 // given
65                 const isAdmin = true;
66
67                 // when
68                 const result = resourceKindToContextMenuKind(uuid, isAdmin);
69
70                 // then
71                 expect(result).toEqual(ContextMenuKind.COLLECTION_ADMIN);
72             });
73
74             it('should return ContextMenuKind.COLLECTION_RESOURCE', () => {
75                 // given
76                 const isAdmin = false;
77                 const isEditable = true;
78
79                 // when
80                 const result = resourceKindToContextMenuKind(uuid, isAdmin, isEditable);
81
82                 // then
83                 expect(result).toEqual(ContextMenuKind.COLLECTION_RESOURCE);
84             });
85
86             it('should return ContextMenuKind.READONLY_COLLECTION', () => {
87                 // given
88                 const isAdmin = false;
89                 const isEditable = false;
90
91                 // when
92                 const result = resourceKindToContextMenuKind(uuid, isAdmin, isEditable);
93
94                 // then
95                 expect(result).toEqual(ContextMenuKind.READONLY_COLLECTION);
96             });
97         });
98
99         describe('ResourceKind.PROCESS', () => {
100             beforeEach(() => {
101                 // setup
102                 jest.spyOn(resource, 'extractUuidKind')
103                     .mockImplementation(() => resource.ResourceKind.PROCESS);
104             });
105
106             it('should return ContextMenuKind.PROCESS_ADMIN', () => {
107                 // given
108                 const isAdmin = true;
109
110                 // when
111                 const result = resourceKindToContextMenuKind(uuid, isAdmin);
112
113                 // then
114                 expect(result).toEqual(ContextMenuKind.PROCESS_ADMIN);
115             });
116
117             it('should return ContextMenuKind.PROCESS_RESOURCE', () => {
118                 // given
119                 const isAdmin = false;
120
121                 // when
122                 const result = resourceKindToContextMenuKind(uuid, isAdmin);
123
124                 // then
125                 expect(result).toEqual(ContextMenuKind.PROCESS_RESOURCE);
126             });
127         });
128
129         describe('ResourceKind.USER', () => {
130             beforeEach(() => {
131                 // setup
132                 jest.spyOn(resource, 'extractUuidKind')
133                     .mockImplementation(() => resource.ResourceKind.USER);
134             });
135
136             it('should return ContextMenuKind.ROOT_PROJECT', () => {
137                 // when
138                 const result = resourceKindToContextMenuKind(uuid);
139
140                 // then
141                 expect(result).toEqual(ContextMenuKind.ROOT_PROJECT);
142             });
143         });
144
145         describe('ResourceKind.LINK', () => {
146             beforeEach(() => {
147                 // setup
148                 jest.spyOn(resource, 'extractUuidKind')
149                     .mockImplementation(() => resource.ResourceKind.LINK);
150             });
151
152             it('should return ContextMenuKind.LINK', () => {
153                 // when
154                 const result = resourceKindToContextMenuKind(uuid);
155
156                 // then
157                 expect(result).toEqual(ContextMenuKind.LINK);
158             });
159         });
160     });
161 });