@imposium-hub/components 2.14.8 → 2.14.11

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (249) hide show
  1. package/dist/cjs/components/advanced-number-field/AdvancedNumberField.d.ts +1 -1
  2. package/dist/cjs/components/anchor-field/AnchorField.d.ts +1 -1
  3. package/dist/cjs/components/assets/AssetsTableDateCell.d.ts +6 -1
  4. package/dist/cjs/components/assets/AssetsTableGlobalCell.d.ts +5 -1
  5. package/dist/cjs/components/assets/AssetsTablePreviewCell.d.ts +17 -1
  6. package/dist/cjs/components/assets/AssetsTableStatusCell.d.ts +5 -1
  7. package/dist/cjs/components/assets/AssetsTableTagsCell.d.ts +6 -1
  8. package/dist/cjs/components/assets/AssetsTableTypeCell.d.ts +5 -1
  9. package/dist/cjs/components/assets/AssetsTypeIcon.d.ts +5 -1
  10. package/dist/cjs/components/assets/FontAssetPreview.d.ts +1 -1
  11. package/dist/cjs/components/assets/StoryTableTotalRendersCell.d.ts +2 -1
  12. package/dist/cjs/components/button/Button.d.ts +1 -1
  13. package/dist/cjs/components/button/Button.stories.d.ts +6 -5
  14. package/dist/cjs/components/button-group-field/ButtonGroupField.d.ts +1 -1
  15. package/dist/cjs/components/button-group-field/ButtonGroupField.stories.d.ts +2 -1
  16. package/dist/cjs/components/button-menu/ButtonMenu.d.ts +2 -2
  17. package/dist/cjs/components/button-menu/ButtonMenu.stories.d.ts +2 -1
  18. package/dist/cjs/components/button-menu/ButtonMenuItem.d.ts +1 -1
  19. package/dist/cjs/components/card/Card.d.ts +4 -4
  20. package/dist/cjs/components/card/Card.stories.d.ts +2 -1
  21. package/dist/cjs/components/checkbox-field/CheckboxField.d.ts +1 -1
  22. package/dist/cjs/components/checkbox-field/CheckboxField.stories.d.ts +2 -1
  23. package/dist/cjs/components/color-field/ColorField.d.ts +1 -1
  24. package/dist/cjs/components/color-field/ColorFiled.stories.d.ts +2 -1
  25. package/dist/cjs/components/compositions/TextLayer.d.ts +1 -1
  26. package/dist/cjs/components/config-variable-button/ConfigVariableButton.d.ts +42 -1
  27. package/dist/cjs/components/confirm-modal/ConfirmModal.d.ts +2 -1
  28. package/dist/cjs/components/controlled-list/ControlledList.d.ts +2 -2
  29. package/dist/cjs/components/controlled-list/ControlledList.stories.d.ts +2 -1
  30. package/dist/cjs/components/copy-prop-id-button/CopyPropIdButton.d.ts +1 -1
  31. package/dist/cjs/components/determinate-loader/DeterminateLoader.stories.d.ts +4 -3
  32. package/dist/cjs/components/dropdown/Dropdown.d.ts +1 -1
  33. package/dist/cjs/components/dropdown/Dropdown.stories.d.ts +1 -1
  34. package/dist/cjs/components/field-wrapper/FieldWrapper.d.ts +2 -2
  35. package/dist/cjs/components/field-wrapper/FieldWrapper.stories.d.ts +2 -1
  36. package/dist/cjs/components/font-field/FontField.d.ts +2 -1
  37. package/dist/cjs/components/font-picker/FontPicker.d.ts +1 -1
  38. package/dist/cjs/components/h-rule/HRule.d.ts +2 -1
  39. package/dist/cjs/components/h-rule/HRule.stories.d.ts +3 -2
  40. package/dist/cjs/components/header/ProjectDropdown.d.ts +2 -1
  41. package/dist/cjs/components/list-field/ListField.d.ts +1 -1
  42. package/dist/cjs/components/list-field/ListField.stories.d.ts +2 -1
  43. package/dist/cjs/components/log-viewer/LogViewer.d.ts +1 -1
  44. package/dist/cjs/components/media-variable-field/MediaVariableField.d.ts +1 -1
  45. package/dist/cjs/components/modal/Modal.d.ts +1 -1
  46. package/dist/cjs/components/modal/Modal.stories.d.ts +2 -1
  47. package/dist/cjs/components/number-field/NumberField.d.ts +3 -3
  48. package/dist/cjs/components/number-field/NumberField.js +7 -4
  49. package/dist/cjs/components/number-field/NumberField.js.map +1 -1
  50. package/dist/cjs/components/number-field/NumberField.stories.d.ts +2 -1
  51. package/dist/cjs/components/players/AudioPlayer.d.ts +1 -1
  52. package/dist/cjs/components/players/AudioPreview.d.ts +1 -1
  53. package/dist/cjs/components/players/ImagePlayer.d.ts +1 -1
  54. package/dist/cjs/components/players/ImagePreview.d.ts +1 -1
  55. package/dist/cjs/components/players/ImageSequencePlayer.d.ts +1 -1
  56. package/dist/cjs/components/players/TemplatePlayer.d.ts +1 -1
  57. package/dist/cjs/components/players/VideoPlayer.d.ts +1 -1
  58. package/dist/cjs/components/players/VideoPreview.d.ts +1 -1
  59. package/dist/cjs/components/publish-wizard/PublishWizard.d.ts +3 -3
  60. package/dist/cjs/components/publish-wizard/PublishWizard.js +4 -1
  61. package/dist/cjs/components/publish-wizard/PublishWizard.js.map +1 -1
  62. package/dist/cjs/components/publish-wizard/publish/APIIntegration.d.ts +1 -1
  63. package/dist/cjs/components/publish-wizard/publish/HubSpotFlow.d.ts +1 -1
  64. package/dist/cjs/components/publish-wizard/publish/WebpageHosted.d.ts +2 -2
  65. package/dist/cjs/components/section/Section.d.ts +2 -1
  66. package/dist/cjs/components/section/Section.stories.d.ts +3 -2
  67. package/dist/cjs/components/select-field/SelectField.d.ts +1 -1
  68. package/dist/cjs/components/select-field/SelectField.stories.d.ts +2 -1
  69. package/dist/cjs/components/shortcut-menu/ShortcutMenu.stories.d.ts +2 -1
  70. package/dist/cjs/components/slider-field/SliderField.d.ts +1 -1
  71. package/dist/cjs/components/slider-field/SliderField.stories.d.ts +2 -1
  72. package/dist/cjs/components/smpte-field/SMPTEField.d.ts +1 -1
  73. package/dist/cjs/components/tabs/Tabs.stories.d.ts +3 -2
  74. package/dist/cjs/components/tag/Tag.d.ts +9 -1
  75. package/dist/cjs/components/text-area-autocomplete/TextAreaAutocomplete.d.ts +2 -1
  76. package/dist/cjs/components/text-area-field/TextAreaField.d.ts +1 -1
  77. package/dist/cjs/components/text-area-field/TextAreaField.stories.d.ts +2 -1
  78. package/dist/cjs/components/text-field/TextField.d.ts +1 -1
  79. package/dist/cjs/components/text-field/TextField.stories.d.ts +2 -1
  80. package/dist/cjs/constants/icons.d.ts +80 -79
  81. package/dist/esm/components/advanced-number-field/AdvancedNumberField.d.ts +1 -1
  82. package/dist/esm/components/anchor-field/AnchorField.d.ts +1 -1
  83. package/dist/esm/components/assets/AssetsTableDateCell.d.ts +6 -1
  84. package/dist/esm/components/assets/AssetsTableGlobalCell.d.ts +5 -1
  85. package/dist/esm/components/assets/AssetsTablePreviewCell.d.ts +17 -1
  86. package/dist/esm/components/assets/AssetsTableStatusCell.d.ts +5 -1
  87. package/dist/esm/components/assets/AssetsTableTagsCell.d.ts +6 -1
  88. package/dist/esm/components/assets/AssetsTableTypeCell.d.ts +5 -1
  89. package/dist/esm/components/assets/AssetsTypeIcon.d.ts +5 -1
  90. package/dist/esm/components/assets/FontAssetPreview.d.ts +1 -1
  91. package/dist/esm/components/assets/StoryTableTotalRendersCell.d.ts +2 -1
  92. package/dist/esm/components/button/Button.d.ts +1 -1
  93. package/dist/esm/components/button/Button.stories.d.ts +6 -5
  94. package/dist/esm/components/button-group-field/ButtonGroupField.d.ts +1 -1
  95. package/dist/esm/components/button-group-field/ButtonGroupField.stories.d.ts +2 -1
  96. package/dist/esm/components/button-menu/ButtonMenu.d.ts +2 -2
  97. package/dist/esm/components/button-menu/ButtonMenu.stories.d.ts +2 -1
  98. package/dist/esm/components/button-menu/ButtonMenuItem.d.ts +1 -1
  99. package/dist/esm/components/card/Card.d.ts +4 -4
  100. package/dist/esm/components/card/Card.stories.d.ts +2 -1
  101. package/dist/esm/components/checkbox-field/CheckboxField.d.ts +1 -1
  102. package/dist/esm/components/checkbox-field/CheckboxField.stories.d.ts +2 -1
  103. package/dist/esm/components/color-field/ColorField.d.ts +1 -1
  104. package/dist/esm/components/color-field/ColorFiled.stories.d.ts +2 -1
  105. package/dist/esm/components/compositions/TextLayer.d.ts +1 -1
  106. package/dist/esm/components/config-variable-button/ConfigVariableButton.d.ts +42 -1
  107. package/dist/esm/components/confirm-modal/ConfirmModal.d.ts +2 -1
  108. package/dist/esm/components/controlled-list/ControlledList.d.ts +2 -2
  109. package/dist/esm/components/controlled-list/ControlledList.stories.d.ts +2 -1
  110. package/dist/esm/components/copy-prop-id-button/CopyPropIdButton.d.ts +1 -1
  111. package/dist/esm/components/determinate-loader/DeterminateLoader.stories.d.ts +4 -3
  112. package/dist/esm/components/dropdown/Dropdown.d.ts +1 -1
  113. package/dist/esm/components/dropdown/Dropdown.stories.d.ts +1 -1
  114. package/dist/esm/components/field-wrapper/FieldWrapper.d.ts +2 -2
  115. package/dist/esm/components/field-wrapper/FieldWrapper.stories.d.ts +2 -1
  116. package/dist/esm/components/font-field/FontField.d.ts +2 -1
  117. package/dist/esm/components/font-picker/FontPicker.d.ts +1 -1
  118. package/dist/esm/components/h-rule/HRule.d.ts +2 -1
  119. package/dist/esm/components/h-rule/HRule.stories.d.ts +3 -2
  120. package/dist/esm/components/header/ProjectDropdown.d.ts +2 -1
  121. package/dist/esm/components/list-field/ListField.d.ts +1 -1
  122. package/dist/esm/components/list-field/ListField.stories.d.ts +2 -1
  123. package/dist/esm/components/log-viewer/LogViewer.d.ts +1 -1
  124. package/dist/esm/components/media-variable-field/MediaVariableField.d.ts +1 -1
  125. package/dist/esm/components/modal/Modal.d.ts +1 -1
  126. package/dist/esm/components/modal/Modal.stories.d.ts +2 -1
  127. package/dist/esm/components/number-field/NumberField.d.ts +3 -3
  128. package/dist/esm/components/number-field/NumberField.js +5 -4
  129. package/dist/esm/components/number-field/NumberField.js.map +1 -1
  130. package/dist/esm/components/number-field/NumberField.stories.d.ts +2 -1
  131. package/dist/esm/components/players/AudioPlayer.d.ts +1 -1
  132. package/dist/esm/components/players/AudioPreview.d.ts +1 -1
  133. package/dist/esm/components/players/ImagePlayer.d.ts +1 -1
  134. package/dist/esm/components/players/ImagePreview.d.ts +1 -1
  135. package/dist/esm/components/players/ImageSequencePlayer.d.ts +1 -1
  136. package/dist/esm/components/players/TemplatePlayer.d.ts +1 -1
  137. package/dist/esm/components/players/VideoPlayer.d.ts +1 -1
  138. package/dist/esm/components/players/VideoPreview.d.ts +1 -1
  139. package/dist/esm/components/publish-wizard/PublishWizard.d.ts +3 -3
  140. package/dist/esm/components/publish-wizard/PublishWizard.js +4 -1
  141. package/dist/esm/components/publish-wizard/PublishWizard.js.map +1 -1
  142. package/dist/esm/components/publish-wizard/publish/APIIntegration.d.ts +1 -1
  143. package/dist/esm/components/publish-wizard/publish/HubSpotFlow.d.ts +1 -1
  144. package/dist/esm/components/publish-wizard/publish/WebpageHosted.d.ts +2 -2
  145. package/dist/esm/components/section/Section.d.ts +2 -1
  146. package/dist/esm/components/section/Section.stories.d.ts +3 -2
  147. package/dist/esm/components/select-field/SelectField.d.ts +1 -1
  148. package/dist/esm/components/select-field/SelectField.stories.d.ts +2 -1
  149. package/dist/esm/components/shortcut-menu/ShortcutMenu.stories.d.ts +2 -1
  150. package/dist/esm/components/slider-field/SliderField.d.ts +1 -1
  151. package/dist/esm/components/slider-field/SliderField.stories.d.ts +2 -1
  152. package/dist/esm/components/smpte-field/SMPTEField.d.ts +1 -1
  153. package/dist/esm/components/tabs/Tabs.stories.d.ts +3 -2
  154. package/dist/esm/components/tag/Tag.d.ts +9 -1
  155. package/dist/esm/components/text-area-autocomplete/TextAreaAutocomplete.d.ts +2 -1
  156. package/dist/esm/components/text-area-field/TextAreaField.d.ts +1 -1
  157. package/dist/esm/components/text-area-field/TextAreaField.stories.d.ts +2 -1
  158. package/dist/esm/components/text-field/TextField.d.ts +1 -1
  159. package/dist/esm/components/text-field/TextField.stories.d.ts +2 -1
  160. package/dist/esm/constants/icons.d.ts +80 -79
  161. package/package.json +1 -1
  162. package/src/components/advanced-number-field/AdvancedNumberField.test.tsx +35 -15
  163. package/src/components/asset-details/AssetDetails.test.tsx +4 -4
  164. package/src/components/assets/AssetField.test.tsx +22 -12
  165. package/src/components/assets/AssetsTableAssetIdCell.test.tsx +18 -10
  166. package/src/components/assets/AssetsTableAssetIdFilter.test.tsx +2 -2
  167. package/src/components/assets/AssetsTableComplexTagCell.test.tsx +4 -2
  168. package/src/components/assets/AssetsTableDropzone.test.tsx +132 -0
  169. package/src/components/assets/AssetsTableDurationCell.test.tsx +119 -0
  170. package/src/components/assets/AssetsTableGlobalCell.test.tsx +46 -0
  171. package/src/components/assets/AssetsTableNameCell.test.tsx +166 -0
  172. package/{dist/esm/components/assets/AssetsTableAssetIdFilter.test.js → src/components/assets/AssetsTableNameFilter.test.tsx} +52 -20
  173. package/src/components/assets/AssetsTablePreviewCell.test.tsx +191 -0
  174. package/src/components/assets/AssetsTableRateCell.test.tsx +87 -0
  175. package/src/components/assets/AssetsTableSelectCell.test.tsx +156 -0
  176. package/src/components/assets/AssetsTableSelectFilter.test.tsx +119 -0
  177. package/src/components/assets/AssetsTableStatusCell.test.tsx +60 -0
  178. package/src/components/publish-wizard/PublishWizard.tsx +7 -1
  179. package/dist/cjs/components/advanced-number-field/AdvancedNumberField.test.d.ts +0 -1
  180. package/dist/cjs/components/advanced-number-field/AdvancedNumberField.test.js +0 -377
  181. package/dist/cjs/components/advanced-number-field/AdvancedNumberField.test.js.map +0 -1
  182. package/dist/cjs/components/anchor-field/AnchorField.test.d.ts +0 -1
  183. package/dist/cjs/components/anchor-field/AnchorField.test.js +0 -87
  184. package/dist/cjs/components/anchor-field/AnchorField.test.js.map +0 -1
  185. package/dist/cjs/components/asset-details/AssetDetails.test.d.ts +0 -1
  186. package/dist/cjs/components/asset-details/AssetDetails.test.js +0 -439
  187. package/dist/cjs/components/asset-details/AssetDetails.test.js.map +0 -1
  188. package/dist/cjs/components/assets/AssetField.test.d.ts +0 -1
  189. package/dist/cjs/components/assets/AssetField.test.js +0 -464
  190. package/dist/cjs/components/assets/AssetField.test.js.map +0 -1
  191. package/dist/cjs/components/assets/AssetsTableAssetIdCell.test.d.ts +0 -1
  192. package/dist/cjs/components/assets/AssetsTableAssetIdCell.test.js +0 -190
  193. package/dist/cjs/components/assets/AssetsTableAssetIdCell.test.js.map +0 -1
  194. package/dist/cjs/components/assets/AssetsTableAssetIdFilter.test.d.ts +0 -1
  195. package/dist/cjs/components/assets/AssetsTableAssetIdFilter.test.js +0 -82
  196. package/dist/cjs/components/assets/AssetsTableAssetIdFilter.test.js.map +0 -1
  197. package/dist/cjs/components/assets/AssetsTableComplexTagCell.test.d.ts +0 -1
  198. package/dist/cjs/components/assets/AssetsTableComplexTagCell.test.js +0 -125
  199. package/dist/cjs/components/assets/AssetsTableComplexTagCell.test.js.map +0 -1
  200. package/dist/cjs/components/assets/AssetsTableDateCell.test.d.ts +0 -1
  201. package/dist/cjs/components/assets/AssetsTableDateCell.test.js +0 -116
  202. package/dist/cjs/components/assets/AssetsTableDateCell.test.js.map +0 -1
  203. package/dist/cjs/components/number-field/NumberField.test.d.ts +0 -1
  204. package/dist/cjs/components/number-field/NumberField.test.js +0 -241
  205. package/dist/cjs/components/number-field/NumberField.test.js.map +0 -1
  206. package/dist/cjs/components/text-field/TextField.test.d.ts +0 -1
  207. package/dist/cjs/components/text-field/TextField.test.js +0 -540
  208. package/dist/cjs/components/text-field/TextField.test.js.map +0 -1
  209. package/dist/cjs/test/setup.d.ts +0 -1
  210. package/dist/cjs/test/setup.js +0 -97
  211. package/dist/cjs/test/setup.js.map +0 -1
  212. package/dist/cjs/test/utils.d.ts +0 -26
  213. package/dist/cjs/test/utils.js +0 -44
  214. package/dist/cjs/test/utils.js.map +0 -1
  215. package/dist/esm/components/advanced-number-field/AdvancedNumberField.test.d.ts +0 -1
  216. package/dist/esm/components/advanced-number-field/AdvancedNumberField.test.js +0 -361
  217. package/dist/esm/components/advanced-number-field/AdvancedNumberField.test.js.map +0 -1
  218. package/dist/esm/components/anchor-field/AnchorField.test.d.ts +0 -1
  219. package/dist/esm/components/anchor-field/AnchorField.test.js +0 -81
  220. package/dist/esm/components/anchor-field/AnchorField.test.js.map +0 -1
  221. package/dist/esm/components/asset-details/AssetDetails.test.d.ts +0 -1
  222. package/dist/esm/components/asset-details/AssetDetails.test.js +0 -367
  223. package/dist/esm/components/asset-details/AssetDetails.test.js.map +0 -1
  224. package/dist/esm/components/assets/AssetField.test.d.ts +0 -1
  225. package/dist/esm/components/assets/AssetField.test.js +0 -311
  226. package/dist/esm/components/assets/AssetField.test.js.map +0 -1
  227. package/dist/esm/components/assets/AssetsTableAssetIdCell.test.d.ts +0 -1
  228. package/dist/esm/components/assets/AssetsTableAssetIdCell.test.js +0 -105
  229. package/dist/esm/components/assets/AssetsTableAssetIdCell.test.js.map +0 -1
  230. package/dist/esm/components/assets/AssetsTableAssetIdFilter.test.d.ts +0 -1
  231. package/dist/esm/components/assets/AssetsTableAssetIdFilter.test.js.map +0 -1
  232. package/dist/esm/components/assets/AssetsTableComplexTagCell.test.d.ts +0 -1
  233. package/dist/esm/components/assets/AssetsTableComplexTagCell.test.js +0 -100
  234. package/dist/esm/components/assets/AssetsTableComplexTagCell.test.js.map +0 -1
  235. package/dist/esm/components/assets/AssetsTableDateCell.test.d.ts +0 -1
  236. package/dist/esm/components/assets/AssetsTableDateCell.test.js +0 -60
  237. package/dist/esm/components/assets/AssetsTableDateCell.test.js.map +0 -1
  238. package/dist/esm/components/number-field/NumberField.test.d.ts +0 -1
  239. package/dist/esm/components/number-field/NumberField.test.js +0 -192
  240. package/dist/esm/components/number-field/NumberField.test.js.map +0 -1
  241. package/dist/esm/components/text-field/TextField.test.d.ts +0 -1
  242. package/dist/esm/components/text-field/TextField.test.js +0 -469
  243. package/dist/esm/components/text-field/TextField.test.js.map +0 -1
  244. package/dist/esm/test/setup.d.ts +0 -1
  245. package/dist/esm/test/setup.js +0 -70
  246. package/dist/esm/test/setup.js.map +0 -1
  247. package/dist/esm/test/utils.d.ts +0 -26
  248. package/dist/esm/test/utils.js +0 -27
  249. package/dist/esm/test/utils.js.map +0 -1
