@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
@@ -3,19 +3,37 @@ import React from 'react';
3
3
  import { render } from '@testing-library/react';
4
4
  import { Provider } from 'react-redux';
5
5
  import { legacy_createStore as createStore } from 'redux';
6
+
6
7
  vi.mock('../text-field/TextField', () => ({
7
- default: ({ className, submittable, submittableType, value, doSubmit, header }) => (React.createElement("div", { "data-testid": 'mock-text-field', "data-classname": className, "data-submittable": submittable, "data-submittable-type": submittableType, "data-value": value || '', "data-header": header },
8
- React.createElement("button", { "data-testid": 'submit-trigger', onClick: () => doSubmit('new-filter-value') }, "Submit")))
8
+ default: ({ className, submittable, submittableType, value, doSubmit, header }: any) => (
9
+ <div
10
+ data-testid='mock-text-field'
11
+ data-classname={className}
12
+ data-submittable={submittable}
13
+ data-submittable-type={submittableType}
14
+ data-value={value || ''}
15
+ data-header={header}>
16
+ <button
17
+ data-testid='submit-trigger'
18
+ onClick={() => doSubmit('new-filter-value')}>
19
+ Submit
20
+ </button>
21
+ </div>
22
+ )
9
23
  }));
24
+
10
25
  vi.mock('../../redux/actions/asset-filters', () => ({
11
26
  updateFilters: vi.fn((filters) => ({ type: 'assetFilters/UPDATE', newFilters: filters })),
12
27
  default: { UPDATE: 'assetFilters/UPDATE', RESET: 'footageFilters/RESET' }
13
28
  }));
