@griddo/ax 12.3.0 → 12.5.0

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 (294) hide show
  1. package/config/{jest/componentsMock.js → tests/componentsMock.cjs} +4 -1
  2. package/config/tests/reactEasyCropMock.js +15 -0
  3. package/config/tests/reactTimezoneMock.js +14 -0
  4. package/config/tests/setup.ts +41 -0
  5. package/config/webpack.config.js +5 -0
  6. package/package.json +15 -29
  7. package/public/img/icons/markdown.svg +6 -0
  8. package/src/__tests__/components/ActionMenu/ActionMenu.test.tsx +12 -12
  9. package/src/__tests__/components/Breadcrumb/Breadcrumb.test.tsx +2 -2
  10. package/src/__tests__/components/Browser/Browser.test.tsx +17 -25
  11. package/src/__tests__/components/BulkSelectionOptions/BulkSelectionOptions.test.tsx +3 -3
  12. package/src/__tests__/components/CategoryCell/CategoryCell.test.tsx +3 -2
  13. package/src/__tests__/components/ConfigPanel/ConfigPanel.test.tsx +4 -4
  14. package/src/__tests__/components/ConfigPanel/Form/ConnectedField/ConnectedField.test.tsx +2 -2
  15. package/src/__tests__/components/ConfigPanel/Form/ConnectedField/NavConnectedField/NavConnectedField.test.tsx +2 -2
  16. package/src/__tests__/components/ConfigPanel/Form/ConnectedField/PageConnectedField/Field/Field.test.tsx +3 -3
  17. package/src/__tests__/components/ConfigPanel/Form/ConnectedField/PageConnectedField/PageConnectedField.test.tsx +17 -14
  18. package/src/__tests__/components/ConfigPanel/Form/ConnectedField/PageConnectedField/TemplateManager/TemplateManager.test.tsx +4 -4
  19. package/src/__tests__/components/ConfigPanel/Form/Form.test.tsx +49 -58
  20. package/src/__tests__/components/ConfigPanel/GlobalPageForm/GlobalPageForm.test.tsx +11 -11
  21. package/src/__tests__/components/ConfigPanel/Header/Header.test.tsx +51 -46
  22. package/src/__tests__/components/ConfigPanel/NavigationForm/Field/Field.test.tsx +2 -2
  23. package/src/__tests__/components/ConfigPanel/NavigationForm/NavigationForm.test.tsx +2 -2
  24. package/src/__tests__/components/ConfigPanel/PreviewForm/PreviewForm.test.tsx +4 -3
  25. package/src/__tests__/components/ContextMenu/ContextMenu.test.tsx +24 -24
  26. package/src/__tests__/components/DragAndDrop/DragAndDrop.test.tsx +6 -5
  27. package/src/__tests__/components/ElementsTooltip/ElementsTooltip.test.tsx +7 -18
  28. package/src/__tests__/components/EmptyState/EmptyState.test.tsx +11 -11
  29. package/src/__tests__/components/ErrorCenter/ErrorCenter.test.tsx +11 -11
  30. package/src/__tests__/components/FieldContainer/FieldContainer.test.tsx +4 -4
  31. package/src/__tests__/components/Fields/AnalyticsField/AnalyticsField.test.tsx +3 -3
  32. package/src/__tests__/components/Fields/AnalyticsField/PageAnalytics/PageAnalytics.test.tsx +4 -4
  33. package/src/__tests__/components/Fields/AnalyticsField/StructuredDataAnalytics/StructuredDataAnalytics.test.tsx +3 -3
  34. package/src/__tests__/components/Fields/ArrayFieldGroup/ArrayFieldGroup.test.tsx +6 -5
  35. package/src/__tests__/components/Fields/AsyncCheckGroup/AsyncCheckGroup.test.tsx +19 -18
  36. package/src/__tests__/components/Fields/AsyncSelect/AsyncSelect.test.tsx +64 -53
  37. package/src/__tests__/components/Fields/Button/Button.test.tsx +4 -3
  38. package/src/__tests__/components/Fields/CheckField/CheckField.test.tsx +5 -5
  39. package/src/__tests__/components/Fields/CheckGroup/CheckGroup.test.tsx +10 -10
  40. package/src/__tests__/components/Fields/ColorPicker/ColorPicker.test.tsx +67 -58
  41. package/src/__tests__/components/Fields/ComponentArray/ComponentArray.test.tsx +3 -3
  42. package/src/__tests__/components/Fields/ComponentArray/MixableComponentArray/MixableComponentArray.test.tsx +45 -45
  43. package/src/__tests__/components/Fields/ComponentArray/MixableComponentArray/PasteModuleButton/PasteModuleButton.test.tsx +7 -6
  44. package/src/__tests__/components/Fields/ComponentArray/SameComponentArray/SameComponentArray.test.tsx +7 -7
  45. package/src/__tests__/components/Fields/ComponentContainer/ComponentContainer.test.tsx +223 -426
  46. package/src/__tests__/components/Fields/ConditionalField/ConditionalField.test.tsx +1 -1
  47. package/src/__tests__/components/Fields/DateField/DateField.test.tsx +6 -5
  48. package/src/__tests__/components/Fields/FieldGroup/FieldGroup.test.tsx +2 -2
  49. package/src/__tests__/components/Fields/FileField/FileField.test.tsx +17 -18
  50. package/src/__tests__/components/Fields/HeadingField/HeadingField.test.tsx +2 -2
  51. package/src/__tests__/components/Fields/HiddenField/HiddenField.test.tsx +3 -3
  52. package/src/__tests__/components/Fields/ImageField/ImageField.test.tsx +280 -263
  53. package/src/__tests__/components/Fields/IntegrationsField/IntegrationsField.test.tsx +60 -57
  54. package/src/__tests__/components/Fields/MultiCheckSelect/MultiCheckSelect.test.tsx +1 -1
  55. package/src/__tests__/components/Fields/MultiCheckSelectGroup/MultiCheckSelectGroup.test.tsx +7 -6
  56. package/src/__tests__/components/Fields/NoteField/NoteField.test.tsx +10 -9
  57. package/src/__tests__/components/Fields/NumberField/NumberField.test.tsx +16 -20
  58. package/src/__tests__/components/Fields/RadioField/RadioField.test.tsx +2 -2
  59. package/src/__tests__/components/Fields/ReferenceField/ReferenceField.test.tsx +17 -16
  60. package/src/__tests__/components/Fields/RichText/RichText.test.tsx +1 -1
  61. package/src/__tests__/components/Fields/Select/Select.test.tsx +1 -1
  62. package/src/__tests__/components/Fields/SliderField/SliderField.test.tsx +5 -4
  63. package/src/__tests__/components/Fields/SummaryButton/SummaryButton.test.tsx +2 -2
  64. package/src/__tests__/components/Fields/TagField/TagField.test.tsx +9 -9
  65. package/src/__tests__/components/Fields/TextArea/TextArea.test.tsx +17 -9
  66. package/src/__tests__/components/Fields/TextField/TextField.test.tsx +8 -8
  67. package/src/__tests__/components/Fields/TimeField/HourInput/HourInput.test.tsx +7 -6
  68. package/src/__tests__/components/Fields/TimeField/TimeField.test.tsx +4 -3
  69. package/src/__tests__/components/Fields/ToggleField/ToggleField.test.tsx +16 -24
  70. package/src/__tests__/components/Fields/Tooltip/Tooltip.test.tsx +12 -6
  71. package/src/__tests__/components/Fields/TranslateButton/TranslateButton.test.tsx +13 -13
  72. package/src/__tests__/components/Fields/UniqueCheck/UniqueCheck.test.tsx +1 -1
  73. package/src/__tests__/components/Fields/UrlField/UrlField.test.tsx +20 -19
  74. package/src/__tests__/components/Fields/VisualUniqueSelection/ImageSelection/ImageSelection.test.tsx +3 -2
  75. package/src/__tests__/components/Fields/VisualUniqueSelection/ScrollableSelection/ScrollableSelection.test.tsx +4 -3
  76. package/src/__tests__/components/Fields/VisualUniqueSelection/VisualUniqueSelection.test.tsx +30 -22
  77. package/src/__tests__/components/Fields/Wysiwyg/Wysiwyg.atoms.test.tsx +11 -11
  78. package/src/__tests__/components/Fields/Wysiwyg/Wysiwyg.config.test.tsx +103 -0
  79. package/src/__tests__/components/Fields/Wysiwyg/Wysiwyg.helpers.test.tsx +13 -14
  80. package/src/__tests__/components/Fields/Wysiwyg/Wysiwyg.test.tsx +28 -28
  81. package/src/__tests__/components/FieldsBehavior/FieldsBehavior.test.tsx +22 -16
  82. package/src/__tests__/components/FloatingMenu/FloatingMenu.test.tsx +36 -35
  83. package/src/__tests__/components/FloatingPanel/FloatingPanel.test.tsx +10 -10
  84. package/src/__tests__/components/GuardModal/GuardModal.test.tsx +1 -1
  85. package/src/__tests__/components/HeadingsPreviewModal/ErrorsBanner/ErrorItem/ErrorItem.test.tsx +11 -11
  86. package/src/__tests__/components/HeadingsPreviewModal/ErrorsBanner/ErrorsBanner.test.tsx +4 -4
  87. package/src/__tests__/components/HeadingsPreviewModal/HeadingsPreviewModal.test.tsx +15 -14
  88. package/src/__tests__/components/IconAction/IconAction.test.tsx +2 -2
  89. package/src/__tests__/components/ImageDragAndDrop/CropStep/CropStep.test.tsx +3 -3
  90. package/src/__tests__/components/ImageDragAndDrop/ImageDragAndDrop.test.tsx +7 -7
  91. package/src/__tests__/components/KeywordsPreviewModal/KeywordItem/KeywordItem.test.tsx +5 -5
  92. package/src/__tests__/components/KeywordsPreviewModal/KeywordsPreviewModal.test.tsx +14 -13
  93. package/src/__tests__/components/KeywordsPreviewModal/atoms.test.tsx +13 -13
  94. package/src/__tests__/components/LanguageMenu/LanguageMenu.test.tsx +6 -6
  95. package/src/__tests__/components/Lists/Lists.test.tsx +1 -1
  96. package/src/__tests__/components/Loader/Loader.test.tsx +1 -1
  97. package/src/__tests__/components/Login/Login.test.tsx +32 -32
  98. package/src/__tests__/components/Login/RecoveryModal/RecoveryModal.test.tsx +10 -9
  99. package/src/__tests__/components/MainWrapper/AppBar/AppBar.test.tsx +21 -21
  100. package/src/__tests__/components/MenuItem/MenuItem.test.tsx +5 -5
  101. package/src/__tests__/components/Modal/Modal.test.tsx +20 -20
  102. package/src/__tests__/components/Nav/Nav.test.tsx +2 -2
  103. package/src/__tests__/components/Notification/Notification.test.tsx +2 -2
  104. package/src/__tests__/components/Pagination/Pagination.test.tsx +13 -14
  105. package/src/__tests__/components/ProfileImage/ProfileImage.test.tsx +6 -7
  106. package/src/__tests__/components/ReorderArrows/ReorderArrows.test.tsx +4 -3
  107. package/src/__tests__/components/ResizePanel/ResizePanel.test.tsx +18 -17
  108. package/src/__tests__/components/RestrictionsModal/CurrentAccessList/CurrentAccessList.test.tsx +7 -6
  109. package/src/__tests__/components/RestrictionsModal/OptionsStep/OptionsStep.test.tsx +12 -11
  110. package/src/__tests__/components/RestrictionsModal/RestrictionsModal.test.tsx +11 -10
  111. package/src/__tests__/components/RestrictionsModal/RolesList/RolesList.test.tsx +8 -8
  112. package/src/__tests__/components/RestrictionsModal/UsersList/UsersList.test.tsx +16 -15
  113. package/src/__tests__/components/SearchField/SearchField.test.tsx +13 -13
  114. package/src/__tests__/components/SideModal/SideModal.test.tsx +175 -127
  115. package/src/__tests__/components/SubNav/SubNav.test.tsx +1 -1
  116. package/src/__tests__/components/TableFilters/CategoryFilter/CategoryFilter.test.tsx +9 -8
  117. package/src/__tests__/components/TableFilters/CustomizeFilters/CustomizeFilters.test.tsx +5 -5
  118. package/src/__tests__/components/TableFilters/DateFilter/DateFilter.test.tsx +8 -8
  119. package/src/__tests__/components/TableFilters/LiveFilter/LiveFilter.test.tsx +26 -39
  120. package/src/__tests__/components/TableFilters/NameFilter/NameFilter.test.tsx +10 -10
  121. package/src/__tests__/components/TableFilters/RoleFilter/RoleFilter.test.tsx +5 -5
  122. package/src/__tests__/components/TableFilters/SiteFilter/SiteFilter.test.tsx +10 -9
  123. package/src/__tests__/components/TableFilters/StatusFilter/StatusFilter.test.tsx +70 -45
  124. package/src/__tests__/components/TableFilters/TranslationsFilter/TranslationsFilter.test.tsx +8 -8
  125. package/src/__tests__/components/TableFilters/TypeFilter/TypeFilter.test.tsx +5 -5
  126. package/src/__tests__/components/TableFilters/UsersFilter/UsersFilter.test.tsx +8 -8
  127. package/src/__tests__/components/TableList/TableList.test.tsx +4 -4
  128. package/src/__tests__/components/Tabs/Tabs.test.tsx +73 -70
  129. package/src/__tests__/components/Tag/Tag.test.tsx +3 -3
  130. package/src/__tests__/components/Toast/Toast.test.tsx +24 -26
  131. package/src/__tests__/hooks/modals.test.tsx +4 -4
  132. package/src/__tests__/hooks/users.test.tsx +6 -5
  133. package/src/__tests__/modules/FileDrive/MarkdownFormat.test.tsx +58 -0
  134. package/src/__tests__/modules/FramePreview/FramePreview.test.tsx +56 -39
  135. package/src/__tests__/modules/FramePreview/HeadingsOverlay/HeadingsOverlay.test.tsx +11 -11
  136. package/src/__tests__/modules/Settings/Integrations/Integrations.test.tsx +2 -2
  137. package/src/__tests__/modules/Settings/Social/Social.test.tsx +4 -3
  138. package/src/__tests__/modules/Sites/Sites.test.tsx +5 -4
  139. package/src/__tests__/modules/Sites/SitesList/ListView/BulkHeader/BulkHeader.test.tsx +26 -21
  140. package/src/__tests__/modules/Sites/SitesList/SitesList.test.tsx +19 -9
  141. package/src/__tests__/modules/Sites/SitesList/WelcomeModal/DataStep/DataStep.test.tsx +6 -6
  142. package/src/__tests__/modules/Sites/SitesList/WelcomeModal/FinalStep/FinalStep.test.tsx +4 -4
  143. package/src/__tests__/modules/Sites/SitesList/WelcomeModal/ImageStep/CropView/CropView.test.tsx +3 -3
  144. package/src/__tests__/modules/Sites/SitesList/WelcomeModal/ImageStep/ImageStep.test.tsx +9 -5
  145. package/src/__tests__/modules/Sites/SitesList/WelcomeModal/ImageStep/UploadView/UploadView.test.tsx +8 -6
  146. package/src/__tests__/modules/Sites/SitesList/WelcomeModal/TimezoneStep/TimezoneStep.test.tsx +7 -7
  147. package/src/__tests__/modules/Sites/SitesList/WelcomeModal/WelcomeModal.test.tsx +1 -1
  148. package/src/__tests__/modules/Sites/SitesList/WelcomeModal/WelcomeStep/WelcomeStep.test.tsx +3 -3
  149. package/src/__tests__/modules/Users/Roles/BulkHeader/BulkHeader.test.tsx +72 -67
  150. package/src/__tests__/modules/Users/Roles/Roles.test.tsx +14 -10
  151. package/src/__tests__/modules/Users/UserCreate/SiteItem/RolesModal/RoleItem/RoleItem.test.tsx +3 -3
  152. package/src/__tests__/modules/Users/UserCreate/SiteItem/RolesModal/RolesModal.test.tsx +3 -3
  153. package/src/__tests__/modules/Users/UserCreate/SiteItem/SiteItem.test.tsx +3 -3
  154. package/src/__tests__/modules/Users/UserCreate/UserCreate.test.tsx +6 -5
  155. package/src/__tests__/modules/Users/UserList/UserItem/UserItem.test.tsx +9 -9
  156. package/src/__tests__/modules/Users/UserList/UserList.test.tsx +4 -4
  157. package/src/components/Fields/Wysiwyg/config.tsx +68 -17
  158. package/src/components/Fields/Wysiwyg/helpers.tsx +2 -0
  159. package/src/components/Fields/Wysiwyg/index.tsx +41 -10
  160. package/src/components/Flag/components/index.ts +30 -0
  161. package/src/components/Flag/index.tsx +3 -5
  162. package/src/components/Icon/components/index.ts +229 -0
  163. package/src/components/Icon/index.tsx +3 -7
  164. package/src/components/ResizePanel/index.tsx +7 -2
  165. package/src/constants/index.ts +1 -1
  166. package/src/helpers/files.tsx +2 -0
  167. package/src/modules/FileDrive/FileFilters/Type/index.tsx +1 -0
  168. package/tsconfig.json +1 -1
  169. package/config/jest/cssTransform.js +0 -14
  170. package/config/jest/fileMock.js +0 -1
  171. package/config/jest/fileTransform.js +0 -40
  172. package/config/jest/reactEasyCropMock.js +0 -15
  173. package/config/jest/reactTimezoneMock.js +0 -13
  174. package/config/jest/setup.js +0 -31
  175. package/config/jest/styleMock.js +0 -1
  176. /package/config/{jest/test-utils.js → tests/test-utils.jsx} +0 -0
  177. /package/src/components/Flag/components/{Ca_ES.js → Ca_ES.jsx} +0 -0
  178. /package/src/components/Flag/components/{De_DE.js → De_DE.jsx} +0 -0
  179. /package/src/components/Flag/components/{En_GB.js → En_GB.jsx} +0 -0
  180. /package/src/components/Flag/components/{Es_ES.js → Es_ES.jsx} +0 -0
  181. /package/src/components/Flag/components/{Eu_ES.js → Eu_ES.jsx} +0 -0
  182. /package/src/components/Flag/components/{Fr_FR.js → Fr_FR.jsx} +0 -0
  183. /package/src/components/Flag/components/{It_IT.js → It_IT.jsx} +0 -0
  184. /package/src/components/Flag/components/{Pt_PT.js → Pt_PT.jsx} +0 -0
  185. /package/src/components/Icon/components/{Active.js → Active.jsx} +0 -0
  186. /package/src/components/Icon/components/{Add.js → Add.jsx} +0 -0
  187. /package/src/components/Icon/components/{AddCircle.js → AddCircle.jsx} +0 -0
  188. /package/src/components/Icon/components/{Alert.js → Alert.jsx} +0 -0
  189. /package/src/components/Icon/components/{AlignLeft.js → AlignLeft.jsx} +0 -0
  190. /package/src/components/Icon/components/{Back.js → Back.jsx} +0 -0
  191. /package/src/components/Icon/components/{BulletList.js → BulletList.jsx} +0 -0
  192. /package/src/components/Icon/components/{Button.js → Button.jsx} +0 -0
  193. /package/src/components/Icon/components/{Calendar.js → Calendar.jsx} +0 -0
  194. /package/src/components/Icon/components/{CancelEvent.js → CancelEvent.jsx} +0 -0
  195. /package/src/components/Icon/components/{Category.js → Category.jsx} +0 -0
  196. /package/src/components/Icon/components/{Change.js → Change.jsx} +0 -0
  197. /package/src/components/Icon/components/{Close.js → Close.jsx} +0 -0
  198. /package/src/components/Icon/components/{ClosePanel.js → ClosePanel.jsx} +0 -0
  199. /package/src/components/Icon/components/{CodeBody.js → CodeBody.jsx} +0 -0
  200. /package/src/components/Icon/components/{CodeHead.js → CodeHead.jsx} +0 -0
  201. /package/src/components/Icon/components/{CodeHeadBody.js → CodeHeadBody.jsx} +0 -0
  202. /package/src/components/Icon/components/{Collapsed.js → Collapsed.jsx} +0 -0
  203. /package/src/components/Icon/components/{ColorPicker.js → ColorPicker.jsx} +0 -0
  204. /package/src/components/Icon/components/{Compose.js → Compose.jsx} +0 -0
  205. /package/src/components/Icon/components/{Copy.js → Copy.jsx} +0 -0
  206. /package/src/components/Icon/components/{Copy2.js → Copy2.jsx} +0 -0
  207. /package/src/components/Icon/components/{Data.js → Data.jsx} +0 -0
  208. /package/src/components/Icon/components/{DataAdd.js → DataAdd.jsx} +0 -0
  209. /package/src/components/Icon/components/{Deactivate.js → Deactivate.jsx} +0 -0
  210. /package/src/components/Icon/components/{Delete.js → Delete.jsx} +0 -0
  211. /package/src/components/Icon/components/{Desktop.js → Desktop.jsx} +0 -0
  212. /package/src/components/Icon/components/{Disabled.js → Disabled.jsx} +0 -0
  213. /package/src/components/Icon/components/{Done.js → Done.jsx} +0 -0
  214. /package/src/components/Icon/components/{DownArrow.js → DownArrow.jsx} +0 -0
  215. /package/src/components/Icon/components/{Download.js → Download.jsx} +0 -0
  216. /package/src/components/Icon/components/{Drag.js → Drag.jsx} +0 -0
  217. /package/src/components/Icon/components/{Duplicate.js → Duplicate.jsx} +0 -0
  218. /package/src/components/Icon/components/{Edit.js → Edit.jsx} +0 -0
  219. /package/src/components/Icon/components/{Empty.js → Empty.jsx} +0 -0
  220. /package/src/components/Icon/components/{EmptyCheck.js → EmptyCheck.jsx} +0 -0
  221. /package/src/components/Icon/components/{Extend.js → Extend.jsx} +0 -0
  222. /package/src/components/Icon/components/{File.js → File.jsx} +0 -0
  223. /package/src/components/Icon/components/{Filter.js → Filter.jsx} +0 -0
  224. /package/src/components/Icon/components/{Form.js → Form.jsx} +0 -0
  225. /package/src/components/Icon/components/{FullArrowDown.js → FullArrowDown.jsx} +0 -0
  226. /package/src/components/Icon/components/{FullArrowLeft.js → FullArrowLeft.jsx} +0 -0
  227. /package/src/components/Icon/components/{FullArrowRight.js → FullArrowRight.jsx} +0 -0
  228. /package/src/components/Icon/components/{FullArrowUp.js → FullArrowUp.jsx} +0 -0
  229. /package/src/components/Icon/components/{Grid.js → Grid.jsx} +0 -0
  230. /package/src/components/Icon/components/{Grid2.js → Grid2.jsx} +0 -0
  231. /package/src/components/Icon/components/{GriddoLogo.js → GriddoLogo.jsx} +0 -0
  232. /package/src/components/Icon/components/{HeroCard.js → HeroCard.jsx} +0 -0
  233. /package/src/components/Icon/components/{Hide.js → Hide.jsx} +0 -0
  234. /package/src/components/Icon/components/{History.js → History.jsx} +0 -0
  235. /package/src/components/Icon/components/{Home.js → Home.jsx} +0 -0
  236. /package/src/components/Icon/components/{Ia.js → Ia.jsx} +0 -0
  237. /package/src/components/Icon/components/{Image.js → Image.jsx} +0 -0
  238. /package/src/components/Icon/components/{Info.js → Info.jsx} +0 -0
  239. /package/src/components/Icon/components/{Laptop.js → Laptop.jsx} +0 -0
  240. /package/src/components/Icon/components/{LeftArrow.js → LeftArrow.jsx} +0 -0
  241. /package/src/components/Icon/components/{Link.js → Link.jsx} +0 -0
  242. /package/src/components/Icon/components/{Lock.js → Lock.jsx} +0 -0
  243. /package/src/components/Icon/components/{Log.js → Log.jsx} +0 -0
  244. /package/src/components/Icon/components/{Map.js → Map.jsx} +0 -0
  245. /package/src/components/Icon/components/{Menu.js → Menu.jsx} +0 -0
  246. /package/src/components/Icon/components/{Microsoft.js → Microsoft.jsx} +0 -0
  247. /package/src/components/Icon/components/{Modified.js → Modified.jsx} +0 -0
  248. /package/src/components/Icon/components/{Modules.js → Modules.jsx} +0 -0
  249. /package/src/components/Icon/components/{More.js → More.jsx} +0 -0
  250. /package/src/components/Icon/components/{NewFolder.js → NewFolder.jsx} +0 -0
  251. /package/src/components/Icon/components/{Offline.js → Offline.jsx} +0 -0
  252. /package/src/components/Icon/components/{OfflinePending.js → OfflinePending.jsx} +0 -0
  253. /package/src/components/Icon/components/{OpenOutside.js → OpenOutside.jsx} +0 -0
  254. /package/src/components/Icon/components/{OpenPanel.js → OpenPanel.jsx} +0 -0
  255. /package/src/components/Icon/components/{OutOfSection.js → OutOfSection.jsx} +0 -0
  256. /package/src/components/Icon/components/{Page.js → Page.jsx} +0 -0
  257. /package/src/components/Icon/components/{Party.js → Party.jsx} +0 -0
  258. /package/src/components/Icon/components/{Paste.js → Paste.jsx} +0 -0
  259. /package/src/components/Icon/components/{Phone.js → Phone.jsx} +0 -0
  260. /package/src/components/Icon/components/{PhotoLibrary.js → PhotoLibrary.jsx} +0 -0
  261. /package/src/components/Icon/components/{Power.js → Power.jsx} +0 -0
  262. /package/src/components/Icon/components/{Preview.js → Preview.jsx} +0 -0
  263. /package/src/components/Icon/components/{Project.js → Project.jsx} +0 -0
  264. /package/src/components/Icon/components/{QrCode.js → QrCode.jsx} +0 -0
  265. /package/src/components/Icon/components/{Question.js → Question.jsx} +0 -0
  266. /package/src/components/Icon/components/{Refresh.js → Refresh.jsx} +0 -0
  267. /package/src/components/Icon/components/{Republish.js → Republish.jsx} +0 -0
  268. /package/src/components/Icon/components/{RightArrow.js → RightArrow.jsx} +0 -0
  269. /package/src/components/Icon/components/{Scheduled.js → Scheduled.jsx} +0 -0
  270. /package/src/components/Icon/components/{Search.js → Search.jsx} +0 -0
  271. /package/src/components/Icon/components/{SendEmail.js → SendEmail.jsx} +0 -0
  272. /package/src/components/Icon/components/{Settings.js → Settings.jsx} +0 -0
  273. /package/src/components/Icon/components/{Share.js → Share.jsx} +0 -0
  274. /package/src/components/Icon/components/{Subsection.js → Subsection.jsx} +0 -0
  275. /package/src/components/Icon/components/{Success.js → Success.jsx} +0 -0
  276. /package/src/components/Icon/components/{SuccessSolid.js → SuccessSolid.jsx} +0 -0
  277. /package/src/components/Icon/components/{Sync.js → Sync.jsx} +0 -0
  278. /package/src/components/Icon/components/{Tablet.js → Tablet.jsx} +0 -0
  279. /package/src/components/Icon/components/{Translate.js → Translate.jsx} +0 -0
  280. /package/src/components/Icon/components/{Unlink.js → Unlink.jsx} +0 -0
  281. /package/src/components/Icon/components/{UpArrow.js → UpArrow.jsx} +0 -0
  282. /package/src/components/Icon/components/{UploadFile.js → UploadFile.jsx} +0 -0
  283. /package/src/components/Icon/components/{UploadPending.js → UploadPending.jsx} +0 -0
  284. /package/src/components/Icon/components/{UrlLink.js → UrlLink.jsx} +0 -0
  285. /package/src/components/Icon/components/{User.js → User.jsx} +0 -0
  286. /package/src/components/Icon/components/{Users.js → Users.jsx} +0 -0
  287. /package/src/components/Icon/components/{Video.js → Video.jsx} +0 -0
  288. /package/src/components/Icon/components/{View.js → View.jsx} +0 -0
  289. /package/src/components/Icon/components/{Warning.js → Warning.jsx} +0 -0
  290. /package/src/components/Icon/components/{Web.js → Web.jsx} +0 -0
  291. /package/src/components/Icon/components/{Working.js → Working.jsx} +0 -0
  292. /package/src/components/Loader/components/{Circle.js → Circle.jsx} +0 -0
  293. /package/src/components/Loader/components/{Dots.js → Dots.jsx} +0 -0
  294. /package/src/components/Loader/components/{SmallCircle.js → SmallCircle.jsx} +0 -0