@@ -1,311 +0,0 @@
1
- import { describe, it, expect, vi, beforeEach, afterEach } from 'vitest';
2
- import React from 'react';
3
- import { render, act } from '@testing-library/react';
4
- import { Provider } from 'react-redux';
5
- import { legacy_createStore as createStore } from 'redux';
6
- import { ASSET_TYPES } from '../../constants/assets';
7
- vi.mock('../../Util', async (importOriginal) => {
8
- const actual = (await importOriginal());
9
- return {
10
- ...actual,
11
- mimetypeConformsToOverlay: vi.fn(() => true)
12
- };
13
- });
14
- vi.mock('../text-field/TextField', () => ({
15
- default: ({ value, label, readOnly, placeholder, loading, buttons, ...props }) => (React.createElement("div", { "data-testid": `textfield-${label || 'unlabeled'}` },
16
- React.createElement("label", null, label),
17
- React.createElement("input", { value: value || '', readOnly: readOnly, placeholder: placeholder || '' }),
18
- loading && React.createElement("span", { "data-testid": 'loading-indicator' }, "Loading..."),
19
- buttons && React.createElement("div", { "data-testid": 'buttons-container' }, buttons)))
20
- }));
21
- vi.mock('../button/Button', () => ({
22
- default: ({ children, onClick, tooltip, ...props }) => (React.createElement("button", { "data-testid": `btn-${tooltip || 'unknown'}`, onClick: onClick }, children))
23
- }));
24
- vi.mock('./AssetsTableDropzone', () => ({
25
- default: ({ children, onDrop, disable }) => (React.createElement("div", { "data-testid": 'dropzone', "data-disabled": disable }, children))
26
- }));
27
- vi.mock('./DroppableAssetRenderer', () => ({
28
- default: ({ children, onDrop }) => React.createElement("div", { "data-testid": 'droppable-renderer' }, children)
29
- }));
30
- vi.mock('../../constants/icons', () => ({
31
- ICON_FILTER: '<svg data-testid="icon-filter" />',
32
- ICON_TIMES: '<svg data-testid="icon-times" />'
33
- }));
34
- vi.mock('../../redux/actions/asset-filters', () => ({
35
- updateFilters: vi.fn((filters) => ({ type: 'UPDATE_FILTERS', payload: filters }))
36
- }));
37
- vi.mock('../../redux/actions/asset-uploads', () => ({
38
- uploadAssets: vi.fn(() => ({ type: 'UPLOAD_ASSETS' }))
39
- }));
40
- const createMockStore = (overrides = {}) => {
41
- const defaultState = {
42
- assetList: {
43
- loading: false,
44
- page: 1,
45
- total_pages: 1,
46
- asset_count: 0,
47
- assets: []
48
- },
49
- ...overrides
50
- };
51
- return createStore((state = defaultState) => state);
52
- };
53
- const createMockApi = (assetResponse = { name: 'test-asset.png' }, shouldReject = false) => ({
54
- getAssetItem: vi.fn(() => shouldReject ? Promise.reject(new Error('Not found')) : Promise.resolve(assetResponse))
55
- });
56
- describe('AssetField', () => {
57
- let AssetFieldConnected;
58
- beforeEach(async () => {
59
- vi.clearAllMocks();
60
- vi.useFakeTimers();
61
- const module = await import('./AssetField');
62
- AssetFieldConnected = module.default;
63
- });
64
- afterEach(() => {
65
- vi.useRealTimers();
66
- });
67
- const defaultProps = {
68
- api: createMockApi(),
69
- storyId: 'story-123',
70
- assetId: 'asset-456',
71
- label: 'Background',
72
- width: 300,
73
- tooltip: 'Select an asset',
74
- onChange: vi.fn(),
75
- accepts: ASSET_TYPES.IMAGE
76
- };
77
- const renderWithStore = (props = {}, storeOverrides = {}) => {
78
- const store = createMockStore(storeOverrides);
79
- return render(React.createElement(Provider, { store: store },
80
- React.createElement(AssetFieldConnected, { ...defaultProps, ...props })));
81
- };
82
- it('renders with all wrapper components', () => {
83
- const { container } = renderWithStore();
84
- expect(container.querySelector('[data-testid="dropzone"]')).toBeTruthy();
85
- expect(container.querySelector('[data-testid="droppable-renderer"]')).toBeTruthy();
86
- expect(container.querySelector('[data-testid="textfield-Background"]')).toBeTruthy();
87
- });
88
- it('applies width style and error class', () => {
89
- const { container } = renderWithStore({ width: 500 });
90
- const assetFieldDiv = container.querySelector('.asset-field');
91
- expect(assetFieldDiv.style.width).toBe('500px');
92
- expect(assetFieldDiv.classList.contains('error')).toBe(false);
93
- });
94
- it('defaults to 100% width when no width prop is provided', () => {
95
- const { container } = renderWithStore({ width: undefined });
96
- const assetFieldDiv = container.querySelector('.asset-field');
97
- expect(assetFieldDiv.style.width).toBe('100%');
98
- });
99
- it('shows drag prompt placeholder when no assetId', () => {
100
- const { container } = renderWithStore({ assetId: null });
101
- const input = container.querySelector('input');
102
- expect(input.placeholder).toBe('Drag Asset Here');
103
- });
104
- it('calls api.getAssetItem on mount when assetId is present', () => {
105
- const mockApi = createMockApi();
106
- renderWithStore({ api: mockApi });
107
- expect(mockApi.getAssetItem).toHaveBeenCalledWith('asset-456');
108
- });
109
- it('does not call api.getAssetItem on mount when assetId is absent', () => {
110
- const mockApi = createMockApi();
111
- renderWithStore({ api: mockApi, assetId: null });
112
- expect(mockApi.getAssetItem).not.toHaveBeenCalled();
113
- });
114
- it('displays asset name after successful API load', async () => {
115
- const mockApi = createMockApi({ name: 'my-video.mp4' });
116
- const { container } = renderWithStore({ api: mockApi });
117
- await vi.waitFor(() => {
118
- const input = container.querySelector('input');
119
- expect(input.value).toBe('my-video.mp4');
120
- });
121
- });
122
- it('displays error message after failed API load', async () => {
123
- const mockApi = createMockApi(null, true);
124
- const { container } = renderWithStore({ api: mockApi });
125
- await vi.waitFor(() => {
126
- const input = container.querySelector('input');
127
- expect(input.value).toContain('Could not find asset');
128
- });
129
- });
130
- it('shows filter buttons when accepts is a string and assetName is set', async () => {
131
- const mockApi = createMockApi({ name: 'loaded-asset.png' });
132
- const { container } = renderWithStore({ api: mockApi, accepts: 'image' });
133
- await vi.waitFor(() => {
134
- const buttonsContainer = container.querySelector('[data-testid="buttons-container"]');
135
- expect(buttonsContainer).toBeTruthy();
136
- const filterTypeBtn = container.querySelector('[data-testid="btn-Filter assets to match Asset type"]');
137
- expect(filterTypeBtn).toBeTruthy();
138
- const filterNameBtn = container.querySelector('[data-testid="btn-Filter assets to the selected Asset"]');
139
- expect(filterNameBtn).toBeTruthy();
140
- });
141
- });
142
- it('shows clear button when assetId is present', () => {
143
- const { container } = renderWithStore();
144
- const clearBtn = container.querySelector('[data-testid="btn-Clear the selected Asset"]');
145
- expect(clearBtn).toBeTruthy();
146
- });
147
- it('does not show filter buttons when accepts is an array', async () => {
148
- const mockApi = createMockApi({ name: 'loaded.png' });
149
- const { container } = renderWithStore({ api: mockApi, accepts: ['image', 'video'] });
150
- await vi.waitFor(() => {
151
- const filterTypeBtn = container.querySelector('[data-testid="btn-Filter assets to match Asset type"]');
152
- expect(filterTypeBtn).toBeFalsy();
153
- });
154
- });
155
- it('reloads asset when assetList changes via dispatch', () => {
156
- const mockApi = createMockApi({ name: 'initial.png' });
157
- const reducer = (state = {
158
- assetList: { loading: false, page: 1, total_pages: 1, asset_count: 0, assets: [] }
159
- }, action) => {
160
- if (action.type === 'UPDATE_ASSET_LIST') {
161
- return { ...state, assetList: action.payload };
162
- }
163
- return state;
164
- };
165
- const store = createStore(reducer);
166
- render(React.createElement(Provider, { store: store },
167
- React.createElement(AssetFieldConnected, { ...defaultProps, api: mockApi })));
168
- mockApi.getAssetItem.mockClear();
169
- act(() => {
170
- store.dispatch({
171
- type: 'UPDATE_ASSET_LIST',
172
- payload: {
173
- loading: false,
174
- page: 2,
175
- total_pages: 2,
176
- asset_count: 10,
177
- assets: [{ id: '1' }]
178
- }
179
- });
180
- });
181
- act(() => {
182
- vi.advanceTimersByTime(350);
183
- });
184
- expect(mockApi.getAssetItem).toHaveBeenCalled();
185
- });
186
- it('clears timeout on unmount', () => {
187
- const clearTimeoutSpy = vi.spyOn(global, 'clearTimeout');
188
- const { unmount } = renderWithStore();
189
- unmount();
190
- expect(clearTimeoutSpy).toHaveBeenCalled();
191
- clearTimeoutSpy.mockRestore();
192
- });
193
- it('exercises setFilter with string accepts', () => {
194
- const { container } = renderWithStore({ accepts: 'image' });
195
- const filterBtn = container.querySelector('[data-testid="btn-Filter assets to match Asset type"]');
196
- expect(filterBtn).toBeTruthy();
197
- filterBtn?.click();
198
- });
199
- it('exercises setFilter with no accepts', () => {
200
- const { container } = renderWithStore({ accepts: undefined });
201
- const filterBtn = container.querySelector('[data-testid="btn-Filter assets to match Asset type"]');
202
- expect(filterBtn).toBeFalsy();
203
- });
204
- it('exercises clearAsset button', async () => {
205
- const onChangeMock = vi.fn();
206
- const { container } = renderWithStore({ onChange: onChangeMock });
207
- const clearBtn = container.querySelector('[data-testid="btn-Clear the selected Asset"]');
208
- expect(clearBtn).toBeTruthy();
209
- clearBtn?.click();
210
- await vi.waitFor(() => {
211
- expect(onChangeMock).toHaveBeenCalledWith(null);
212
- });
213
- });
214
- it('exercises setFilterToAsset button', async () => {
215
- const mockApi = createMockApi({ name: 'my-asset.png' });
216
- const { container } = renderWithStore({ api: mockApi, accepts: 'image' });
217
- await vi.waitFor(() => {
218
- const filterNameBtn = container.querySelector('[data-testid="btn-Filter assets to the selected Asset"]');
219
- expect(filterNameBtn).toBeTruthy();
220
- filterNameBtn?.click();
221
- });
222
- });
223
- it('exercises onAssetDrop with matching type', () => {
224
- const onChangeMock = vi.fn();
225
- const WrappedComponent = AssetFieldConnected.WrappedComponent;
226
- const instance = new WrappedComponent({
227
- ...defaultProps,
228
- onChange: onChangeMock,
229
- accepts: 'image',
230
- updateFilters: vi.fn(),
231
- uploadAssets: vi.fn(),
232
- assetList: { loading: false, page: 1, total_pages: 1, asset_count: 0, assets: [] }
233
- });
234
- instance.setState = vi.fn((stateOrFn, callback) => {
235
- if (typeof stateOrFn === 'object') {
236
- instance.state = { ...instance.state, ...stateOrFn };
237
- }
238
- if (callback)
239
- callback();
240
- });
241
- instance.onAssetDrop({ rowData: { name: 'dropped.png', type: 'image', id: 'asset-789' } }, null);
242
- expect(instance.setState).toHaveBeenCalled();
243
- expect(onChangeMock).toHaveBeenCalledWith({
244
- name: 'dropped.png',
245
- type: 'image',
246
- id: 'asset-789'
247
- });
248
- });
249
- it('exercises onAssetDrop with mismatched type and onError', () => {
250
- const onErrorMock = vi.fn();
251
- const WrappedComponent = AssetFieldConnected.WrappedComponent;
252
- const instance = new WrappedComponent({
253
- ...defaultProps,
254
- onError: onErrorMock,
255
- accepts: 'image',
256
- updateFilters: vi.fn(),
257
- uploadAssets: vi.fn(),
258
- assetList: { loading: false, page: 1, total_pages: 1, asset_count: 0, assets: [] }
259
- });
260
- instance.setState = vi.fn();
261
- instance.onAssetDrop({ rowData: { name: 'dropped.mp4', type: 'video', id: 'asset-999' } }, null);
262
- expect(onErrorMock).toHaveBeenCalled();
263
- });
264
- it('exercises onAssetDrop with array accepts and mismatched type', () => {
265
- const onErrorMock = vi.fn();
266
- const WrappedComponent = AssetFieldConnected.WrappedComponent;
267
- const instance = new WrappedComponent({
268
- ...defaultProps,
269
- onError: onErrorMock,
270
- accepts: ['image', 'audio'],
271
- updateFilters: vi.fn(),
272
- uploadAssets: vi.fn(),
273
- assetList: { loading: false, page: 1, total_pages: 1, asset_count: 0, assets: [] }
274
- });
275
- instance.setState = vi.fn();
276
- instance.onAssetDrop({ rowData: { name: 'dropped.mp4', type: 'video', id: 'asset-999' } }, null);
277
- expect(onErrorMock).toHaveBeenCalledWith(expect.stringContaining('image or audio'));
278
- });
279
- it('exercises onFileDrop with monitor', () => {
280
- const WrappedComponent = AssetFieldConnected.WrappedComponent;
281
- const uploadAssetsMock = vi.fn();
282
- const instance = new WrappedComponent({
283
- ...defaultProps,
284
- accepts: 'image',
285
- updateFilters: vi.fn(),
286
- uploadAssets: uploadAssetsMock,
287
- assetList: { loading: false, page: 1, total_pages: 1, asset_count: 0, assets: [] }
288
- });
289
- instance.setState = vi.fn();
290
- const mockMonitor = {
291
- getItem: () => ({
292
- files: [new File(['content'], 'test.png', { type: 'image/png' })]
293
- })
294
- };
295
- instance.onFileDrop(null, mockMonitor);
296
- expect(uploadAssetsMock).toHaveBeenCalled();
297
- });
298
- it('exercises onFileDrop without monitor', () => {
299
- const WrappedComponent = AssetFieldConnected.WrappedComponent;
300
- const instance = new WrappedComponent({
301
- ...defaultProps,
302
- updateFilters: vi.fn(),
303
- uploadAssets: vi.fn(),
304
- assetList: { loading: false, page: 1, total_pages: 1, asset_count: 0, assets: [] }
305
- });
306
- instance.setState = vi.fn();
307
- instance.onFileDrop(null, null);
308
- expect(instance.setState).not.toHaveBeenCalled();
309
- });
310
- });
311
- //# sourceMappingURL=AssetField.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"AssetField.test.js","sourceRoot":"","sources":["../../../../src/components/assets/AssetField.test.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AACzE,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,kBAAkB,IAAI,WAAW,EAAE,MAAM,OAAO,CAAC;AAE1D,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAErD,EAAE,CAAC,IAAI,CAAC,YAAY,EAAE,KAAK,EAAE,cAAc,EAAE,EAAE;IAC3C,MAAM,MAAM,GAAG,CAAC,MAAM,cAAc,EAAE,CAAQ,CAAC;IAC/C,OAAO;QACH,GAAG,MAAM;QACT,yBAAyB,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC;KAC/C,CAAC;AACN,CAAC,CAAC,CAAC;AAEH,EAAE,CAAC,IAAI,CAAC,yBAAyB,EAAE,GAAG,EAAE,CAAC,CAAC;IACtC,OAAO,EAAE,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,WAAW,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,KAAK,EAAO,EAAE,EAAE,CAAC,CACnF,4CAAkB,aAAa,KAAK,IAAI,WAAW,EAAE;QACjD,mCAAQ,KAAK,CAAS;QACtB,+BACI,KAAK,EAAE,KAAK,IAAI,EAAE,EAClB,QAAQ,EAAE,QAAQ,EAClB,WAAW,EAAE,WAAW,IAAI,EAAE,GAChC;QACD,OAAO,IAAI,6CAAkB,mBAAmB,iBAAkB;QAClE,OAAO,IAAI,4CAAiB,mBAAmB,IAAE,OAAO,CAAO,CAC9D,CACT;CACJ,CAAC,CAAC,CAAC;AAEJ,EAAE,CAAC,IAAI,CAAC,kBAAkB,EAAE,GAAG,EAAE,CAAC,CAAC;IAC/B,OAAO,EAAE,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,KAAK,EAAO,EAAE,EAAE,CAAC,CACxD,+CACiB,OAAO,OAAO,IAAI,SAAS,EAAE,EAC1C,OAAO,EAAE,OAAO,IACf,QAAQ,CACJ,CACZ;CACJ,CAAC,CAAC,CAAC;AAEJ,EAAE,CAAC,IAAI,CAAC,uBAAuB,EAAE,GAAG,EAAE,CAAC,CAAC;IACpC,OAAO,EAAE,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAO,EAAE,EAAE,CAAC,CAC7C,4CACgB,UAAU,mBACP,OAAO,IACrB,QAAQ,CACP,CACT;CACJ,CAAC,CAAC,CAAC;AAEJ,EAAE,CAAC,IAAI,CAAC,0BAA0B,EAAE,GAAG,EAAE,CAAC,CAAC;IACvC,OAAO,EAAE,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAO,EAAE,EAAE,CAAC,4CAAiB,oBAAoB,IAAE,QAAQ,CAAO;CACjG,CAAC,CAAC,CAAC;AAEJ,EAAE,CAAC,IAAI,CAAC,uBAAuB,EAAE,GAAG,EAAE,CAAC,CAAC;IACpC,WAAW,EAAE,mCAAmC;IAChD,UAAU,EAAE,kCAAkC;CACjD,CAAC,CAAC,CAAC;AAEJ,EAAE,CAAC,IAAI,CAAC,mCAAmC,EAAE,GAAG,EAAE,CAAC,CAAC;IAChD,aAAa,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;CACpF,CAAC,CAAC,CAAC;AAEJ,EAAE,CAAC,IAAI,CAAC,mCAAmC,EAAE,GAAG,EAAE,CAAC,CAAC;IAChD,YAAY,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,eAAe,EAAE,CAAC,CAAC;CACzD,CAAC,CAAC,CAAC;AAEJ,MAAM,eAAe,GAAG,CAAC,SAAS,GAAG,EAAE,EAAE,EAAE;IACvC,MAAM,YAAY,GAAG;QACjB,SAAS,EAAE;YACP,OAAO,EAAE,KAAK;YACd,IAAI,EAAE,CAAC;YACP,WAAW,EAAE,CAAC;YACd,WAAW,EAAE,CAAC;YACd,MAAM,EAAE,EAAE;SACb;QACD,GAAG,SAAS;KACf,CAAC;IACF,OAAO,WAAW,CAAC,CAAC,KAAK,GAAG,YAAY,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC;AACxD,CAAC,CAAC;AAEF,MAAM,aAAa,GAAG,CAAC,aAAa,GAAG,EAAE,IAAI,EAAE,gBAAgB,EAAE,EAAE,YAAY,GAAG,KAAK,EAAE,EAAE,CAAC,CAAC;IACzF,YAAY,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,EAAE,CACrB,YAAY,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC,CACzF;CACJ,CAAC,CAAC;AAEH,QAAQ,CAAC,YAAY,EAAE,GAAG,EAAE;IACxB,IAAI,mBAAwB,CAAC;IAE7B,UAAU,CAAC,KAAK,IAAI,EAAE;QAClB,EAAE,CAAC,aAAa,EAAE,CAAC;QACnB,EAAE,CAAC,aAAa,EAAE,CAAC;QACnB,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,cAAc,CAAC,CAAC;QAC5C,mBAAmB,GAAG,MAAM,CAAC,OAAO,CAAC;IACzC,CAAC,CAAC,CAAC;IAEH,SAAS,CAAC,GAAG,EAAE;QACX,EAAE,CAAC,aAAa,EAAE,CAAC;IACvB,CAAC,CAAC,CAAC;IAEH,MAAM,YAAY,GAAG;QACjB,GAAG,EAAE,aAAa,EAAE;QACpB,OAAO,EAAE,WAAW;QACpB,OAAO,EAAE,WAAW;QACpB,KAAK,EAAE,YAAY;QACnB,KAAK,EAAE,GAAG;QACV,OAAO,EAAE,iBAAiB;QAC1B,QAAQ,EAAE,EAAE,CAAC,EAAE,EAAE;QACjB,OAAO,EAAE,WAAW,CAAC,KAAK;KAC7B,CAAC;IAEF,MAAM,eAAe,GAAG,CAAC,KAAK,GAAG,EAAE,EAAE,cAAc,GAAG,EAAE,EAAE,EAAE;QACxD,MAAM,KAAK,GAAG,eAAe,CAAC,cAAc,CAAC,CAAC;QAC9C,OAAO,MAAM,CACT,oBAAC,QAAQ,IAAC,KAAK,EAAE,KAAK;YAClB,oBAAC,mBAAmB,OACZ,YAAY,KACZ,KAAK,GACX,CACK,CACd,CAAC;IACN,CAAC,CAAC;IAEF,EAAE,CAAC,qCAAqC,EAAE,GAAG,EAAE;QAC3C,MAAM,EAAE,SAAS,EAAE,GAAG,eAAe,EAAE,CAAC;QAExC,MAAM,CAAC,SAAS,CAAC,aAAa,CAAC,0BAA0B,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC;QACzE,MAAM,CAAC,SAAS,CAAC,aAAa,CAAC,oCAAoC,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC;QACnF,MAAM,CAAC,SAAS,CAAC,aAAa,CAAC,sCAAsC,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC;IACzF,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,qCAAqC,EAAE,GAAG,EAAE;QAC3C,MAAM,EAAE,SAAS,EAAE,GAAG,eAAe,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC;QACtD,MAAM,aAAa,GAAgB,SAAS,CAAC,aAAa,CAAC,cAAc,CAAC,CAAC;QAC3E,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAChD,MAAM,CAAC,aAAa,CAAC,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAClE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,uDAAuD,EAAE,GAAG,EAAE;QAC7D,MAAM,EAAE,SAAS,EAAE,GAAG,eAAe,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;QAC5D,MAAM,aAAa,GAAgB,SAAS,CAAC,aAAa,CAAC,cAAc,CAAC,CAAC;QAC3E,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACnD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,+CAA+C,EAAE,GAAG,EAAE;QACrD,MAAM,EAAE,SAAS,EAAE,GAAG,eAAe,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;QACzD,MAAM,KAAK,GAAG,SAAS,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;QAC/C,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;IACtD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,yDAAyD,EAAE,GAAG,EAAE;QAC/D,MAAM,OAAO,GAAG,aAAa,EAAE,CAAC;QAChC,eAAe,CAAC,EAAE,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC;QAClC,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,oBAAoB,CAAC,WAAW,CAAC,CAAC;IACnE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,gEAAgE,EAAE,GAAG,EAAE;QACtE,MAAM,OAAO,GAAG,aAAa,EAAE,CAAC;QAChC,eAAe,CAAC,EAAE,GAAG,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;QACjD,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;IACxD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,+CAA+C,EAAE,KAAK,IAAI,EAAE;QAC3D,MAAM,OAAO,GAAG,aAAa,CAAC,EAAE,IAAI,EAAE,cAAc,EAAE,CAAC,CAAC;QACxD,MAAM,EAAE,SAAS,EAAE,GAAG,eAAe,CAAC,EAAE,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC;QAExD,MAAM,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE;YAClB,MAAM,KAAK,GAAG,SAAS,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;YAC/C,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QAC7C,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,8CAA8C,EAAE,KAAK,IAAI,EAAE;QAC1D,MAAM,OAAO,GAAG,aAAa,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAC1C,MAAM,EAAE,SAAS,EAAE,GAAG,eAAe,CAAC,EAAE,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC;QAExD,MAAM,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE;YAClB,MAAM,KAAK,GAAG,SAAS,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;YAC/C,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,sBAAsB,CAAC,CAAC;QAC1D,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,oEAAoE,EAAE,KAAK,IAAI,EAAE;QAChF,MAAM,OAAO,GAAG,aAAa,CAAC,EAAE,IAAI,EAAE,kBAAkB,EAAE,CAAC,CAAC;QAC5D,MAAM,EAAE,SAAS,EAAE,GAAG,eAAe,CAAC,EAAE,GAAG,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;QAE1E,MAAM,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE;YAClB,MAAM,gBAAgB,GAAG,SAAS,CAAC,aAAa,CAAC,mCAAmC,CAAC,CAAC;YACtF,MAAM,CAAC,gBAAgB,CAAC,CAAC,UAAU,EAAE,CAAC;YAEtC,MAAM,aAAa,GAAG,SAAS,CAAC,aAAa,CACzC,uDAAuD,CAC1D,CAAC;YACF,MAAM,CAAC,aAAa,CAAC,CAAC,UAAU,EAAE,CAAC;YAEnC,MAAM,aAAa,GAAG,SAAS,CAAC,aAAa,CACzC,yDAAyD,CAC5D,CAAC;YACF,MAAM,CAAC,aAAa,CAAC,CAAC,UAAU,EAAE,CAAC;QACvC,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,4CAA4C,EAAE,GAAG,EAAE;QAClD,MAAM,EAAE,SAAS,EAAE,GAAG,eAAe,EAAE,CAAC;QAExC,MAAM,QAAQ,GAAG,SAAS,CAAC,aAAa,CAAC,8CAA8C,CAAC,CAAC;QACzF,MAAM,CAAC,QAAQ,CAAC,CAAC,UAAU,EAAE,CAAC;IAClC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,uDAAuD,EAAE,KAAK,IAAI,EAAE;QACnE,MAAM,OAAO,GAAG,aAAa,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC;QACtD,MAAM,EAAE,SAAS,EAAE,GAAG,eAAe,CAAC,EAAE,GAAG,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC;QAErF,MAAM,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE;YAClB,MAAM,aAAa,GAAG,SAAS,CAAC,aAAa,CACzC,uDAAuD,CAC1D,CAAC;YACF,MAAM,CAAC,aAAa,CAAC,CAAC,SAAS,EAAE,CAAC;QACtC,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,mDAAmD,EAAE,GAAG,EAAE;QACzD,MAAM,OAAO,GAAG,aAAa,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,CAAC,CAAC;QACvD,MAAM,OAAO,GAAG,CACZ,QAAa;YACT,SAAS,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE;SACrF,EACD,MAAW,EACb,EAAE;YACA,IAAI,MAAM,CAAC,IAAI,KAAK,mBAAmB,EAAE,CAAC;gBACtC,OAAO,EAAE,GAAG,KAAK,EAAE,SAAS,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC;YACnD,CAAC;YACD,OAAO,KAAK,CAAC;QACjB,CAAC,CAAC;QACF,MAAM,KAAK,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC;QAEnC,MAAM,CACF,oBAAC,QAAQ,IAAC,KAAK,EAAE,KAAK;YAClB,oBAAC,mBAAmB,OACZ,YAAY,EAChB,GAAG,EAAE,OAAO,GACd,CACK,CACd,CAAC;QAEF,OAAO,CAAC,YAAY,CAAC,SAAS,EAAE,CAAC;QAEjC,GAAG,CAAC,GAAG,EAAE;YACL,KAAK,CAAC,QAAQ,CAAC;gBACX,IAAI,EAAE,mBAAmB;gBACzB,OAAO,EAAE;oBACL,OAAO,EAAE,KAAK;oBACd,IAAI,EAAE,CAAC;oBACP,WAAW,EAAE,CAAC;oBACd,WAAW,EAAE,EAAE;oBACf,MAAM,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC;iBACxB;aACJ,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;QAEH,GAAG,CAAC,GAAG,EAAE;YACL,EAAE,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC;QAChC,CAAC,CAAC,CAAC;QAEH,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,gBAAgB,EAAE,CAAC;IACpD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,2BAA2B,EAAE,GAAG,EAAE;QACjC,MAAM,eAAe,GAAG,EAAE,CAAC,KAAK,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;QACzD,MAAM,EAAE,OAAO,EAAE,GAAG,eAAe,EAAE,CAAC;QACtC,OAAO,EAAE,CAAC;QACV,MAAM,CAAC,eAAe,CAAC,CAAC,gBAAgB,EAAE,CAAC;QAC3C,eAAe,CAAC,WAAW,EAAE,CAAC;IAClC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,yCAAyC,EAAE,GAAG,EAAE;QAC/C,MAAM,EAAE,SAAS,EAAE,GAAG,eAAe,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;QAC5D,MAAM,SAAS,GAAgB,SAAS,CAAC,aAAa,CAClD,uDAAuD,CAC1D,CAAC;QACF,MAAM,CAAC,SAAS,CAAC,CAAC,UAAU,EAAE,CAAC;QAC/B,SAAS,EAAE,KAAK,EAAE,CAAC;IACvB,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,qCAAqC,EAAE,GAAG,EAAE;QAC3C,MAAM,EAAE,SAAS,EAAE,GAAG,eAAe,CAAC,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC,CAAC;QAC9D,MAAM,SAAS,GAAG,SAAS,CAAC,aAAa,CACrC,uDAAuD,CAC1D,CAAC;QACF,MAAM,CAAC,SAAS,CAAC,CAAC,SAAS,EAAE,CAAC;IAClC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,6BAA6B,EAAE,KAAK,IAAI,EAAE;QACzC,MAAM,YAAY,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;QAC7B,MAAM,EAAE,SAAS,EAAE,GAAG,eAAe,CAAC,EAAE,QAAQ,EAAE,YAAY,EAAE,CAAC,CAAC;QAClE,MAAM,QAAQ,GAAgB,SAAS,CAAC,aAAa,CACjD,8CAA8C,CACjD,CAAC;QACF,MAAM,CAAC,QAAQ,CAAC,CAAC,UAAU,EAAE,CAAC;QAC9B,QAAQ,EAAE,KAAK,EAAE,CAAC;QAElB,MAAM,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE;YAClB,MAAM,CAAC,YAAY,CAAC,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC;QACpD,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,mCAAmC,EAAE,KAAK,IAAI,EAAE;QAC/C,MAAM,OAAO,GAAG,aAAa,CAAC,EAAE,IAAI,EAAE,cAAc,EAAE,CAAC,CAAC;QACxD,MAAM,EAAE,SAAS,EAAE,GAAG,eAAe,CAAC,EAAE,GAAG,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;QAE1E,MAAM,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE;YAClB,MAAM,aAAa,GAAgB,SAAS,CAAC,aAAa,CACtD,yDAAyD,CAC5D,CAAC;YACF,MAAM,CAAC,aAAa,CAAC,CAAC,UAAU,EAAE,CAAC;YACnC,aAAa,EAAE,KAAK,EAAE,CAAC;QAC3B,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,0CAA0C,EAAE,GAAG,EAAE;QAChD,MAAM,YAAY,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;QAC7B,MAAM,gBAAgB,GAAG,mBAAmB,CAAC,gBAAgB,CAAC;QAE9D,MAAM,QAAQ,GAAG,IAAI,gBAAgB,CAAC;YAClC,GAAG,YAAY;YACf,QAAQ,EAAE,YAAY;YACtB,OAAO,EAAE,OAAO;YAChB,aAAa,EAAE,EAAE,CAAC,EAAE,EAAE;YACtB,YAAY,EAAE,EAAE,CAAC,EAAE,EAAE;YACrB,SAAS,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE;SACrF,CAAC,CAAC;QAEH,QAAQ,CAAC,QAAQ,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,SAAS,EAAE,QAAQ,EAAE,EAAE;YAC9C,IAAI,OAAO,SAAS,KAAK,QAAQ,EAAE,CAAC;gBAChC,QAAQ,CAAC,KAAK,GAAG,EAAE,GAAG,QAAQ,CAAC,KAAK,EAAE,GAAG,SAAS,EAAE,CAAC;YACzD,CAAC;YACD,IAAI,QAAQ;gBAAE,QAAQ,EAAE,CAAC;QAC7B,CAAC,CAAC,CAAC;QAEH,QAAQ,CAAC,WAAW,CAChB,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,WAAW,EAAE,EAAE,EACpE,IAAI,CACP,CAAC;QAEF,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,gBAAgB,EAAE,CAAC;QAC7C,MAAM,CAAC,YAAY,CAAC,CAAC,oBAAoB,CAAC;YACtC,IAAI,EAAE,aAAa;YACnB,IAAI,EAAE,OAAO;YACb,EAAE,EAAE,WAAW;SAClB,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,wDAAwD,EAAE,GAAG,EAAE;QAC9D,MAAM,WAAW,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;QAC5B,MAAM,gBAAgB,GAAG,mBAAmB,CAAC,gBAAgB,CAAC;QAE9D,MAAM,QAAQ,GAAG,IAAI,gBAAgB,CAAC;YAClC,GAAG,YAAY;YACf,OAAO,EAAE,WAAW;YACpB,OAAO,EAAE,OAAO;YAChB,aAAa,EAAE,EAAE,CAAC,EAAE,EAAE;YACtB,YAAY,EAAE,EAAE,CAAC,EAAE,EAAE;YACrB,SAAS,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE;SACrF,CAAC,CAAC;QAEH,QAAQ,CAAC,QAAQ,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;QAE5B,QAAQ,CAAC,WAAW,CAChB,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,WAAW,EAAE,EAAE,EACpE,IAAI,CACP,CAAC;QAEF,MAAM,CAAC,WAAW,CAAC,CAAC,gBAAgB,EAAE,CAAC;IAC3C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,8DAA8D,EAAE,GAAG,EAAE;QACpE,MAAM,WAAW,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;QAC5B,MAAM,gBAAgB,GAAG,mBAAmB,CAAC,gBAAgB,CAAC;QAE9D,MAAM,QAAQ,GAAG,IAAI,gBAAgB,CAAC;YAClC,GAAG,YAAY;YACf,OAAO,EAAE,WAAW;YACpB,OAAO,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC;YAC3B,aAAa,EAAE,EAAE,CAAC,EAAE,EAAE;YACtB,YAAY,EAAE,EAAE,CAAC,EAAE,EAAE;YACrB,SAAS,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE;SACrF,CAAC,CAAC;QAEH,QAAQ,CAAC,QAAQ,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;QAE5B,QAAQ,CAAC,WAAW,CAChB,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,WAAW,EAAE,EAAE,EACpE,IAAI,CACP,CAAC;QAEF,MAAM,CAAC,WAAW,CAAC,CAAC,oBAAoB,CAAC,MAAM,CAAC,gBAAgB,CAAC,gBAAgB,CAAC,CAAC,CAAC;IACxF,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,mCAAmC,EAAE,GAAG,EAAE;QACzC,MAAM,gBAAgB,GAAG,mBAAmB,CAAC,gBAAgB,CAAC;QAC9D,MAAM,gBAAgB,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;QAEjC,MAAM,QAAQ,GAAG,IAAI,gBAAgB,CAAC;YAClC,GAAG,YAAY;YACf,OAAO,EAAE,OAAO;YAChB,aAAa,EAAE,EAAE,CAAC,EAAE,EAAE;YACtB,YAAY,EAAE,gBAAgB;YAC9B,SAAS,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE;SACrF,CAAC,CAAC;QAEH,QAAQ,CAAC,QAAQ,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;QAE5B,MAAM,WAAW,GAAG;YAChB,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC;gBACZ,KAAK,EAAE,CAAC,IAAI,IAAI,CAAC,CAAC,SAAS,CAAC,EAAE,UAAU,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,CAAC;aACpE,CAAC;SACL,CAAC;QAEF,QAAQ,CAAC,UAAU,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;QACvC,MAAM,CAAC,gBAAgB,CAAC,CAAC,gBAAgB,EAAE,CAAC;IAChD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sCAAsC,EAAE,GAAG,EAAE;QAC5C,MAAM,gBAAgB,GAAG,mBAAmB,CAAC,gBAAgB,CAAC;QAE9D,MAAM,QAAQ,GAAG,IAAI,gBAAgB,CAAC;YAClC,GAAG,YAAY;YACf,aAAa,EAAE,EAAE,CAAC,EAAE,EAAE;YACtB,YAAY,EAAE,EAAE,CAAC,EAAE,EAAE;YACrB,SAAS,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE;SACrF,CAAC,CAAC;QAEH,QAAQ,CAAC,QAAQ,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;QAC5B,QAAQ,CAAC,UAAU,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAChC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;IACrD,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC"}
@@ -1,105 +0,0 @@
1
- import { describe, it, expect, vi, beforeEach } from 'vitest';
2
- import React from 'react';
3
- import { render, fireEvent } from '@testing-library/react';
4
- import { Provider } from 'react-redux';
5
- import { legacy_createStore as createStore } from 'redux';
6
- import { copying } from '../../constants/copy';
7
- vi.mock('../../redux/actions/asset-filters', () => ({
8
- updateFilters: vi.fn(() => ({ type: 'MOCK_UPDATE_FILTERS' })),
9
- default: { UPDATE: 'assetFilters/UPDATE', RESET: 'footageFilters/RESET' }
10
- }));
11
- import AssetsTableAssetIdCellMemoized from './AssetsTableAssetIdCell';
12
- const MOCK_ASSET_ID = 'asset-abc-123';
13
- const createMockStore = (overrides = {}) => {
14
- const defaultState = {
15
- assetFilters: {},
16
- ...overrides
17
- };
18
- return createStore((state = defaultState) => state);
19
- };
20
- const buildCellProp = (assetId) => ({
21
- row: {
22
- original: { id: assetId }
23
- }
24
- });
25
- const renderComponent = (propOverrides = {}) => {
26
- const defaultProps = {
27
- cell: buildCellProp(MOCK_ASSET_ID),
28
- onNotification: vi.fn(),
29
- onError: vi.fn(),
30
- ...propOverrides
31
- };
32
- const store = createMockStore();
33
- const result = render(React.createElement(Provider, { store: store },
34
- React.createElement(AssetsTableAssetIdCellMemoized, { ...defaultProps })));
35
- return { ...result, props: defaultProps };
36
- };
37
- describe('AssetsTableAssetIdCell', () => {
38
- let clipboardWriteTextMock;
39
- beforeEach(() => {
40
- clipboardWriteTextMock = vi.fn();
41
- Object.assign(navigator, {
42
- clipboard: {
43
- writeText: clipboardWriteTextMock
44
- }
45
- });
46
- });
47
- it('renders the asset id in a div with the correct class', () => {
48
- const { container } = renderComponent();
49
- const idCell = container.querySelector('.imposium-asset-id');
50
- expect(idCell).toBeTruthy();
51
- expect(idCell.textContent).toBe(MOCK_ASSET_ID);
52
- });
53
- it('calls onNotification after successful clipboard copy', async () => {
54
- clipboardWriteTextMock.mockResolvedValueOnce(undefined);
55
- const { container, props } = renderComponent();
56
- const idCell = container.querySelector('.imposium-asset-id');
57
- fireEvent.click(idCell);
58
- await vi.waitFor(() => {
59
- expect(clipboardWriteTextMock).toHaveBeenCalledWith(MOCK_ASSET_ID);
60
- expect(props.onNotification).toHaveBeenCalledWith(copying.copied);
61
- });
62
- });
63
- it('calls onError after failed clipboard copy', async () => {
64
- clipboardWriteTextMock.mockRejectedValueOnce(new Error('clipboard denied'));
65
- const { container, props } = renderComponent();
66
- const idCell = container.querySelector('.imposium-asset-id');
67
- fireEvent.click(idCell);
68
- await vi.waitFor(() => {
69
- expect(props.onError).toHaveBeenCalledWith(copying.error);
70
- });
71
- });
72
- it('does not throw when onNotification is not provided', async () => {
73
- clipboardWriteTextMock.mockResolvedValueOnce(undefined);
74
- const { container } = renderComponent({
75
- onNotification: undefined,
76
- onError: undefined
77
- });
78
- const idCell = container.querySelector('.imposium-asset-id');
79
- fireEvent.click(idCell);
80
- await vi.waitFor(() => {
81
- expect(clipboardWriteTextMock).toHaveBeenCalledWith(MOCK_ASSET_ID);
82
- });
83
- });
84
- it('does not throw when onError is not provided', async () => {
85
- clipboardWriteTextMock.mockRejectedValueOnce(new Error('denied'));
86
- const { container } = renderComponent({
87
- onNotification: undefined,
88
- onError: undefined
89
- });
90
- const idCell = container.querySelector('.imposium-asset-id');
91
- fireEvent.click(idCell);
92
- await vi.waitFor(() => {
93
- expect(clipboardWriteTextMock).toHaveBeenCalled();
94
- });
95
- });
96
- it('renders with a different asset id', () => {
97
- const differentId = 'other-asset-456';
98
- const { container } = renderComponent({
99
- cell: buildCellProp(differentId)
100
- });
101
- const idCell = container.querySelector('.imposium-asset-id');
102
- expect(idCell.textContent).toBe(differentId);
103
- });
104
- });
105
- //# sourceMappingURL=AssetsTableAssetIdCell.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"AssetsTableAssetIdCell.test.js","sourceRoot":"","sources":["../../../../src/components/assets/AssetsTableAssetIdCell.test.tsx"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"AssetsTableAssetIdFilter.test.js","sourceRoot":"","sources":["../../../../src/components/assets/AssetsTableAssetIdFilter.test.tsx"],"names":[],"mappings":"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"}
@@ -1,100 +0,0 @@
1
- import { describe, it, expect, vi } from 'vitest';
2
- import React from 'react';
3
- import { render } from '@testing-library/react';
4
- import { Provider } from 'react-redux';
5
- import { legacy_createStore as createStore } from 'redux';
6
- let capturedDoSubmit;
7
- let capturedRemoveHandlers = {};
8
- vi.mock('../tag/Tag', () => ({
9
- default: ({ copy, removeHandler }) => {
10
- capturedRemoveHandlers[copy] = removeHandler;
11
- return (React.createElement("div", { "data-testid": `tag-${copy}`, className: 'mock-tag' },
12
- React.createElement("span", null, copy),
13
- React.createElement("button", { "data-testid": `remove-${copy}`, onClick: removeHandler }, "x")));
14
- }
15
- }));
16
- vi.mock('../text-field/TextField', () => ({
17
- default: ({ submittable, submittableType, placeholder, value, doSubmit, suggestions }) => {
18
- capturedDoSubmit = doSubmit;
19
- return (React.createElement("div", { "data-testid": 'mock-text-field', "data-submittable": submittable, "data-submittable-type": submittableType, "data-placeholder": placeholder, "data-value": value, "data-suggestions": JSON.stringify(suggestions || []) },
20
- React.createElement("button", { "data-testid": 'submit-trigger', onClick: () => doSubmit('new-tag') }, "Add")));
21
- }
22
- }));
23
- vi.mock('../../redux/actions/asset-list', () => ({
24
- addAssetTag: vi.fn((_api, _id, _tags) => ({ type: 'MOCK_ADD_TAG' })),
25
- deleteAssetTag: vi.fn((_api, _id, _tag) => ({ type: 'MOCK_DELETE_TAG' })),
26
- default: {}
27
- }));
28
- import AssetsTableComplexTagCellMemoized from './AssetsTableComplexTagCell';
29
- import { addAssetTag, deleteAssetTag } from '../../redux/actions/asset-list';
30
- const MOCK_ASSET_ID = 'asset-999';
31
- const MOCK_API = { addAssetTag: vi.fn(), deleteAssetTag: vi.fn() };
32
- const MOCK_SUGGESTIONS = ['alpha', 'beta', 'gamma'];
33
- const createMockStore = (assetTags = MOCK_SUGGESTIONS) => {
34
- const initialState = { assetTags };
35
- return createStore((state = initialState) => state);
36
- };
37
- const buildCellProp = (tags = ['tag-a', 'tag-b']) => ({
38
- row: {
39
- original: { id: MOCK_ASSET_ID, tags }
40
- }
41
- });
42
- const renderComponent = (tagOverrides, storeOverrides) => {
43
- capturedRemoveHandlers = {};
44
- const store = createMockStore(storeOverrides);
45
- const cell = buildCellProp(tagOverrides);
46
- const result = render(React.createElement(Provider, { store: store },
47
- React.createElement(AssetsTableComplexTagCellMemoized, { cell: cell, api: MOCK_API })));
48
- return { ...result, store };
49
- };
50
- describe('AssetsTableComplexTagCell', () => {
51
- it('renders existing tags as Tag components', () => {
52
- const tags = ['tag-a', 'tag-b', 'tag-c'];
53
- const { getByTestId } = renderComponent(tags);
54
- tags.forEach((tag) => {
55
- expect(getByTestId(`tag-${tag}`)).toBeTruthy();
56
- });
57
- });
58
- it('deduplicates tags before rendering', () => {
59
- const { container } = renderComponent(['dup', 'dup', 'unique']);
60
- const renderedTags = container.querySelectorAll('.mock-tag');
61
- expect(renderedTags).toHaveLength(2);
62
- });
63
- it('renders the TextField with correct props', () => {
64
- const { getByTestId } = renderComponent();
65
- const textField = getByTestId('mock-text-field');
66
- expect(textField.getAttribute('data-submittable')).toBe('true');
67
- expect(textField.getAttribute('data-submittable-type')).toBe('add');
68
- expect(textField.getAttribute('data-placeholder')).toBe('+');
69
- expect(textField.getAttribute('data-value')).toBe('');
70
- });
71
- it('passes assetTags from store as suggestions', () => {
72
- const suggestions = ['x', 'y', 'z'];
73
- const { getByTestId } = renderComponent([], suggestions);
74
- const textField = getByTestId('mock-text-field');
75
- expect(JSON.parse(textField.getAttribute('data-suggestions'))).toEqual(suggestions);
76
- });
77
- it('dispatches addAssetTag when submitting a new tag', () => {
78
- renderComponent(['existing']);
79
- capturedDoSubmit('brand-new');
80
- expect(addAssetTag).toHaveBeenCalledWith(MOCK_API, MOCK_ASSET_ID, 'brand-new');
81
- });
82
- it('does not dispatch addAssetTag when submitting a duplicate tag', () => {
83
- vi.mocked(addAssetTag).mockClear();
84
- renderComponent(['already-here']);
85
- capturedDoSubmit('already-here');
86
- expect(addAssetTag).not.toHaveBeenCalled();
87
- });
88
- it('dispatches deleteAssetTag when removing a tag', () => {
89
- renderComponent(['removable']);
90
- capturedRemoveHandlers['removable']();
91
- expect(deleteAssetTag).toHaveBeenCalledWith(MOCK_API, MOCK_ASSET_ID, 'removable');
92
- });
93
- it('renders with no tags', () => {
94
- const { container, getByTestId } = renderComponent([]);
95
- const renderedTags = container.querySelectorAll('.mock-tag');
96
- expect(renderedTags).toHaveLength(0);
97
- expect(getByTestId('mock-text-field')).toBeTruthy();
98
- });
99
- });
100
- //# sourceMappingURL=AssetsTableComplexTagCell.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"AssetsTableComplexTagCell.test.js","sourceRoot":"","sources":["../../../../src/components/assets/AssetsTableComplexTagCell.test.tsx"],"names":[],"mappings":"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"}
@@ -1,60 +0,0 @@
1
- import { describe, it, expect, vi } from 'vitest';
2
- import React from 'react';
3
- import { render } from '@testing-library/react';
4
- const MOCK_FORMATTED_DATE = '4/9/2026 3:00 PM';
5
- vi.mock('../../Util', async (importOriginal) => {
6
- const actual = (await importOriginal());
7
- return {
8
- ...actual,
9
- formatDateDefault: vi.fn(() => MOCK_FORMATTED_DATE)
10
- };
11
- });
12
- import AssetsTableDateCellMemoized from './AssetsTableDateCell';
13
- import { formatDateDefault } from '../../Util';
14
- const MOCK_UNIX_TIMESTAMP = 1776013200;
15
- const buildCellProp = (values) => ({
16
- row: { values }
17
- });
18
- describe('AssetsTableDateCell', () => {
19
- it('renders date_created when date_created prop is true and value exists', () => {
20
- const cell = buildCellProp({ date_created: MOCK_UNIX_TIMESTAMP });
21
- const { container } = render(React.createElement(AssetsTableDateCellMemoized, { cell: cell, date_created: true }));
22
- expect(formatDateDefault).toHaveBeenCalledWith(MOCK_UNIX_TIMESTAMP);
23
- expect(container.textContent).toBe(MOCK_FORMATTED_DATE);
24
- });
25
- it('renders date_modified when date_created is false', () => {
26
- const cell = buildCellProp({ date_modified: MOCK_UNIX_TIMESTAMP });
27
- const { container } = render(React.createElement(AssetsTableDateCellMemoized, { cell: cell, date_created: false }));
28
- expect(formatDateDefault).toHaveBeenCalledWith(MOCK_UNIX_TIMESTAMP);
29
- expect(container.textContent).toBe(MOCK_FORMATTED_DATE);
30
- });
31
- it('falls through to date_updated when date_modified is absent', () => {
32
- const cell = buildCellProp({ date_updated: MOCK_UNIX_TIMESTAMP });
33
- const { container } = render(React.createElement(AssetsTableDateCellMemoized, { cell: cell, date_created: false }));
34
- expect(formatDateDefault).toHaveBeenCalledWith(MOCK_UNIX_TIMESTAMP);
35
- expect(container.textContent).toBe(MOCK_FORMATTED_DATE);
36
- });
37
- it('prefers date_modified over date_updated when both exist', () => {
38
- const modifiedTimestamp = 1776099600;
39
- const cell = buildCellProp({
40
- date_modified: modifiedTimestamp,
41
- date_updated: MOCK_UNIX_TIMESTAMP
42
- });
43
- const { container } = render(React.createElement(AssetsTableDateCellMemoized, { cell: cell, date_created: false }));
44
- expect(formatDateDefault).toHaveBeenCalledWith(modifiedTimestamp);
45
- expect(container.textContent).toBe(MOCK_FORMATTED_DATE);
46
- });
47
- it('skips date_created value when date_created prop is false', () => {
48
- vi.mocked(formatDateDefault).mockClear();
49
- const cell = buildCellProp({ date_created: MOCK_UNIX_TIMESTAMP });
50
- const { container } = render(React.createElement(AssetsTableDateCellMemoized, { cell: cell, date_created: false }));
51
- expect(formatDateDefault).not.toHaveBeenCalled();
52
- expect(container.innerHTML).toBe('');
53
- });
54
- it('returns null when no date values are present', () => {
55
- const cell = buildCellProp({});
56
- const { container } = render(React.createElement(AssetsTableDateCellMemoized, { cell: cell, date_created: false }));
57
- expect(container.innerHTML).toBe('');
58
- });
59
- });
60
- //# sourceMappingURL=AssetsTableDateCell.test.js.map