14
- import AssetsTableAssetIdFilterMemoized from './AssetsTableAssetIdFilter';
15
- const MOCK_ASSET_ID_FILTER = 'existing-filter-123';
16
- const createMockStore = (assetIdFilter = '') => {
17
- const initialState = { assetFilters: { id: assetIdFilter } };
18
- return createStore((state = initialState, action) => {
29
+
30
+ import AssetsTableNameFilterMemoized from './AssetsTableNameFilter';
31
+
32
+ const MOCK_NAME_FILTER = 'existing-name-filter';
33
+
34
+ const createMockStore = (nameFilter = '') => {
35
+ const initialState = { assetFilters: { name: nameFilter } };
36
+ return createStore((state: any = initialState, action: any) => {
19
37
  if (action.type === 'assetFilters/UPDATE') {
20
38
  return {
21
39
  ...state,
@@ -25,39 +43,53 @@ const createMockStore = (assetIdFilter = '') => {
25
43
  return state;
26
44
  });
27
45
  };
28
- const renderComponent = (assetIdFilter = '') => {
29
- const store = createMockStore(assetIdFilter);
30
- const result = render(React.createElement(Provider, { store: store },
31
- React.createElement(AssetsTableAssetIdFilterMemoized, null)));
46
+
47
+ const renderComponent = (nameFilter = '') => {
48
+ const store = createMockStore(nameFilter);
49
+
50
+ const result = render(
51
+ <Provider store={store}>
52
+ <AssetsTableNameFilterMemoized />
53
+ </Provider>
54
+ );
55
+
32
56
  return { ...result, store };
33
57
  };
34
- describe('AssetsTableAssetIdFilter', () => {
58
+
59
+ describe('AssetsTableNameFilter', () => {
35
60
  it('renders the TextField with correct props', () => {
36
- const { getByTestId } = renderComponent(MOCK_ASSET_ID_FILTER);
61
+ const { getByTestId } = renderComponent(MOCK_NAME_FILTER);
37
62
  const textField = getByTestId('mock-text-field');
38
- expect(textField.getAttribute('data-classname')).toBe('asset-id');
63
+
64
+ expect(textField.getAttribute('data-classname')).toBe('asset-name');
39
65
  expect(textField.getAttribute('data-submittable')).toBe('true');
40
66
  expect(textField.getAttribute('data-submittable-type')).toBe('search');
41
- expect(textField.getAttribute('data-value')).toBe(MOCK_ASSET_ID_FILTER);
67
+ expect(textField.getAttribute('data-value')).toBe(MOCK_NAME_FILTER);
42
68
  expect(textField.getAttribute('data-header')).toBe('true');
43
69
  });
44
- it('dispatches updateFilters with the submitted value', () => {
70
+
71
+ it('dispatches updateFilters with the submitted name value', () => {
45
72
  const { getByTestId, store } = renderComponent();
46
73
  const submitButton = getByTestId('submit-trigger');
74
+
47
75
  submitButton.click();
76
+
48
77
  const storeState = store.getState();
49
- expect(storeState.assetFilters.id).toBe('new-filter-value');
78
+ expect(storeState.assetFilters.name).toBe('new-filter-value');
50
79
  });
51
- it('renders with an empty filter value when no id is set', () => {
80
+
81
+ it('renders with an empty filter value when no name is set', () => {
52
82
  const { getByTestId } = renderComponent();
53
83
  const textField = getByTestId('mock-text-field');
84
+
54
85
  expect(textField.getAttribute('data-value')).toBe('');
55
86
  });
87
+
56
88
  it('passes the current filter value from the redux store', () => {
57
- const filterValue = 'search-term-abc';
89
+ const filterValue = 'search-term-xyz';
58
90
  const { getByTestId } = renderComponent(filterValue);
59
91
  const textField = getByTestId('mock-text-field');
92
+
60
93
  expect(textField.getAttribute('data-value')).toBe(filterValue);
61
94
  });
62
95
  });
63
- //# sourceMappingURL=AssetsTableAssetIdFilter.test.js.map
@@ -0,0 +1,191 @@
1
+ import { describe, it, expect, vi } from 'vitest';
2
+ import React from 'react';
3
+ import { render, fireEvent } from '@testing-library/react';
4
+
5
+ const MOCK_PREVIEW_STYLE = { width: 200, height: 150 };
6
+
7
+ vi.mock('../../index', () => ({
8
+ ASSET_TYPES: {
9
+ VIDEO: 'video',
10
+ IMAGE: 'image',
11
+ AUDIO: 'audio'
12
+ },
13
+ AssetsTypeIcon: ({ type }: any) => (
14
+ <div
15
+ data-testid='assets-type-icon'
16
+ data-type={type}
17
+ />
18
+ ),
19
+ ImagePreview: ({ url, onRequestClose, style }: any) => (
20
+ <div
21
+ data-testid='image-preview'
22
+ data-url={url}
23
+ style={style}>
24
+ <button
25
+ data-testid='image-close'
26
+ onClick={onRequestClose}>
27
+ Close
28
+ </button>
29
+ </div>
30
+ ),
31
+ VideoPreview: ({ url, onRequestClose, playbackSettings, style }: any) => (
32
+ <div
33
+ data-testid='video-preview'
34
+ data-url={url}
35
+ data-autoplay={playbackSettings?.autoPlay}
36
+ data-loop={playbackSettings?.loop}
37
+ style={style}>
38
+ <button
39
+ data-testid='video-close'
40
+ onClick={onRequestClose}>
41
+ Close
42
+ </button>
43
+ </div>
44
+ ),
45
+ AudioPreview: ({ url, onRequestClose, playbackSettings, style }: any) => (
46
+ <div
47
+ data-testid='audio-preview'
48
+ data-url={url}
49
+ data-autoplay={playbackSettings?.autoPlay}
50
+ data-loop={playbackSettings?.loop}
51
+ style={style}>
52
+ <button
53
+ data-testid='audio-close'
54
+ onClick={onRequestClose}>
55
+ Close
56
+ </button>
57
+ </div>
58
+ ),
59
+ getMediaPreviewStyle: vi.fn(() => MOCK_PREVIEW_STYLE)
60
+ }));
61
+
62
+ import AssetsTablePreviewCellMemoized from './AssetsTablePreviewCell';
63
+
64
+ const MOCK_URL = 'https://example.com/asset.mp4';
65
+ const MOCK_WIDTH = 1920;
66
+ const MOCK_HEIGHT = 1080;
67
+
68
+ const buildCellProp = (type: string) => ({
69
+ row: {
70
+ values: { type },
71
+ original: {
72
+ url: MOCK_URL,
73
+ width: MOCK_WIDTH,
74
+ height: MOCK_HEIGHT
75
+ }
76
+ }
77
+ });
78
+
79
+ const renderComponent = (
80
+ type: string,
81
+ showMedia: boolean,
82
+ overrides: { asset?: any; onClick?: () => void; onRequestClose?: () => void } = {}
83
+ ) => {
84
+ const onClick = overrides.onClick ?? vi.fn();
85
+ const onRequestClose = overrides.onRequestClose ?? vi.fn();
86
+ const asset = overrides.asset ?? undefined;
87
+ const cell = buildCellProp(type);
88
+
89
+ const result = render(
90
+ <AssetsTablePreviewCellMemoized
91
+ cell={cell}
92
+ showMedia={showMedia}
93
+ asset={asset}
94
+ onClick={onClick}
95
+ onRequestClose={onRequestClose}
96
+ />
97
+ );
98
+
99
+ return { ...result, onClick, onRequestClose };
100
+ };
101
+
102
+ describe('AssetsTablePreviewCell', () => {
103
+ it('renders AssetsTypeIcon with the correct type', () => {
104
+ const { getByTestId } = renderComponent('video', false);
105
+ const icon = getByTestId('assets-type-icon');
106
+
107
+ expect(icon.getAttribute('data-type')).toBe('video');
108
+ });
109
+
110
+ it('calls onClick when clicked and showMedia is false', () => {
111
+ const onClick = vi.fn();
112
+ const { container } = renderComponent('image', false, { onClick });
113
+ const cell = container.querySelector('.asset-type-cell');
114
+
115
+ if (cell) {
116
+ fireEvent.click(cell);
117
+ }
118
+
119
+ expect(onClick).toHaveBeenCalledOnce();
120
+ });
121
+
122
+ it('does not call onClick when clicked and showMedia is true', () => {
123
+ const onClick = vi.fn();
124
+ const { container } = renderComponent('image', true, { onClick });
125
+ const cell = container.querySelector('.asset-type-cell');
126
+
127
+ if (cell) {
128
+ fireEvent.click(cell);
129
+ }
130
+
131
+ expect(onClick).not.toHaveBeenCalled();
132
+ });
133
+
134
+ it('renders ImagePreview when type is IMAGE and showMedia is true', () => {
135
+ const { getByTestId, queryByTestId } = renderComponent('image', true);
136
+
137
+ expect(getByTestId('image-preview').getAttribute('data-url')).toBe(MOCK_URL);
138
+ expect(queryByTestId('video-preview')).toBeNull();
139
+ expect(queryByTestId('audio-preview')).toBeNull();
140
+ });
141
+
142
+ it('renders VideoPreview when type is VIDEO and showMedia is true', () => {
143
+ const { getByTestId, queryByTestId } = renderComponent('video', true);
144
+
145
+ expect(getByTestId('video-preview').getAttribute('data-url')).toBe(MOCK_URL);
146
+ expect(queryByTestId('image-preview')).toBeNull();
147
+ expect(queryByTestId('audio-preview')).toBeNull();
148
+ });
149
+
150
+ it('renders AudioPreview when type is AUDIO and showMedia is true', () => {
151
+ const { getByTestId, queryByTestId } = renderComponent('audio', true);
152
+
153
+ expect(getByTestId('audio-preview').getAttribute('data-url')).toBe(MOCK_URL);
154
+ expect(queryByTestId('image-preview')).toBeNull();
155
+ expect(queryByTestId('video-preview')).toBeNull();
156
+ });
157
+
158
+ it('does not render any preview when showMedia is false', () => {
159
+ const { queryByTestId } = renderComponent('video', false);
160
+
161
+ expect(queryByTestId('image-preview')).toBeNull();
162
+ expect(queryByTestId('video-preview')).toBeNull();
163
+ expect(queryByTestId('audio-preview')).toBeNull();
164
+ });
165
+
166
+ it('calls onRequestClose when a preview close button is clicked', () => {
167
+ const onRequestClose = vi.fn();
168
+ const { getByTestId } = renderComponent('image', true, { onRequestClose });
169
+
170
+ fireEvent.click(getByTestId('image-close'));
171
+
172
+ expect(onRequestClose).toHaveBeenCalledOnce();
173
+ });
174
+
175
+ it('uses asset url/dimensions when asset prop is provided', () => {
176
+ const customAsset = {
177
+ url: 'https://example.com/custom.png',
178
+ width: 800,
179
+ height: 600
180
+ };
181
+ const { getByTestId } = renderComponent('image', true, { asset: customAsset });
182
+
183
+ expect(getByTestId('image-preview').getAttribute('data-url')).toBe(customAsset.url);
184
+ });
185
+
186
+ it('falls back to cell.row.original values when asset is undefined', () => {
187
+ const { getByTestId } = renderComponent('image', true);
188
+
189
+ expect(getByTestId('image-preview').getAttribute('data-url')).toBe(MOCK_URL);
190
+ });
191
+ });
@@ -0,0 +1,87 @@
1
+ import { describe, it, expect } from 'vitest';
2
+ import React from 'react';
3
+ import { render } from '@testing-library/react';
4
+ import AssetsTableRateCell from './AssetsTableRateCell';
5
+
6
+ const VIDEO_COMPOSITION_TYPE = 'video_composition';
7
+ const VIDEO_TYPE = 'video';
8
+
9
+ const buildCellProp = (overrides: Record<string, any> = {}) => ({
10
+ row: {
11
+ original: {
12
+ type: VIDEO_TYPE,
13
+ data: null,
14
+ rate: null,
15
+ ...overrides
16
+ }
17
+ }
18
+ });
19
+
20
+ const renderComponent = (overrides: Record<string, any> = {}) => {
21
+ return render(<AssetsTableRateCell cell={buildCellProp(overrides)} />);
22
+ };
23
+
24
+ describe('AssetsTableRateCell', () => {
25
+ it('renders the rate formatted to two decimal places', () => {
26
+ const { container } = renderComponent({ rate: 29.97 });
27
+ const cell = container.querySelector('.asset-rate-cell');
28
+
29
+ expect(cell?.textContent).toBe('29.97');
30
+ });
31
+
32
+ it('renders an integer rate with two decimal places', () => {
33
+ const { container } = renderComponent({ rate: 30 });
34
+ const cell = container.querySelector('.asset-rate-cell');
35
+
36
+ expect(cell?.textContent).toBe('30.00');
37
+ });
38
+
39
+ it('renders empty when rate is null', () => {
40
+ const { container } = renderComponent({ rate: null });
41
+ const cell = container.querySelector('.asset-rate-cell');
42
+
43
+ expect(cell?.textContent).toBe('');
44
+ });
45
+
46
+ it('renders empty when rate is undefined', () => {
47
+ const { container } = renderComponent({ rate: undefined });
48
+ const cell = container.querySelector('.asset-rate-cell');
49
+
50
+ expect(cell?.textContent).toBe('');
51
+ });
52
+
53
+ it('uses rate from parsed data JSON when type is video_composition', () => {
54
+ const compositionData = JSON.stringify({ rate: 24 });
55
+ const { container } = renderComponent({
56
+ type: VIDEO_COMPOSITION_TYPE,
57
+ data: compositionData,
58
+ rate: 30
59
+ });
60
+ const cell = container.querySelector('.asset-rate-cell');
61
+
62
+ expect(cell?.textContent).toBe('24.00');
63
+ });
64
+
65
+ it('ignores data when type is not video_composition', () => {
66
+ const compositionData = JSON.stringify({ rate: 24 });
67
+ const { container } = renderComponent({
68
+ type: VIDEO_TYPE,
69
+ data: compositionData,
70
+ rate: 60
71
+ });
72
+ const cell = container.querySelector('.asset-rate-cell');
73
+
74
+ expect(cell?.textContent).toBe('60.00');
75
+ });
76
+
77
+ it('does not parse data when data is null even for video_composition type', () => {
78
+ const { container } = renderComponent({
79
+ type: VIDEO_COMPOSITION_TYPE,
80
+ data: null,
81
+ rate: 25
82
+ });
83
+ const cell = container.querySelector('.asset-rate-cell');
84
+
85
+ expect(cell?.textContent).toBe('25.00');
86
+ });
87
+ });
@@ -0,0 +1,156 @@
1
+ import { describe, it, expect, vi } 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
+
7
+ vi.mock('../checkbox-field/CheckboxField', () => ({
8
+ default: ({ label, width, value, onChange }: any) => (
9
+ <div
10
+ data-testid='mock-checkbox-field'
11
+ data-label={label}
12
+ data-width={width}
13
+ data-value={value}>
14
+ <input
15
+ type='checkbox'
16
+ checked={value}
17
+ onChange={(e) => onChange(e.target.checked, e)}
18
+ />
19
+ </div>
20
+ )
21
+ }));
22
+
23
+ vi.mock('../../redux/actions/selected-assets', () => ({
24
+ selectAsset: vi.fn((id) => ({ type: 'selectedAssets/SELECT', id })),
25
+ deselectAsset: vi.fn((id) => ({ type: 'selectedAssets/DESELECT', id })),
26
+ selectMultipleAssets: vi.fn((id) => ({ type: 'selectedAssets/SELECT_MULTIPLE', id }))
27
+ }));
28
+
29
+ import AssetsTableSelectCellMemoized from './AssetsTableSelectCell';
30
+
31
+ const MOCK_ASSET_ID = 'asset-123';
32
+ const MOCK_OTHER_ASSET_ID = 'asset-456';
33
+
34
+ const buildCellProp = (overrides: Record<string, any> = {}) => ({
35
+ row: {
36
+ original: {
37
+ id: MOCK_ASSET_ID,
38
+ type: 'video',
39
+ ...overrides
40
+ }
41
+ }
42
+ });
43
+
44
+ const createMockStore = (selectedAssets: string[] = []) => {
45
+ const initialState = { selectedAssets };
46
+ return createStore((state: any = initialState, action: any) => {
47
+ switch (action.type) {
48
+ case 'selectedAssets/SELECT':
49
+ return {
50
+ ...state,
51
+ selectedAssets: [...state.selectedAssets, action.id]
52
+ };
53
+ case 'selectedAssets/DESELECT':
54
+ return {
55
+ ...state,
56
+ selectedAssets: state.selectedAssets.filter((id) => id !== action.id)
57
+ };
58
+ case 'selectedAssets/SELECT_MULTIPLE':
59
+ return {
60
+ ...state,
61
+ selectedAssets: [...state.selectedAssets, action.id]
62
+ };
63
+ default:
64
+ return state;
65
+ }
66
+ });
67
+ };
68
+
69
+ const renderComponent = (
70
+ cellOverrides: Record<string, any> = {},
71
+ selectedAssets: string[] = []
72
+ ) => {
73
+ const store = createMockStore(selectedAssets);
74
+ const cell = buildCellProp(cellOverrides);
75
+
76
+ const result = render(
77
+ <Provider store={store}>
78
+ <AssetsTableSelectCellMemoized cell={cell} />
79
+ </Provider>
80
+ );
81
+
82
+ return { ...result, store };
83
+ };
84
+
85
+ describe('AssetsTableSelectCell', () => {
86
+ it('renders CheckboxField with correct props when asset is not selected', () => {
87
+ const { getByTestId } = renderComponent();
88
+ const checkbox = getByTestId('mock-checkbox-field');
89
+
90
+ expect(checkbox.getAttribute('data-label')).toBe('');
91
+ expect(checkbox.getAttribute('data-width')).toBe('auto');
92
+ expect(checkbox.getAttribute('data-value')).toBe('false');
93
+ });
94
+
95
+ it('renders CheckboxField as checked when asset is selected', () => {
96
+ const { getByTestId } = renderComponent({}, [MOCK_ASSET_ID]);
97
+ const checkbox = getByTestId('mock-checkbox-field');
98
+
99
+ expect(checkbox.getAttribute('data-value')).toBe('true');
100
+ });
101
+
102
+ it('returns null when asset type is upload', () => {
103
+ const { container } = renderComponent({ type: 'upload' });
104
+
105
+ expect(container.firstChild).toBeNull();
106
+ });
107
+
108
+ it('dispatches selectAsset when checkbox is checked without shift key', () => {
109
+ const { getByRole, store } = renderComponent();
110
+ const checkboxInput = getByRole('checkbox');
111
+
112
+ fireEvent.click(checkboxInput);
113
+
114
+ const storeState = store.getState();
115
+ expect(storeState.selectedAssets).toContain(MOCK_ASSET_ID);
116
+ });
117
+
118
+ it('dispatches deselectAsset when checkbox is unchecked', () => {
119
+ const { getByRole, store } = renderComponent({}, [MOCK_ASSET_ID]);
120
+ const checkboxInput = getByRole('checkbox');
121
+
122
+ fireEvent.click(checkboxInput);
123
+
124
+ const storeState = store.getState();
125
+ expect(storeState.selectedAssets).not.toContain(MOCK_ASSET_ID);
126
+ });
127
+
128
+ it('dispatches selectMultipleAssets when checkbox is checked with shift key and other assets selected', () => {
129
+ const { getByRole, store } = renderComponent({}, [MOCK_OTHER_ASSET_ID]);
130
+ const checkboxInput = getByRole('checkbox');
131
+
132
+ fireEvent.click(checkboxInput, { shiftKey: true });
133
+
134
+ const storeState = store.getState();
135
+ expect(storeState.selectedAssets).toContain(MOCK_ASSET_ID);
136
+ expect(storeState.selectedAssets).toContain(MOCK_OTHER_ASSET_ID);
137
+ });
138
+
139
+ it('dispatches selectAsset when shift key is pressed but no other assets are selected', () => {
140
+ const { getByRole, store } = renderComponent();
141
+ const checkboxInput = getByRole('checkbox');
142
+
143
+ fireEvent.click(checkboxInput, { shiftKey: true });
144
+
145
+ const storeState = store.getState();
146
+ expect(storeState.selectedAssets).toContain(MOCK_ASSET_ID);
147
+ expect(storeState.selectedAssets).toHaveLength(1);
148
+ });
149
+
150
+ it('correctly identifies selected state when asset ID is in selectedAssets array', () => {
151
+ const { getByTestId } = renderComponent({}, [MOCK_OTHER_ASSET_ID, MOCK_ASSET_ID]);
152
+ const checkbox = getByTestId('mock-checkbox-field');
153
+
154
+ expect(checkbox.getAttribute('data-value')).toBe('true');
155
+ });
156
+ });
@@ -0,0 +1,119 @@
1
+ import { describe, it, expect, vi } 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
+
7
+ vi.mock('../checkbox-field/CheckboxField', () => ({
8
+ default: ({ label, propagate, value, onChange }: any) => (
9
+ <div
10
+ data-testid='mock-checkbox-field'
11
+ data-label={label}
12
+ data-propagate={propagate}
13
+ data-value={value}>
14
+ <input
15
+ type='checkbox'
16
+ checked={value}
17
+ onChange={() => onChange()}
18
+ />
19
+ </div>
20
+ )
21
+ }));
22
+
23
+ vi.mock('../../redux/actions/selected-assets', () => ({
24
+ selectAll: vi.fn(() => ({ type: 'selectedAssets/SELECT_ALL' })),
25
+ resetSelection: vi.fn(() => ({ type: 'selectedAssets/RESET' }))
26
+ }));
27
+
28
+ import AssetsTableSelectFilterMemoized from './AssetsTableSelectFilter';
29
+
30
+ const createMockStore = (selectedAssets: string[] = []) => {
31
+ const initialState = { selectedAssets };
32
+ return createStore((state: any = initialState, action: any) => {
33
+ switch (action.type) {
34
+ case 'selectedAssets/SELECT_ALL':
35
+ return {
36
+ ...state,
37
+ selectedAssets: ['asset-1', 'asset-2', 'asset-3']
38
+ };
39
+ case 'selectedAssets/RESET':
40
+ return {
41
+ ...state,
42
+ selectedAssets: []
43
+ };
44
+ default:
45
+ return state;
46
+ }
47
+ });
48
+ };
49
+
50
+ const renderComponent = (selectedAssets: string[] = []) => {
51
+ const store = createMockStore(selectedAssets);
52
+
53
+ const result = render(
54
+ <Provider store={store}>
55
+ <AssetsTableSelectFilterMemoized />
56
+ </Provider>
57
+ );
58
+
59
+ return { ...result, store };
60
+ };
61
+
62
+ describe('AssetsTableSelectFilter', () => {
63
+ it('renders CheckboxField with correct props when no assets are selected', () => {
64
+ const { getByTestId } = renderComponent();
65
+ const checkbox = getByTestId('mock-checkbox-field');
66
+
67
+ expect(checkbox.getAttribute('data-label')).toBe('');
68
+ expect(checkbox.getAttribute('data-propagate')).toBe('false');
69
+ expect(checkbox.getAttribute('data-value')).toBe('false');
70
+ });
71
+
72
+ it('renders CheckboxField as checked when assets are selected', () => {
73
+ const { getByTestId } = renderComponent(['asset-1', 'asset-2']);
74
+ const checkbox = getByTestId('mock-checkbox-field');
75
+
76
+ expect(checkbox.getAttribute('data-value')).toBe('true');
77
+ });
78
+
79
+ it('dispatches selectAll when checkbox is clicked and no assets are selected', () => {
80
+ const { getByRole, store } = renderComponent();
81
+ const checkboxInput = getByRole('checkbox');
82
+
83
+ fireEvent.click(checkboxInput);
84
+
85
+ const storeState = store.getState();
86
+ expect(storeState.selectedAssets).toEqual(['asset-1', 'asset-2', 'asset-3']);
87
+ });
88
+
89
+ it('dispatches resetSelection when checkbox is clicked and assets are selected', () => {
90
+ const { getByRole, store } = renderComponent(['asset-1', 'asset-2']);
91
+ const checkboxInput = getByRole('checkbox');
92
+
93
+ fireEvent.click(checkboxInput);
94
+
95
+ const storeState = store.getState();
96
+ expect(storeState.selectedAssets).toEqual([]);
97
+ });
98
+
99
+ it('shows unchecked state when selectedAssets array is empty', () => {
100
+ const { getByTestId } = renderComponent([]);
101
+ const checkbox = getByTestId('mock-checkbox-field');
102
+
103
+ expect(checkbox.getAttribute('data-value')).toBe('false');
104
+ });
105
+
106
+ it('shows checked state when selectedAssets array has one item', () => {
107
+ const { getByTestId } = renderComponent(['single-asset']);
108
+ const checkbox = getByTestId('mock-checkbox-field');
109
+
110
+ expect(checkbox.getAttribute('data-value')).toBe('true');
111
+ });
112
+
113
+ it('shows checked state when selectedAssets array has multiple items', () => {
114
+ const { getByTestId } = renderComponent(['asset-1', 'asset-2', 'asset-3']);
115
+ const checkbox = getByTestId('mock-checkbox-field');
116
+
117
+ expect(checkbox.getAttribute('data-value')).toBe('true');
118
+ });
119
+ });