@@ -1,3 +1,4 @@
1
+ import type { Mock } from "vitest";
1
2
  import { parseTheme } from "@ax/helpers";
2
3
  import * as hooks from "@ax/hooks";
3
4
  import FramePreview from "@ax/modules/FramePreview";
@@ -9,24 +10,24 @@ import configureStore from "redux-mock-store";
9
10
  import thunk from "redux-thunk";
10
11
  import { ThemeProvider } from "styled-components";
11
12
 
12
- import { act, cleanup, render, screen } from "../../../../config/jest/test-utils";
13
+ import { act, cleanup, render, screen } from "../../../../config/tests/test-utils";
13
14
 
14
15
  // Capture BrowserContent props so individual callback functions can be tested
15
16
  const capturedBrowserContentProps: { current: Record<string, any> | null } = { current: null };
16
17
 
17
- jest.mock("@ax/hooks", () => ({
18
- ...jest.requireActual("@ax/hooks"),
19
- useURLSearchParam: jest.fn().mockReturnValue(null),
20
- useOnMessageReceivedFromOutside: jest.fn(),
21
- useToast: jest.fn().mockReturnValue({
18
+ vi.mock("@ax/hooks", async () => ({
19
+ ...(await vi.importActual("@ax/hooks")),
20
+ useURLSearchParam: vi.fn().mockReturnValue(null),
21
+ useOnMessageReceivedFromOutside: vi.fn(),
22
+ useToast: vi.fn().mockReturnValue({
22
23
  isVisible: false,
23
- toggleToast: jest.fn(),
24
- setIsVisible: jest.fn(),
24
+ toggleToast: vi.fn(),
25
+ setIsVisible: vi.fn(),
25
26
  state: "",
26
27
  }),
27
28
  }));
28
29
 
29
- jest.mock("@ax/components", () => {
30
+ vi.mock("@ax/components", async () => {
30
31
  const React = require("react");
31
32
  return {
32
33
  BrowserContent: (props: any) => {
@@ -38,20 +39,20 @@ jest.mock("@ax/components", () => {
38
39
  };
39
40
  });
40
41
 
41
- jest.mock("@ax/modules/FramePreview/utils", () => ({
42
- observeAndAddIdsToHeadings: jest.fn().mockReturnValue(jest.fn()),
43
- observeAndHighlightKeywords: jest.fn().mockReturnValue(jest.fn()),
42
+ vi.mock("@ax/modules/FramePreview/utils", async () => ({
43
+ observeAndAddIdsToHeadings: vi.fn().mockReturnValue(vi.fn()),
44
+ observeAndHighlightKeywords: vi.fn().mockReturnValue(vi.fn()),
44
45
  }));
45
46
 
46
- jest.mock("@ax/forms", () => ({
47
- findByEditorID: jest.fn().mockReturnValue({
47
+ vi.mock("@ax/forms", async () => ({
48
+ findByEditorID: vi.fn().mockReturnValue({
48
49
  element: { component: "Page", editorID: 5 },
49
50
  parent: { parentEditorID: 0 },
50
51
  }),
51
52
  }));
52
53
 
53
54
  // Mock action creators as plain functions to avoid thunk side-effects
54
- jest.mock("@ax/containers/PageEditor", () => ({
55
+ vi.mock("@ax/containers/PageEditor", async () => ({
55
56
  pageEditorActions: {
56
57
  setSelectedContent: (id: number) => ({ type: "SET_SELECTED_CONTENT", payload: id }),
57
58
  setEditorContent: (content: any) => ({ type: "SET_EDITOR_CONTENT", payload: content }),
@@ -61,7 +62,7 @@ jest.mock("@ax/containers/PageEditor", () => ({
61
62
  },
62
63
  }));
63
64
 
64
- jest.mock("@ax/containers/Forms", () => ({
65
+ vi.mock("@ax/containers/Forms", async () => ({
65
66
  formsActions: {
66
67
  setSelectedContent: (id: number) => ({ type: "SET_FORM_SELECTED_CONTENT", payload: id }),
67
68
  setFormContent: (content: any) => ({ type: "SET_FORM_CONTENT", payload: content }),
@@ -99,7 +100,23 @@ const renderFramePreview = async (store = buildStore()) => {
99
100
  afterEach(() => {
100
101
  cleanup();
101
102
  capturedBrowserContentProps.current = null;
102
- jest.restoreAllMocks();
103
+ vi.restoreAllMocks();
104
+ });
105
+
106
+ // Los valores por defecto se definen dentro de las factorías de `vi.mock`, que
107
+ // solo corren al cargar el módulo, mientras que el `restoreAllMocks` de arriba
108
+ // los borra tras cada test. Los tests que no fijan los suyos dependían de ser
109
+ // los primeros; aquí se rehacen antes de cada uno.
110
+ beforeEach(() => {
111
+ (hooks.useURLSearchParam as Mock).mockReturnValue(null);
112
+ (hooks.useToast as Mock).mockReturnValue({
113
+ isVisible: false,
114
+ toggleToast: vi.fn(),
115
+ setIsVisible: vi.fn(),
116
+ state: "",
117
+ });
118
+ (frameUtils.observeAndAddIdsToHeadings as Mock).mockReturnValue(vi.fn());
119
+ (frameUtils.observeAndHighlightKeywords as Mock).mockReturnValue(vi.fn());
103
120
  });
104
121
 
105
122
  describe("FramePreview rendering", () => {
@@ -122,7 +139,7 @@ describe("FramePreview rendering", () => {
122
139
  });
123
140
 
124
141
  it("should render HeadingsOverlay when type is 'headings'", async () => {
125
- (hooks.useURLSearchParam as jest.Mock).mockImplementation((param: string) => {
142
+ (hooks.useURLSearchParam as Mock).mockImplementation((param: string) => {
126
143
  if (param === "type") return "headings";
127
144
  return null;
128
145
  });
@@ -135,7 +152,7 @@ describe("FramePreview rendering", () => {
135
152
 
136
153
  describe("FramePreview effects", () => {
137
154
  it("should post iframe-mousemove message to parent on window mousemove", async () => {
138
- const postMessageSpy = jest.spyOn(window, "postMessage");
155
+ const postMessageSpy = vi.spyOn(window, "postMessage");
139
156
 
140
157
  await renderFramePreview();
141
158
 
@@ -150,7 +167,7 @@ describe("FramePreview effects", () => {
150
167
  });
151
168
 
152
169
  it("should set selectedID to '0' in localStorage when disabled param is true", async () => {
153
- (hooks.useURLSearchParam as jest.Mock).mockImplementation((param: string) => {
170
+ (hooks.useURLSearchParam as Mock).mockImplementation((param: string) => {
154
171
  if (param === "disabled") return "true";
155
172
  return null;
156
173
  });
@@ -161,7 +178,7 @@ describe("FramePreview effects", () => {
161
178
  });
162
179
 
163
180
  it("should call observeAndAddIdsToHeadings when type is 'headings'", async () => {
164
- (hooks.useURLSearchParam as jest.Mock).mockImplementation((param: string) => {
181
+ (hooks.useURLSearchParam as Mock).mockImplementation((param: string) => {
165
182
  if (param === "type") return "headings";
166
183
  return null;
167
184
  });
@@ -172,7 +189,7 @@ describe("FramePreview effects", () => {
172
189
  });
173
190
 
174
191
  it("should call observeAndHighlightKeywords when type is 'keywords'", async () => {
175
- (hooks.useURLSearchParam as jest.Mock).mockImplementation((param: string) => {
192
+ (hooks.useURLSearchParam as Mock).mockImplementation((param: string) => {
176
193
  if (param === "type") return "keywords";
177
194
  return null;
178
195
  });
@@ -185,7 +202,7 @@ describe("FramePreview effects", () => {
185
202
 
186
203
  describe("FramePreview module actions", () => {
187
204
  it("should post module-delete and dispatch deleteModule when deleteModuleAction is called", async () => {
188
- const postMessageSpy = jest.spyOn(window, "postMessage");
205
+ const postMessageSpy = vi.spyOn(window, "postMessage");
189
206
 
190
207
  await renderFramePreview();
191
208
 
@@ -195,7 +212,7 @@ describe("FramePreview module actions", () => {
195
212
  });
196
213
 
197
214
  it("should post module-duplicate when duplicateModuleAction is called", async () => {
198
- const postMessageSpy = jest.spyOn(window, "postMessage");
215
+ const postMessageSpy = vi.spyOn(window, "postMessage");
199
216
 
200
217
  await renderFramePreview();
201
218
 
@@ -205,14 +222,14 @@ describe("FramePreview module actions", () => {
205
222
  });
206
223
 
207
224
  it("should post module-copy and call toggleToast when copyModuleAction is called", async () => {
208
- const toggleToastMock = jest.fn();
209
- (hooks.useToast as jest.Mock).mockReturnValue({
225
+ const toggleToastMock = vi.fn();
226
+ (hooks.useToast as Mock).mockReturnValue({
210
227
  isVisible: false,
211
228
  toggleToast: toggleToastMock,
212
- setIsVisible: jest.fn(),
229
+ setIsVisible: vi.fn(),
213
230
  state: "",
214
231
  });
215
- const postMessageSpy = jest.spyOn(window, "postMessage");
232
+ const postMessageSpy = vi.spyOn(window, "postMessage");
216
233
 
217
234
  await renderFramePreview();
218
235
 
@@ -225,19 +242,19 @@ describe("FramePreview module actions", () => {
225
242
 
226
243
  describe("FramePreview editor ID selection", () => {
227
244
  it("should post module-click when selectEditorID is called", async () => {
228
- const postMessageSpy = jest.spyOn(window, "postMessage");
245
+ const postMessageSpy = vi.spyOn(window, "postMessage");
229
246
 
230
247
  await renderFramePreview();
231
248
 
232
249
  const { selectEditorID } = capturedBrowserContentProps.current!;
233
- const mockEvent = { stopPropagation: jest.fn() };
250
+ const mockEvent = { stopPropagation: vi.fn() };
234
251
  selectEditorID({ editorID: 1, component: "Page", type: "content", parentEditorID: 0 }, null, mockEvent);
235
252
 
236
253
  expect(postMessageSpy).toHaveBeenCalledWith({ type: "module-click", message: 1 }, "*");
237
254
  });
238
255
 
239
256
  it("should post module-scroll when selectHoverEditorID is called and parent meets condition", async () => {
240
- const postMessageSpy = jest.spyOn(window, "postMessage");
257
+ const postMessageSpy = vi.spyOn(window, "postMessage");
241
258
 
242
259
  await renderFramePreview();
243
260
 
@@ -248,16 +265,16 @@ describe("FramePreview editor ID selection", () => {
248
265
  });
249
266
 
250
267
  it("should not post module-click when preview mode is active", async () => {
251
- (hooks.useURLSearchParam as jest.Mock).mockImplementation((param: string) => {
268
+ (hooks.useURLSearchParam as Mock).mockImplementation((param: string) => {
252
269
  if (param === "preview") return "true";
253
270
  return null;
254
271
  });
255
- const postMessageSpy = jest.spyOn(window, "postMessage");
272
+ const postMessageSpy = vi.spyOn(window, "postMessage");
256
273
 
257
274
  await renderFramePreview();
258
275
 
259
276
  const { selectEditorID } = capturedBrowserContentProps.current!;
260
- const mockEvent = { stopPropagation: jest.fn() };
277
+ const mockEvent = { stopPropagation: vi.fn() };
261
278
  selectEditorID({ editorID: 1, component: "Page", type: "content", parentEditorID: 0 }, null, mockEvent);
262
279
 
263
280
  expect(postMessageSpy).not.toHaveBeenCalledWith(expect.objectContaining({ type: "module-click" }), "*");
@@ -266,10 +283,10 @@ describe("FramePreview editor ID selection", () => {
266
283
 
267
284
  describe("FramePreview content modes", () => {
268
285
  it("should render Toast when isVisible is true", async () => {
269
- (hooks.useToast as jest.Mock).mockReturnValueOnce({
286
+ (hooks.useToast as Mock).mockReturnValueOnce({
270
287
  isVisible: true,
271
- toggleToast: jest.fn(),
272
- setIsVisible: jest.fn(),
288
+ toggleToast: vi.fn(),
289
+ setIsVisible: vi.fn(),
273
290
  state: "1 module copied to clipboard",
274
291
  });
275
292
 
@@ -279,7 +296,7 @@ describe("FramePreview content modes", () => {
279
296
  });
280
297
 
281
298
  it("should use 'preview' renderer when preview param is true", async () => {
282
- (hooks.useURLSearchParam as jest.Mock).mockImplementation((param: string) => {
299
+ (hooks.useURLSearchParam as Mock).mockImplementation((param: string) => {
283
300
  if (param === "preview") return "true";
284
301
  return null;
285
302
  });
@@ -290,7 +307,7 @@ describe("FramePreview content modes", () => {
290
307
  });
291
308
 
292
309
  it("should pass filtered keywords to observeAndHighlightKeywords when keywordFilter param is set", async () => {
293
- (hooks.useURLSearchParam as jest.Mock).mockImplementation((param: string) => {
310
+ (hooks.useURLSearchParam as Mock).mockImplementation((param: string) => {
294
311
  if (param === "type") return "keywords";
295
312
  if (param === "keywordFilter") return "seo";
296
313
  return null;
@@ -13,7 +13,7 @@ beforeEach(() => {
13
13
  let rafId = 0;
14
14
  let processingRaf = false;
15
15
 
16
- jest.spyOn(window, "requestAnimationFrame").mockImplementation((cb) => {
16
+ vi.spyOn(window, "requestAnimationFrame").mockImplementation((cb) => {
17
17
  // Avoid infinite recursion by checking if we're already processing
18
18
  if (!processingRaf) {
19
19
  processingRaf = true;
@@ -26,13 +26,13 @@ beforeEach(() => {
26
26
  return ++rafId;
27
27
  });
28
28
 
29
- jest.spyOn(window, "cancelAnimationFrame").mockImplementation(() => {});
29
+ vi.spyOn(window, "cancelAnimationFrame").mockImplementation(() => {});
30
30
  });
31
31
 
32
32
  afterEach(() => {
33
33
  cleanup();
34
34
  for (const el of document.querySelectorAll("h1, h2, h3, h4, h5, h6")) el.remove();
35
- jest.restoreAllMocks();
35
+ vi.restoreAllMocks();
36
36
  });
37
37
 
38
38
  describe("HeadingsOverlay rendering", () => {
@@ -47,7 +47,7 @@ describe("HeadingsOverlay rendering", () => {
47
47
  const h1 = document.createElement("h1");
48
48
  h1.dataset.griddoid = "heading-1";
49
49
  document.body.appendChild(h1);
50
- jest.spyOn(h1, "getBoundingClientRect").mockReturnValue({
50
+ vi.spyOn(h1, "getBoundingClientRect").mockReturnValue({
51
51
  top: 10,
52
52
  left: 10,
53
53
  width: 200,
@@ -70,7 +70,7 @@ describe("HeadingsOverlay rendering", () => {
70
70
  const h2 = document.createElement("h2");
71
71
  h2.dataset.griddoid = "heading-1";
72
72
  document.body.appendChild(h2);
73
- jest.spyOn(h2, "getBoundingClientRect").mockReturnValue({
73
+ vi.spyOn(h2, "getBoundingClientRect").mockReturnValue({
74
74
  top: 10,
75
75
  left: 10,
76
76
  width: 200,
@@ -103,7 +103,7 @@ describe("HeadingsOverlay rendering", () => {
103
103
  const h1 = document.createElement("h1");
104
104
  h1.dataset.griddoid = "heading-1";
105
105
  document.body.appendChild(h1);
106
- jest.spyOn(h1, "getBoundingClientRect").mockReturnValue({
106
+ vi.spyOn(h1, "getBoundingClientRect").mockReturnValue({
107
107
  top: 10,
108
108
  left: 10,
109
109
  width: 200,
@@ -116,7 +116,7 @@ describe("HeadingsOverlay rendering", () => {
116
116
  } as DOMRect);
117
117
 
118
118
  const originalGetComputedStyle = window.getComputedStyle.bind(window);
119
- jest.spyOn(window, "getComputedStyle").mockImplementation((el) => {
119
+ vi.spyOn(window, "getComputedStyle").mockImplementation((el) => {
120
120
  if (el === h1) return { display: "none", visibility: "", opacity: "1" } as CSSStyleDeclaration;
121
121
  return originalGetComputedStyle(el);
122
122
  });
@@ -132,7 +132,7 @@ describe("HeadingsOverlay rendering", () => {
132
132
  const h1 = document.createElement("h1");
133
133
  h1.dataset.griddoid = "heading-1";
134
134
  document.body.appendChild(h1);
135
- jest.spyOn(h1, "getBoundingClientRect").mockReturnValue({
135
+ vi.spyOn(h1, "getBoundingClientRect").mockReturnValue({
136
136
  top: 10,
137
137
  left: 10,
138
138
  width: 200,
@@ -145,7 +145,7 @@ describe("HeadingsOverlay rendering", () => {
145
145
  } as DOMRect);
146
146
 
147
147
  const originalGetComputedStyle = window.getComputedStyle.bind(window);
148
- jest.spyOn(window, "getComputedStyle").mockImplementation((el) => {
148
+ vi.spyOn(window, "getComputedStyle").mockImplementation((el) => {
149
149
  if (el === h1) return { display: "block", visibility: "visible", opacity: "0" } as CSSStyleDeclaration;
150
150
  return originalGetComputedStyle(el);
151
151
  });
@@ -161,7 +161,7 @@ describe("HeadingsOverlay rendering", () => {
161
161
  const h1 = document.createElement("h1");
162
162
  h1.dataset.griddoid = "heading-1";
163
163
  document.body.appendChild(h1);
164
- jest.spyOn(h1, "getBoundingClientRect").mockReturnValue({
164
+ vi.spyOn(h1, "getBoundingClientRect").mockReturnValue({
165
165
  top: 10,
166
166
  left: 10,
167
167
  width: 200,
@@ -176,7 +176,7 @@ describe("HeadingsOverlay rendering", () => {
176
176
  const h2 = document.createElement("h2");
177
177
  h2.dataset.griddoid = "heading-2";
178
178
  document.body.appendChild(h2);
179
- jest.spyOn(h2, "getBoundingClientRect").mockReturnValue({
179
+ vi.spyOn(h2, "getBoundingClientRect").mockReturnValue({
180
180
  top: 60,
181
181
  left: 10,
182
182
  width: 200,
@@ -1,7 +1,7 @@
1
1
  import React from "react";
2
2
  import { ThemeProvider } from "styled-components";
3
3
  import { parseTheme } from "@ax/helpers";
4
- import { mock } from "jest-mock-extended";
4
+ import { mock } from "vitest-mock-extended";
5
5
  import configureStore from "redux-mock-store";
6
6
  import thunk from "redux-thunk";
7
7
  import { Router } from "react-router-dom";
@@ -9,7 +9,7 @@ import { Router } from "react-router-dom";
9
9
  import history from "@ax/routes/history";
10
10
  import globalTheme from "@ax/themes/theme.json";
11
11
  import Integrations, { IIntegrationsProps } from "@ax/modules/Settings/Integrations";
12
- import { render, cleanup, screen, act } from "../../../../../config/jest/test-utils";
12
+ import { render, cleanup, screen, act } from "../../../../../config/tests/test-utils";
13
13
 
14
14
  afterEach(cleanup);
15
15
 
@@ -1,3 +1,4 @@
1
+ import type { MockedFunction } from "vitest";
1
2
  import axios from "axios";
2
3
  import { Router } from "react-router-dom";
3
4
 
@@ -10,10 +11,10 @@ import Social from "@ax/modules/Settings/Social";
10
11
  import history from "@ax/routes/history";
11
12
  import globalTheme from "@ax/themes/theme.json";
12
13
 
13
- import { act, cleanup, render, screen } from "../../../../../config/jest/test-utils";
14
+ import { act, cleanup, render, screen } from "../../../../../config/tests/test-utils";
14
15
 
15
- jest.mock("axios");
16
- const mockedAxios = axios as jest.MockedFunction<typeof axios>;
16
+ vi.mock("axios");
17
+ const mockedAxios = axios as MockedFunction<typeof axios>;
17
18
 
18
19
  beforeEach(() => {
19
20
  mockedAxios.mockResolvedValue({ status: 200, data: {}, statusText: "OK", headers: {}, config: {} as any });
@@ -1,3 +1,4 @@
1
+ import type { MockedFunction } from "vitest";
1
2
  import { Router } from "react-router-dom";
2
3
 
3
4
  import { parseTheme } from "@ax/helpers";
@@ -6,18 +7,18 @@ import { history } from "@ax/routes";
6
7
  import globalTheme from "@ax/themes/theme.json";
7
8
 
8
9
  import axios from "axios";
9
- import { mock } from "jest-mock-extended";
10
+ import { mock } from "vitest-mock-extended";
10
11
  import configureStore from "redux-mock-store";
11
12
  import thunk from "redux-thunk";
12
13
  import { ThemeProvider } from "styled-components";
13
14
 
14
- import { act, cleanup, render, screen } from "../../../../config/jest/test-utils";
15
+ import { act, cleanup, render, screen } from "../../../../config/tests/test-utils";
15
16
  import { structuredDataResponse } from "./../../../__mocks__/axios/SitesList";
16
17
  import { sitesDataMock, userDataMock } from "./../../../__mocks__/store/SitesList";
17
18
 
18
19
  afterEach(cleanup);
19
- jest.mock("axios");
20
- const mockedAxios = axios as jest.MockedFunction<typeof axios>;
20
+ vi.mock("axios");
21
+ const mockedAxios = axios as MockedFunction<typeof axios>;
21
22
 
22
23
  const mockStore = configureStore([thunk]);
23
24
  const defaultProps = mock<ISitesProps>();
@@ -6,39 +6,46 @@ import BulkHeader from "@ax/modules/Sites/SitesList/ListView/BulkHeader";
6
6
  import globalTheme from "@ax/themes/theme.json";
7
7
 
8
8
  import { act, cleanup, screen } from "@testing-library/react";
9
- import { mock } from "jest-mock-extended";
9
+ import { mock } from "vitest-mock-extended";
10
10
  import configureStore from "redux-mock-store";
11
11
  import thunk from "redux-thunk";
12
12
  import { ThemeProvider } from "styled-components";
13
13
 
14
- import { render } from "../../../../../../../config/jest/test-utils";
14
+ import { render } from "../../../../../../../config/tests/test-utils";
15
15
  import { defaultStore } from "./../../../../../../__mocks__/store/GenericStore";
16
16
 
17
17
  afterEach(cleanup);
18
18
 
19
19
  const store = configureStore([thunk])(defaultStore);
20
- const defaultProps = mock<IBulkHeaderProps>();
20
+ // El escenario base es el que el primer test dejaba en el objeto compartido y
21
+ // del que el segundo dependía sin declararlo.
22
+ const makeProps = (overrides: Partial<IBulkHeaderProps> = {}): IBulkHeaderProps =>
23
+ Object.assign(
24
+ mock<IBulkHeaderProps>(),
25
+ {
26
+ showBulk: false,
27
+ checkState: { isAllSelected: false, indeterminate: false },
28
+ filterValues: {
29
+ order: [{ value: "lastAccess-desc", label: "lastAccess-desc" }],
30
+ liveStatus: [{ value: "all", label: "All" }],
31
+ },
32
+ sortedListStatus: {
33
+ isAscending: false,
34
+ sortedByTitle: false,
35
+ sortedByLastAccess: true,
36
+ sortedByDateCreated: false,
37
+ },
38
+ totalItems: 22,
39
+ },
40
+ overrides,
41
+ );
21
42
 
22
43
  describe("BulkHeader component rendering", () => {
23
44
  it("should render table header", async () => {
24
- defaultProps.showBulk = false;
25
- defaultProps.checkState = { isAllSelected: false, indeterminate: false };
26
- defaultProps.filterValues = {
27
- order: [{ value: "lastAccess-desc", label: "lastAccess-desc" }],
28
- liveStatus: [{ value: "all", label: "All" }],
29
- };
30
- defaultProps.sortedListStatus = {
31
- isAscending: false,
32
- sortedByTitle: false,
33
- sortedByLastAccess: true,
34
- sortedByDateCreated: false,
35
- };
36
- defaultProps.totalItems = 22;
37
-
38
45
  await act(async () => {
39
46
  render(
40
47
  <ThemeProvider theme={parseTheme(globalTheme)}>
41
- <BulkHeader {...defaultProps} />
48
+ <BulkHeader {...makeProps({ showBulk: false })} />
42
49
  </ThemeProvider>,
43
50
  { store },
44
51
  );
@@ -48,12 +55,10 @@ describe("BulkHeader component rendering", () => {
48
55
  });
49
56
 
50
57
  it("should render bulk header", async () => {
51
- defaultProps.showBulk = true;
52
-
53
58
  await act(async () => {
54
59
  render(
55
60
  <ThemeProvider theme={parseTheme(globalTheme)}>
56
- <BulkHeader {...defaultProps} />
61
+ <BulkHeader {...makeProps({ showBulk: true })} />
57
62
  </ThemeProvider>,
58
63
  { store },
59
64
  );
@@ -1,3 +1,4 @@
1
+ import type { MockedFunction } from "vitest";
1
2
  import { Router } from "react-router-dom";
2
3
 
3
4
  import { parseTheme } from "@ax/helpers";
@@ -6,12 +7,12 @@ import { history } from "@ax/routes";
6
7
  import globalTheme from "@ax/themes/theme.json";
7
8
 
8
9
  import axios from "axios";
9
- import { mock } from "jest-mock-extended";
10
+ import { mock } from "vitest-mock-extended";
10
11
  import configureStore from "redux-mock-store";
11
12
  import thunk from "redux-thunk";
12
13
  import { ThemeProvider } from "styled-components";
13
14
 
14
- import { act, cleanup, fireEvent, render, screen, waitFor } from "./../../../../../config/jest/test-utils";
15
+ import { act, cleanup, fireEvent, render, screen, waitFor, within } from "./../../../../../config/tests/test-utils";
15
16
  import { sitesResponse } from "./../../../../__mocks__/axios/SitesList";
16
17
  import { sitesOptions } from "./../../../../__mocks__/axios/SitesListOptions";
17
18
  import { sitesDataMock, sitesDataNoThumbnailMock, userDataMock } from "./../../../../__mocks__/store/SitesList";
@@ -19,8 +20,8 @@ import { sitesDataMock, sitesDataNoThumbnailMock, userDataMock } from "./../../.
19
20
  afterEach(cleanup);
20
21
 
21
22
  const defaultProps = mock<ISitesListProps>();
22
- jest.mock("axios");
23
- const mockedAxios = axios as jest.MockedFunction<typeof axios>;
23
+ vi.mock("axios");
24
+ const mockedAxios = axios as MockedFunction<typeof axios>;
24
25
 
25
26
  const mockStore = configureStore([thunk]);
26
27
 
@@ -58,6 +59,15 @@ const renderSitesList = async (storeData: any = initialStore) => {
58
59
 
59
60
  beforeEach(() => {
60
61
  mockedAxios.mockResolvedValue(sitesResponse);
62
+ // Tres cosas sobreviven al test que las toca y hacían que el resto solo
63
+ // funcionase en un orden concreto: el `history` de @ax/routes es un
64
+ // singleton y los tests de navegación lo dejaban en /sites/pages; SitesList
65
+ // guarda el modo de vista en localStorage, así que el siguiente test
66
+ // arrancaba en la vista equivocada y no encontraba los testids `grid-*`; y
67
+ // el parche de scrollTo se hacía sobre el prototipo dentro de dos tests.
68
+ history.replace("/");
69
+ localStorage.clear();
70
+ window.HTMLElement.prototype.scrollTo = vi.fn();
61
71
  });
62
72
 
63
73
  describe("Sites module rendering", () => {
@@ -197,8 +207,6 @@ describe("Sites module events", () => {
197
207
  });
198
208
 
199
209
  it("should go to site on click recent site item", async () => {
200
- window.HTMLElement.prototype.scrollTo = jest.fn();
201
-
202
210
  await renderSitesList();
203
211
 
204
212
  const recentSiteItems = screen.getAllByTestId("recent-sites-item");
@@ -223,8 +231,6 @@ describe("Sites module events", () => {
223
231
  });
224
232
 
225
233
  it("should go to site on click list site item", async () => {
226
- window.HTMLElement.prototype.scrollTo = jest.fn();
227
-
228
234
  await renderSitesList();
229
235
 
230
236
  const gridIconAction = screen.getByTestId("icon-action-Grid2");
@@ -237,7 +243,11 @@ describe("Sites module events", () => {
237
243
  const listSitesItems = screen.getAllByTestId("list-site-item");
238
244
  expect(listSitesItems.length).toEqual(2);
239
245
 
240
- fireEvent.click(listSitesItems[0]);
246
+ // La fila solo tiene onContextMenu; navegan las celdas. Antes se pulsaba la
247
+ // fila y no pasaba nada: la aserción se cumplía porque otro test había
248
+ // dejado ya el history en /sites/pages.
249
+ const nameCell = within(listSitesItems[0]).getAllByRole("cell")[2];
250
+ fireEvent.click(nameCell);
241
251
  await waitFor(() => expect(history.location.pathname).toEqual("/sites/pages"));
242
252
  });
243
253
 
@@ -21,9 +21,9 @@ const renderDataStep = (props = {}) =>
21
21
  <ThemeProvider theme={parseTheme(globalTheme)}>
22
22
  <DataStep
23
23
  form={defaultForm}
24
- setForm={jest.fn()}
25
- onClickNext={jest.fn()}
26
- onClickBack={jest.fn()}
24
+ setForm={vi.fn()}
25
+ onClickNext={vi.fn()}
26
+ onClickBack={vi.fn()}
27
27
  croppedImageUrl={null}
28
28
  {...props}
29
29
  />
@@ -66,21 +66,21 @@ describe("DataStep rendering", () => {
66
66
 
67
67
  describe("DataStep events", () => {
68
68
  it("should call onClickBack when Back button is clicked", () => {
69
- const onClickBack = jest.fn();
69
+ const onClickBack = vi.fn();
70
70
  renderDataStep({ onClickBack });
71
71
  fireEvent.click(screen.getByText("Back"));
72
72
  expect(onClickBack).toHaveBeenCalledTimes(1);
73
73
  });
74
74
 
75
75
  it("should call onClickNext when Next step button is clicked", () => {
76
- const onClickNext = jest.fn();
76
+ const onClickNext = vi.fn();
77
77
  renderDataStep({ onClickNext });
78
78
  fireEvent.click(screen.getByText("Next step"));
79
79
  expect(onClickNext).toHaveBeenCalledTimes(1);
80
80
  });
81
81
 
82
82
  it("should not call onClickNext when username is empty", () => {
83
- const onClickNext = jest.fn();
83
+ const onClickNext = vi.fn();
84
84
  renderDataStep({ onClickNext, form: { ...defaultForm, username: "" } });
85
85
  const nextButton = screen.getByText("Next step").closest("button");
86
86
  nextButton && fireEvent.click(nextButton);
@@ -68,8 +68,8 @@ const renderFinalStep = (props = {}) =>
68
68
  userRoles={[]}
69
69
  roles={mockRoles}
70
70
  sites={mockSites}
71
- onClose={jest.fn()}
72
- onViewProfile={jest.fn()}
71
+ onClose={vi.fn()}
72
+ onViewProfile={vi.fn()}
73
73
  {...props}
74
74
  />
75
75
  </ThemeProvider>,
@@ -142,14 +142,14 @@ describe("FinalStep learn items", () => {
142
142
 
143
143
  describe("FinalStep events", () => {
144
144
  it("should call onClose when Start Using Griddo is clicked", () => {
145
- const onClose = jest.fn();
145
+ const onClose = vi.fn();
146
146
  renderFinalStep({ onClose });
147
147
  fireEvent.click(screen.getByText("Start Using Griddo"));
148
148
  expect(onClose).toHaveBeenCalledTimes(1);
149
149
  });
150
150
 
151
151
  it("should call onViewProfile when View profile is clicked", () => {
152
- const onViewProfile = jest.fn();
152
+ const onViewProfile = vi.fn();
153
153
  renderFinalStep({ onViewProfile });
154
154
  fireEvent.click(screen.getByText("View profile"));
155
155
  expect(onViewProfile).toHaveBeenCalledTimes(1);
@@ -10,7 +10,7 @@ afterEach(cleanup);
10
10
  const renderCropView = (props = {}) =>
11
11
  render(
12
12
  <ThemeProvider theme={parseTheme(globalTheme)}>
13
- <CropView imageSrc="data:image/jpeg;base64,abc" onConfirm={jest.fn()} onUploadNew={jest.fn()} {...props} />
13
+ <CropView imageSrc="data:image/jpeg;base64,abc" onConfirm={vi.fn()} onUploadNew={vi.fn()} {...props} />
14
14
  </ThemeProvider>,
15
15
  );
16
16
 
@@ -36,14 +36,14 @@ describe("CropView rendering", () => {
36
36
 
37
37
  describe("CropView events", () => {
38
38
  it("should call onConfirm with cropped area when Next step is clicked", () => {
39
- const onConfirm = jest.fn();
39
+ const onConfirm = vi.fn();
40
40
  renderCropView({ onConfirm });
41
41
  fireEvent.click(screen.getByText("Next step"));
42
42
  expect(onConfirm).toHaveBeenCalledWith({ x: 0, y: 0, width: 100, height: 100 });
43
43
  });
44
44
 
45
45
  it("should call onUploadNew when Upload new image is clicked", () => {
46
- const onUploadNew = jest.fn();
46
+ const onUploadNew = vi.fn();
47
47
  renderCropView({ onUploadNew });
48
48
  fireEvent.click(screen.getByText("Upload new image"));
49
49
  expect(onUploadNew).toHaveBeenCalledTimes(1);