X-Git-Url: https://git.arvados.org/arvados-workbench2.git/blobdiff_plain/ebaede5aff01400db400a3e69bb3bec2b636db3a..31e84a9315728c2f58a26bf0e9e1d2b38326fb86:/src/store/context-menu/context-menu-actions.test.ts diff --git a/src/store/context-menu/context-menu-actions.test.ts b/src/store/context-menu/context-menu-actions.test.ts index 2778568e..36976336 100644 --- a/src/store/context-menu/context-menu-actions.test.ts +++ b/src/store/context-menu/context-menu-actions.test.ts @@ -6,6 +6,8 @@ import { ContextMenuKind } from '~/views-components/context-menu/context-menu'; import { resourceUuidToContextMenuKind } from './context-menu-actions'; import configureStore from 'redux-mock-store'; import thunk from 'redux-thunk'; +import { PROJECT_PANEL_CURRENT_UUID } from '../project-panel/project-panel-action'; +import { GroupClass } from '~/models/group'; describe('context-menu-actions', () => { describe('resourceUuidToContextMenuKind', () => { @@ -16,70 +18,80 @@ describe('context-menu-actions', () => { const headCollectionUuid = 'zzzzz-4zz18-aaaaaaaaaaaaaaa'; const oldCollectionUuid = 'zzzzz-4zz18-aaaaaaaaaaaaaab'; const projectUuid = 'zzzzz-j7d0g-ccccccccccccccc'; + const filterGroupUuid = 'zzzzz-j7d0g-ccccccccccccccd'; const linkUuid = 'zzzzz-o0j2j-0123456789abcde'; const containerRequestUuid = 'zzzzz-xvhdp-0123456789abcde'; it('should return the correct menu kind', () => { const cases = [ - // resourceUuid, isAdminUser, isEditable, isTrashed, expected - [headCollectionUuid, false, true, true, ContextMenuKind.TRASHED_COLLECTION], - [headCollectionUuid, false, true, false, ContextMenuKind.COLLECTION], - [headCollectionUuid, false, false, true, ContextMenuKind.READONLY_COLLECTION], - [headCollectionUuid, false, false, false, ContextMenuKind.READONLY_COLLECTION], - [headCollectionUuid, true, true, true, ContextMenuKind.TRASHED_COLLECTION], - [headCollectionUuid, true, true, false, ContextMenuKind.COLLECTION_ADMIN], - [headCollectionUuid, true, false, true, ContextMenuKind.TRASHED_COLLECTION], - [headCollectionUuid, true, false, false, ContextMenuKind.COLLECTION_ADMIN], + // resourceUuid, isAdminUser, isEditable, isTrashed, forceReadonly, expected + [headCollectionUuid, false, true, true, false, ContextMenuKind.TRASHED_COLLECTION], + [headCollectionUuid, false, true, false, false, ContextMenuKind.COLLECTION], + [headCollectionUuid, false, true, false, true, ContextMenuKind.READONLY_COLLECTION], + [headCollectionUuid, false, false, true, false, ContextMenuKind.READONLY_COLLECTION], + [headCollectionUuid, false, false, false, false, ContextMenuKind.READONLY_COLLECTION], + [headCollectionUuid, true, true, true, false, ContextMenuKind.TRASHED_COLLECTION], + [headCollectionUuid, true, true, false, false, ContextMenuKind.COLLECTION_ADMIN], + [headCollectionUuid, true, false, true, false, ContextMenuKind.TRASHED_COLLECTION], + [headCollectionUuid, true, false, false, false, ContextMenuKind.COLLECTION_ADMIN], + [headCollectionUuid, true, false, false, true, ContextMenuKind.READONLY_COLLECTION], - [oldCollectionUuid, false, true, true, ContextMenuKind.OLD_VERSION_COLLECTION], - [oldCollectionUuid, false, true, false, ContextMenuKind.OLD_VERSION_COLLECTION], - [oldCollectionUuid, false, false, true, ContextMenuKind.OLD_VERSION_COLLECTION], - [oldCollectionUuid, false, false, false, ContextMenuKind.OLD_VERSION_COLLECTION], - [oldCollectionUuid, true, true, true, ContextMenuKind.OLD_VERSION_COLLECTION], - [oldCollectionUuid, true, true, false, ContextMenuKind.OLD_VERSION_COLLECTION], - [oldCollectionUuid, true, false, true, ContextMenuKind.OLD_VERSION_COLLECTION], - [oldCollectionUuid, true, false, false, ContextMenuKind.OLD_VERSION_COLLECTION], + [oldCollectionUuid, false, true, true, false, ContextMenuKind.OLD_VERSION_COLLECTION], + [oldCollectionUuid, false, true, false, false, ContextMenuKind.OLD_VERSION_COLLECTION], + [oldCollectionUuid, false, false, true, false, ContextMenuKind.OLD_VERSION_COLLECTION], + [oldCollectionUuid, false, false, false, false, ContextMenuKind.OLD_VERSION_COLLECTION], + [oldCollectionUuid, true, true, true, false, ContextMenuKind.OLD_VERSION_COLLECTION], + [oldCollectionUuid, true, true, false, false, ContextMenuKind.OLD_VERSION_COLLECTION], + [oldCollectionUuid, true, false, true, false, ContextMenuKind.OLD_VERSION_COLLECTION], + [oldCollectionUuid, true, false, false, false, ContextMenuKind.OLD_VERSION_COLLECTION], // FIXME: WB2 doesn't currently have context menu for trashed projects - // [projectUuid, false, true, true, ContextMenuKind.TRASHED_PROJECT], - [projectUuid, false, true, false, ContextMenuKind.PROJECT], - [projectUuid, false, false, true, ContextMenuKind.READONLY_PROJECT], - [projectUuid, false, false, false, ContextMenuKind.READONLY_PROJECT], - // [projectUuid, true, true, true, ContextMenuKind.TRASHED_PROJECT], - [projectUuid, true, true, false, ContextMenuKind.PROJECT_ADMIN], - // [projectUuid, true, false, true, ContextMenuKind.TRASHED_PROJECT], - [projectUuid, true, false, false, ContextMenuKind.PROJECT_ADMIN], + // [projectUuid, false, true, true, false, ContextMenuKind.TRASHED_PROJECT], + [projectUuid, false, true, false, false, ContextMenuKind.PROJECT], + [projectUuid, false, true, false, true, ContextMenuKind.READONLY_PROJECT], + [projectUuid, false, false, true, false, ContextMenuKind.READONLY_PROJECT], + [projectUuid, false, false, false, false, ContextMenuKind.READONLY_PROJECT], + // [projectUuid, true, true, true, false, ContextMenuKind.TRASHED_PROJECT], + [projectUuid, true, true, false, false, ContextMenuKind.PROJECT_ADMIN], + // [projectUuid, true, false, true, false, ContextMenuKind.TRASHED_PROJECT], + [projectUuid, true, false, false, false, ContextMenuKind.PROJECT_ADMIN], + [projectUuid, true, false, false, true, ContextMenuKind.READONLY_PROJECT], - [linkUuid, false, true, true, ContextMenuKind.LINK], - [linkUuid, false, true, false, ContextMenuKind.LINK], - [linkUuid, false, false, true, ContextMenuKind.LINK], - [linkUuid, false, false, false, ContextMenuKind.LINK], - [linkUuid, true, true, true, ContextMenuKind.LINK], - [linkUuid, true, true, false, ContextMenuKind.LINK], - [linkUuid, true, false, true, ContextMenuKind.LINK], - [linkUuid, true, false, false, ContextMenuKind.LINK], + [linkUuid, false, true, true, false, ContextMenuKind.LINK], + [linkUuid, false, true, false, false, ContextMenuKind.LINK], + [linkUuid, false, false, true, false, ContextMenuKind.LINK], + [linkUuid, false, false, false, false, ContextMenuKind.LINK], + [linkUuid, true, true, true, false, ContextMenuKind.LINK], + [linkUuid, true, true, false, false, ContextMenuKind.LINK], + [linkUuid, true, false, true, false, ContextMenuKind.LINK], + [linkUuid, true, false, false, false, ContextMenuKind.LINK], - [userUuid, false, true, true, ContextMenuKind.ROOT_PROJECT], - [userUuid, false, true, false, ContextMenuKind.ROOT_PROJECT], - [userUuid, false, false, true, ContextMenuKind.ROOT_PROJECT], - [userUuid, false, false, false, ContextMenuKind.ROOT_PROJECT], - [userUuid, true, true, true, ContextMenuKind.ROOT_PROJECT], - [userUuid, true, true, false, ContextMenuKind.ROOT_PROJECT], - [userUuid, true, false, true, ContextMenuKind.ROOT_PROJECT], - [userUuid, true, false, false, ContextMenuKind.ROOT_PROJECT], + [userUuid, false, true, true, false, ContextMenuKind.ROOT_PROJECT], + [userUuid, false, true, false, false, ContextMenuKind.ROOT_PROJECT], + [userUuid, false, false, true, false, ContextMenuKind.ROOT_PROJECT], + [userUuid, false, false, false, false, ContextMenuKind.ROOT_PROJECT], + [userUuid, true, true, true, false, ContextMenuKind.ROOT_PROJECT], + [userUuid, true, true, false, false, ContextMenuKind.ROOT_PROJECT], + [userUuid, true, false, true, false, ContextMenuKind.ROOT_PROJECT], + [userUuid, true, false, false, false, ContextMenuKind.ROOT_PROJECT], - [containerRequestUuid, false, true, true, ContextMenuKind.PROCESS_RESOURCE], - [containerRequestUuid, false, true, false, ContextMenuKind.PROCESS_RESOURCE], - [containerRequestUuid, false, false, true, ContextMenuKind.PROCESS_RESOURCE], - [containerRequestUuid, false, false, false, ContextMenuKind.PROCESS_RESOURCE], - [containerRequestUuid, true, true, true, ContextMenuKind.PROCESS_ADMIN], - [containerRequestUuid, true, true, false, ContextMenuKind.PROCESS_ADMIN], - [containerRequestUuid, true, false, true, ContextMenuKind.PROCESS_ADMIN], - [containerRequestUuid, true, false, false, ContextMenuKind.PROCESS_ADMIN], + [containerRequestUuid, false, true, true, false, ContextMenuKind.PROCESS_RESOURCE], + [containerRequestUuid, false, true, false, false, ContextMenuKind.PROCESS_RESOURCE], + [containerRequestUuid, false, false, true, false, ContextMenuKind.PROCESS_RESOURCE], + [containerRequestUuid, false, false, false, false, ContextMenuKind.PROCESS_RESOURCE], + [containerRequestUuid, false, false, false, true, ContextMenuKind.READONLY_PROCESS_RESOURCE], + [containerRequestUuid, true, true, true, false, ContextMenuKind.PROCESS_ADMIN], + [containerRequestUuid, true, true, false, false, ContextMenuKind.PROCESS_ADMIN], + [containerRequestUuid, true, false, true, false, ContextMenuKind.PROCESS_ADMIN], + [containerRequestUuid, true, false, false, false, ContextMenuKind.PROCESS_ADMIN], + [containerRequestUuid, true, false, false, true, ContextMenuKind.READONLY_PROCESS_RESOURCE], ] - cases.forEach(([resourceUuid, isAdminUser, isEditable, isTrashed, expected]) => { + cases.forEach(([resourceUuid, isAdminUser, isEditable, isTrashed, forceReadonly, expected]) => { const initialState = { + properties: { + [PROJECT_PANEL_CURRENT_UUID]: projectUuid, + }, resources: { [headCollectionUuid]: { uuid: headCollectionUuid, @@ -91,12 +103,18 @@ describe('context-menu-actions', () => { uuid: oldCollectionUuid, currentVersionUuid: headCollectionUuid, isTrashed: isTrashed, - }, [projectUuid]: { uuid: projectUuid, ownerUuid: isEditable ? userUuid : otherUserUuid, writableBy: isEditable ? [userUuid] : [otherUserUuid], + groupClass: GroupClass.PROJECT, + }, + [filterGroupUuid]: { + uuid: filterGroupUuid, + ownerUuid: isEditable ? userUuid : otherUserUuid, + writableBy: isEditable ? [userUuid] : [otherUserUuid], + groupClass: GroupClass.FILTER, }, [linkUuid]: { uuid: linkUuid, @@ -118,13 +136,14 @@ describe('context-menu-actions', () => { }; const store = mockStore(initialState); - const menuKind = store.dispatch(resourceUuidToContextMenuKind(resourceUuid as string)) + let menuKind: any; try { + menuKind = store.dispatch(resourceUuidToContextMenuKind(resourceUuid as string, forceReadonly as boolean)) expect(menuKind).toBe(expected); } catch (err) { - throw new Error(`menuKind for resource ${JSON.stringify(initialState.resources[resourceUuid as string])} expected to be ${expected} but got ${menuKind}.`); + throw new Error(`menuKind for resource ${JSON.stringify(initialState.resources[resourceUuid as string])} forceReadonly: ${forceReadonly} expected to be ${expected} but got ${menuKind}.`); } }); }); }); -}); \ No newline at end of file +});