UNPKG

box-ui-elements

Version:
431 lines (415 loc) • 14 kB
import { http, HttpResponse } from 'msw'; import type { HttpHandler } from 'msw'; import { DEFAULT_HOSTNAME_API } from '../../../../constants'; import { fileIdWithMetadata, mockFileRequest } from './MetadataSidebarRedesignedMocks'; const apiV2Path = `${DEFAULT_HOSTNAME_API}/2.0`; export const multilevelTaxonomyLevels = [ { display_name: 'Country', description: 'Country', level: 1, }, { display_name: 'Region', description: 'Region', level: 2, }, { displayName: 'City', display_name: 'City', level: 3, }, ]; export const singlelevelTaxonomyLevels = [ { display_name: 'Colour', description: 'Colour', level: 1, }, ]; export const mockMetadataTemplatesWithMultilevelTaxonomy = { url: `${apiV2Path}/metadata_templates/enterprise`, response: { limit: 1000, entries: [ { id: 'multilevel-taxonomy-template', type: 'metadata_template', templateKey: 'myTaxonomy', scope: 'enterprise_173733877', displayName: 'My Taxonomy', hidden: false, copyInstanceOnItemCopy: false, fields: [ { id: 'another-field-id', type: 'string', key: 'anotherAttribute', displayName: 'Another Attribute', hidden: false, }, { id: 'multilevel-taxonomy-field-id', type: 'taxonomy', key: 'multiLevel', displayName: 'Multi level taxonomy', hidden: false, namespace: 'testNamespace', taxonomyKey: 'multilevel-taxonomy', levels: multilevelTaxonomyLevels, optionsRules: { multiSelect: true, selectableLevels: [3] }, }, ], }, ], next_marker: null, prev_marker: null, }, }; export const mockMetadataTemplatesWithSinglelevelTaxonomy = { url: `${apiV2Path}/metadata_templates/enterprise`, response: { limit: 1000, entries: [ { id: 'singlelevel-taxonomy-template', type: 'metadata_template', templateKey: 'myTaxonomy', scope: 'enterprise_173733877', displayName: 'My Taxonomy', hidden: false, copyInstanceOnItemCopy: false, fields: [ { id: 'singlelevel-taxonomy-id', type: 'taxonomy', key: 'singleLevel', displayName: 'Single level taxonomy', hidden: false, namespace: 'testNamespace', taxonomyKey: 'singlelevel-taxonomy', optionsRules: { multiSelect: true, selectableLevels: [1] }, }, { id: 'another-field-id', type: 'string', key: 'anotherAttribute', displayName: 'Another Attribute', hidden: false, }, ], }, ], next_marker: null, prev_marker: null, }, }; export const mockMetadataInstancesWithTaxonomy = { url: `${apiV2Path}/files/${fileIdWithMetadata}/metadata`, response: { entries: [ { $id: 'metadata-id', $version: 0, $type: 'myTaxonomy-123', $parent: 'file_415542803939', $typeVersion: 2, $template: 'myTaxonomy', $scope: 'enterprise_173733877', $canEdit: true, anotherAttribute: 'test value', singleLevel: [ { displayName: 'Blue', id: 'blue-id', level: '1', nodePath: null, parentId: null, }, ], multiLevel: [ { displayName: 'London', id: 'london-l3-id', level: '3', nodePath: ['england-l2-id', 'uk-l1-id'], parentId: 'england-l2-id', }, ], }, ], limit: 100, }, }; export const mockMultilevelTaxonomyOptions = { url: `${apiV2Path}/metadata_templates/enterprise_173733877/myTaxonomy/fields/multiLevel/options`, response: { firstLevel: { entries: [ { id: 'uk-l1-id', display_name: 'United Kingdom', level: 1, ancestors: [], selectable: false, }, { id: 'japan-l1-id', display_name: 'Japan', level: 1, ancestors: [], selectable: false, }, ], taxonomy_id: 'multilevel-taxonomy-id', }, 'uk-l1-id': { entries: [ { id: 'england-l2-id', display_name: 'England', level: 2, ancestors: ['uk-l1-id'], selectable: false, }, { id: 'scotland-l2-id', ancestors: [ { id: 'uk-l1-id', display_name: 'United Kingdom', level: 1, }, ], display_name: 'Scotland', level: 2, selectable: true, }, { id: 'wales-l2-id', ancestors: [ { id: 'uk-l1-id', display_name: 'United Kingdom', level: 1, }, ], display_name: 'Wales', level: 2, selectable: true, }, ], taxonomy_id: 'multilevel-taxonomy-id', }, 'england-l2-id': { entries: [ { id: 'london-l3-id', ancestors: [ { id: 'uk-l1-id', display_name: 'United Kingdom', level: 1, }, { id: 'england-l2-id', display_name: 'England', level: 2, }, ], display_name: 'London', level: 3, selectable: true, }, ], taxonomy_id: 'multilevel-taxonomy-id', }, 'japan-l1-id': { entries: [ { id: 'tokyo-l2-id', ancestors: [ { id: 'japan-l1-id', display_name: 'Japan', level: 1, }, ], display_name: 'Tokyo', level: 2, selectable: true, }, { id: 'hokkaido-l2-id', ancestors: [ { id: 'japan-l1-id', display_name: 'Japan', level: 1, }, ], display_name: 'Hokkaido', level: 2, selectable: true, }, { id: 'iwate-l2-id', ancestors: [ { id: 'japan-l1-id', display_name: 'Japan', level: 1, }, ], display_name: 'Iwate', level: 2, selectable: true, }, { id: 'nagano-l2-id', ancestors: [ { id: 'japan-l1-id', display_name: 'Japan', level: 1, }, ], display_name: 'Nagano', level: 2, selectable: true, }, ], taxonomy_id: 'multilevel-taxonomy-id', }, 'hokkaido-l2-id': { entries: [ { id: 'sapporo-l3-id', ancestors: [ { id: 'japan-l1-id', display_name: 'Japan', level: 1, }, { id: 'hokkaido-l2-id', display_name: 'Hokkaido', level: 2, }, ], display_name: 'Sapporo', level: 3, selectable: true, }, ], taxonomy_id: 'multilevel-taxonomy-id', }, }, }; export const mockSinglelevelTaxonomyOptions = { url: `${apiV2Path}/metadata_templates/enterprise_173733877/myTaxonomy/fields/singleLevel/options`, response: { entries: [ { id: 'blue-id', display_name: 'Blue', level: 1, ancestors: [], selectable: true, }, { id: 'red-id', display_name: 'Red', level: 1, ancestors: [], selectable: true, }, { id: 'green-id', display_name: 'Green', level: 1, ancestors: [], selectable: true, }, ], taxonomy_id: 'singlelevel-taxonomy-id', }, }; export const mockMultilevelTaxonomy = { url: `${apiV2Path}/metadata_taxonomies/testNamespace/multilevel-taxonomy`, response: { display_name: 'Multilevel Taxonomy', id: 'multilevel-taxonomy-id', key: 'multilevel-taxonomy', levels: multilevelTaxonomyLevels, namespace: 'testNamespace', }, }; export const mockSinglelevelTaxonomy = { url: `${apiV2Path}/metadata_taxonomies/testNamespace/singlelevel-taxonomy`, response: { display_name: 'Singlelevel Taxonomy', id: 'singlelevel-taxonomy-id', key: 'singlelevel-taxonomy', levels: singlelevelTaxonomyLevels, namespace: 'testNamespace', }, }; export const mockMultilevelTaxonomyNodes = { url: `${apiV2Path}/metadata_taxonomies/testNamespace/multilevel-taxonomy/nodes/london-l3-id?include-ancestors=true`, response: { id: 'london-l3-id', ancestors: [ { level: 2, id: 'england-l2-id', display_name: 'England' }, { level: 1, id: 'uk-l1-id', display_name: 'United Kingdom' }, ], display_name: 'London', level: 3, selectable: true, parent_id: 'england-l2-id', node_path: ['uk-l1-id', 'england-l2-id'], }, }; export const mockSinglelevelTaxonomyNodes = { url: `${apiV2Path}/metadata_taxonomies/testNamespace/singlelevel-taxonomy/nodes/blue-id?include-ancestors=true`, response: { id: 'blue-id', ancestors: [], display_name: 'Blue', level: 1, selectable: true, parent_id: null, node_path: [], }, }; export const taxonomyMockHandlers: HttpHandler[] = [ http.get(mockFileRequest.url, () => { return HttpResponse.json(mockFileRequest.response); }), http.get(mockMetadataInstancesWithTaxonomy.url, () => { return HttpResponse.json(mockMetadataInstancesWithTaxonomy.response); }), http.get(mockMultilevelTaxonomy.url, () => { return HttpResponse.json(mockMultilevelTaxonomy.response); }), http.get(mockSinglelevelTaxonomy.url, () => { return HttpResponse.json(mockSinglelevelTaxonomy.response); }), http.get(mockMultilevelTaxonomyNodes.url, () => { return HttpResponse.json(mockMultilevelTaxonomyNodes.response); }), http.get(mockSinglelevelTaxonomyNodes.url, () => { return HttpResponse.json(mockSinglelevelTaxonomyNodes.response); }), http.get(mockMultilevelTaxonomyOptions.url, ({ request }) => { const url = new URL(request.url); const ancestorId = url.searchParams.get('ancestor_id'); if (!ancestorId) { return HttpResponse.json(mockMultilevelTaxonomyOptions.response.firstLevel); } return HttpResponse.json(mockMultilevelTaxonomyOptions.response[ancestorId]); }), http.get(mockSinglelevelTaxonomyOptions.url, () => { return HttpResponse.json(mockSinglelevelTaxonomyOptions.response); }), ];