box-ui-elements
Version:
Box UI Elements
146 lines (143 loc) • 5.16 kB
JavaScript
import { userEvent, within } from 'storybook/test';
import { http, HttpResponse } from 'msw';
import { DEFAULT_HOSTNAME_API } from '../../../../constants';
import { mockEventRequest, mockFileRequest, mockUserRequest } from '../../../common/__mocks__/mockRequests';
import ContentPreview from '../../ContentPreview';
const apiV2Path = `${DEFAULT_HOSTNAME_API}/2.0`;
const fileIdWithMetadata = '415542803939';
// Mock file with metadata permissions
const mockFileWithMetadata = {
url: `${apiV2Path}/files/${fileIdWithMetadata}`,
response: {
type: 'file',
id: fileIdWithMetadata,
etag: '3',
extension: 'pdf',
name: 'Test Document.pdf',
permissions: {
can_download: true,
can_preview: true,
can_upload: true,
can_comment: true,
can_rename: true,
can_delete: true,
can_share: true,
can_set_share_access: true,
can_invite_collaborator: true,
can_annotate: true,
can_view_annotations_all: true,
can_view_annotations_self: true,
can_create_annotations: true,
can_view_annotations: true
}
}
};
// Mock metadata template with very long dropdown options
const mockMetadataTemplateWithLongOptions = {
url: `${apiV2Path}/metadata_templates/enterprise`,
response: {
limit: 1000,
entries: [{
id: 'long-dropdown-template-id',
type: 'metadata_template',
templateKey: 'longDropdownTemplate',
scope: 'enterprise_173733877',
displayName: 'Long Dropdown Test Template',
hidden: false,
copyInstanceOnItemCopy: false,
fields: [{
id: 'long-dropdown-field-id',
type: 'enum',
key: 'longDropdownField',
displayName: 'Department Selection',
hidden: false,
description: 'Select your department from the dropdown',
options: [{
id: 'option-1',
key: 'Engineering - Software Development - Frontend React TypeScript Team Alpha Division'
}, {
id: 'option-2',
key: 'Marketing - Digital Campaigns - Social Media Content Strategy Team Beta Division'
}, {
id: 'option-3',
key: 'Human Resources - Talent Acquisition - Employee Experience Team Gamma Division'
}, {
id: 'option-4',
key: 'Finance - Accounting - Budget Planning - Financial Analysis Team Delta Division'
}, {
id: 'option-5',
key: 'Operations - Supply Chain - Logistics - Vendor Management Team Epsilon Division'
}, {
id: 'option-6',
key: 'Legal - Compliance - Regulatory Affairs - Contract Management Team Zeta Division'
}]
}]
}]
}
};
// Mock metadata instance for the file
const mockMetadataInstances = {
url: `${apiV2Path}/files/${fileIdWithMetadata}/metadata`,
response: {
entries: [{
$id: 'long-dropdown-instance-id',
$version: 1,
$type: 'longDropdownTemplate-template-type',
$parent: `file_${fileIdWithMetadata}`,
$typeVersion: 1,
$template: 'longDropdownTemplate',
$scope: 'enterprise_173733877',
$templateKey: 'longDropdownTemplate',
longDropdownField: 'Engineering - Software Development - Frontend React TypeScript Team Alpha Division',
$canEdit: true
}],
limit: 100
}
};
const mockGlobalMetadataTemplates = {
url: `${apiV2Path}/metadata_templates/global`,
response: {
entries: []
}
};
export const metadataDropdownPositioning = {
parameters: {
msw: {
handlers: [http.get(mockFileWithMetadata.url, () => HttpResponse.json(mockFileWithMetadata.response)), http.get(mockMetadataTemplateWithLongOptions.url, () => HttpResponse.json(mockMetadataTemplateWithLongOptions.response)), http.get(mockMetadataInstances.url, () => HttpResponse.json(mockMetadataInstances.response)), http.get(mockGlobalMetadataTemplates.url, () => HttpResponse.json(mockGlobalMetadataTemplates.response)), http.get(mockFileRequest.url, () => HttpResponse.json(mockFileRequest.response)), http.get(mockUserRequest.url, () => HttpResponse.json(mockUserRequest.response)), http.get(mockEventRequest.url, () => HttpResponse.json(mockEventRequest.response))]
}
},
play: async ({
canvasElement
}) => {
const canvas = within(canvasElement);
const editButton = await canvas.findByRole('button', {
name: 'Edit Long Dropdown Test Template'
});
await userEvent.click(editButton);
const dropdownField = await canvas.findByRole('combobox', {
name: 'Department Selection'
});
await userEvent.click(dropdownField);
await canvas.findByRole('option', {
name: 'Engineering - Software Development - Frontend React TypeScript Team Alpha Division'
});
}
};
export default {
title: 'Elements/ContentPreview/tests/visual/Metadata',
component: ContentPreview,
args: {
fileId: fileIdWithMetadata,
hasHeader: true,
contentSidebarProps: {
hasMetadata: true,
metadataSidebarProps: {
isFeatureEnabled: true
},
features: {
'metadata.redesign.enabled': true
}
}
}
};
//# sourceMappingURL=ContentPreview-metadata-visual.stories.js.map