@k-int/stripes-kint-components 5.36.1 → 5.37.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 (461) hide show
  1. package/CHANGELOG.md +7 -0
  2. package/README.md +23 -8
  3. package/es/__mocks__/@folio/stripes/components.js +7 -3
  4. package/es/__mocks__/@folio/stripes/core.js +6 -4
  5. package/es/__mocks__/@folio/stripes/smart-components.js +6 -4
  6. package/es/__mocks__/react-query.js +6 -4
  7. package/es/__mocks__/react-router-dom.js +6 -6
  8. package/es/lib/ActionList/ActionList.js +38 -30
  9. package/es/lib/ActionList/ActionListFieldArray.js +131 -122
  10. package/es/lib/ButtonTypedown/ButtonTypedown.js +39 -41
  11. package/es/lib/ComboButton/ComboButton.js +66 -57
  12. package/es/lib/CustomProperties/Config/CustomPropertiesLookup.js +62 -46
  13. package/es/lib/CustomProperties/Config/CustomPropertiesLookup.test.js +4 -6
  14. package/es/lib/CustomProperties/Config/CustomPropertiesSettings.js +153 -135
  15. package/es/lib/CustomProperties/Config/CustomPropertiesSettings.test.js +4 -6
  16. package/es/lib/CustomProperties/Config/CustomPropertyForm.js +83 -81
  17. package/es/lib/CustomProperties/Config/CustomPropertyForm.test.js +32 -40
  18. package/es/lib/CustomProperties/Config/CustomPropertyView.js +39 -39
  19. package/es/lib/CustomProperties/Config/CustomPropertyView.test.js +1 -1
  20. package/es/lib/CustomProperties/Edit/CustomPropertiesEdit.js +10 -10
  21. package/es/lib/CustomProperties/Edit/CustomPropertiesEdit.test.js +2 -3
  22. package/es/lib/CustomProperties/Edit/CustomPropertiesEditCtx.js +24 -26
  23. package/es/lib/CustomProperties/Edit/CustomPropertiesEditCtx.test.js +2 -3
  24. package/es/lib/CustomProperties/Edit/CustomPropertiesListField.js +62 -49
  25. package/es/lib/CustomProperties/Edit/CustomPropertiesListField.test.js +4 -6
  26. package/es/lib/CustomProperties/Edit/CustomPropertyField.js +75 -79
  27. package/es/lib/CustomProperties/Edit/CustomPropertyField.test.js +30 -35
  28. package/es/lib/CustomProperties/Edit/CustomPropertyFormCard.js +19 -22
  29. package/es/lib/CustomProperties/Edit/CustomPropertyFormCard.test.js +7 -10
  30. package/es/lib/CustomProperties/Edit/testResources.js +12 -11
  31. package/es/lib/CustomProperties/Filter/CustomPropertiesFilter.js +67 -51
  32. package/es/lib/CustomProperties/Filter/CustomPropertiesFilter.test.js +2 -3
  33. package/es/lib/CustomProperties/Filter/CustomPropertiesFilterField.js +62 -47
  34. package/es/lib/CustomProperties/Filter/CustomPropertiesFilterField.test.js +4 -7
  35. package/es/lib/CustomProperties/Filter/CustomPropertiesFilterFieldArray.js +16 -24
  36. package/es/lib/CustomProperties/Filter/CustomPropertiesFilterFieldArray.test.js +2 -3
  37. package/es/lib/CustomProperties/Filter/CustomPropertiesFilterForm.js +17 -16
  38. package/es/lib/CustomProperties/Filter/CustomPropertiesFilterForm.test.js +10 -7
  39. package/es/lib/CustomProperties/Filter/CustomPropertiesRule.js +35 -35
  40. package/es/lib/CustomProperties/Filter/testResources.js +2 -1
  41. package/es/lib/CustomProperties/Filter/useOperators.js +6 -8
  42. package/es/lib/CustomProperties/Filter/useParseActiveFilterStrings.js +12 -2
  43. package/es/lib/CustomProperties/Filter/useValueProps.js +6 -8
  44. package/es/lib/CustomProperties/View/CustomPropertiesView.js +10 -10
  45. package/es/lib/CustomProperties/View/CustomPropertiesView.test.js +2 -3
  46. package/es/lib/CustomProperties/View/CustomPropertiesViewCtx.js +67 -52
  47. package/es/lib/CustomProperties/View/CustomPropertiesViewCtx.test.js +8 -6
  48. package/es/lib/CustomProperties/View/CustomPropertyCard.js +20 -16
  49. package/es/lib/CycleButton/CycleButton.js +28 -14
  50. package/es/lib/FieldLabel/FieldLabel.js +5 -9
  51. package/es/lib/Files/FileUploader/FileUploader.js +41 -40
  52. package/es/lib/Files/FileView/FileView.js +11 -14
  53. package/es/lib/Files/useFileHandlers.js +63 -68
  54. package/es/lib/FormModal/FormModal.js +38 -38
  55. package/es/lib/FormattedKintMessage/FormattedKintMessage.js +29 -24
  56. package/es/lib/IconSelect/IconSelect.js +60 -44
  57. package/es/lib/NoResultsMessage/NoResultsMessage.js +31 -31
  58. package/es/lib/NumberField/NumberField.js +39 -19
  59. package/es/lib/NumberField/NumberField.test.js +19 -10
  60. package/es/lib/QueryTypedown/QueryTypedown.js +34 -12
  61. package/es/lib/RefdataButtons/RefdataButtons.js +14 -14
  62. package/es/lib/ResponsiveButtonGroup/ResponsiveButtonGroup.js +75 -68
  63. package/es/lib/ResponsiveButtonGroup/useResponsiveButtonGroupSizing.js +30 -16
  64. package/es/lib/RichSelect/RichSelect.js +74 -58
  65. package/es/lib/RichSelect/useSelectedOption.js +12 -2
  66. package/es/lib/SASQLookupComponent/SASQLookupComponent.js +195 -188
  67. package/es/lib/SASQLookupComponent/SASQLookupComponent.test.js +81 -95
  68. package/es/lib/SASQLookupComponent/TableBody/TableBody.js +68 -48
  69. package/es/lib/SASQLookupComponent/TableBody/TableBody.test.js +37 -34
  70. package/es/lib/SASQLookupComponent/__mocks__/SASQLookupComponent.js +4 -5
  71. package/es/lib/SASQLookupComponent/__mocks__/SASQLookupComponentRender.js +1 -3
  72. package/es/lib/SASQRoute/SASQRoute.js +34 -29
  73. package/es/lib/SASQRoute/SASQRoute.test.js +34 -42
  74. package/es/lib/SASQViewComponent/SASQViewComponent.js +69 -66
  75. package/es/lib/SASQViewComponent/SASQViewComponent.test.js +13 -12
  76. package/es/lib/SearchField/SearchField.js +12 -8
  77. package/es/lib/SearchKeyControl/SearchKeyControl.js +46 -31
  78. package/es/lib/SearchKeyControl/SearchKeyControl.test.js +6 -2
  79. package/es/lib/Settings/EditableRefdataCategoryList/EditableRefdataCategoryList.js +124 -103
  80. package/es/lib/Settings/EditableRefdataList/EditableRefdataList.js +120 -107
  81. package/es/lib/Settings/EditableSettingsList/EditableSettingsList.js +12 -16
  82. package/es/lib/Settings/EditableSettingsList/EditableSettingsListFieldArray/EditableSettingsListFieldArray.js +45 -31
  83. package/es/lib/Settings/EditableSettingsList/EditableSettingsListFieldArray/EditableSettingsListFieldArray.test.js +6 -9
  84. package/es/lib/Settings/EditableSettingsList/SettingField/EditSettingValue/EditSettingValue.js +20 -14
  85. package/es/lib/Settings/EditableSettingsList/SettingField/EditSettingValue/EditSettingValue.test.js +32 -48
  86. package/es/lib/Settings/EditableSettingsList/SettingField/RenderSettingValue/RenderSettingValue.js +19 -19
  87. package/es/lib/Settings/EditableSettingsList/SettingField/RenderSettingValue/RenderSettingValue.test.js +24 -36
  88. package/es/lib/Settings/EditableSettingsList/SettingField/SettingField.js +48 -45
  89. package/es/lib/Settings/EditableSettingsList/SettingField/SettingField.test.js +9 -12
  90. package/es/lib/Settings/RefdataCategoriesSettings/RefdataCategoriesSettings.js +50 -38
  91. package/es/lib/Settings/SettingPage/SettingPage.js +17 -19
  92. package/es/lib/Settings/SettingPage/SettingPagePane/SettingPagePane.js +6 -8
  93. package/es/lib/Settings/Settings/Settings.js +33 -42
  94. package/es/lib/Settings/SettingsFormContainer/SettingsFormContainer.js +47 -45
  95. package/es/lib/Settings/StaticSettingsField/StaticSettingsField.js +7 -5
  96. package/es/lib/Settings/StaticSettingsField/StaticSettingsFieldComponent/StaticSettingsFieldComponent.js +21 -19
  97. package/es/lib/Settings/hooks/staticSettingsPages/useSettingCallout/useSettingCallout.js +13 -17
  98. package/es/lib/Settings/hooks/staticSettingsPages/useSettingsSectionInitalValues/useSettingsSectionInitalValues.js +6 -10
  99. package/es/lib/Settings/hooks/staticSettingsPages/useStaticSettingsSection.js +20 -20
  100. package/es/lib/Settings/hooks/useAppSettings/useAppSettings.js +18 -15
  101. package/es/lib/Settings/hooks/useSettingSection/useSettingSection.js +27 -26
  102. package/es/lib/Settings/hooks/useSettings/useSettings.js +95 -99
  103. package/es/lib/Tags/Tags.js +37 -38
  104. package/es/lib/Tags/Tags.test.js +12 -18
  105. package/es/lib/Tags/hooks/useTags.js +1 -1
  106. package/es/lib/Tags/hooks/useTagsEnabled.js +13 -14
  107. package/es/lib/Tags/tagsConfig.js +1 -1
  108. package/es/lib/Typedown/Typedown.js +128 -78
  109. package/es/lib/hooks/__mocks__/index.js +7 -3
  110. package/es/lib/hooks/__mocks__/useMutateGeneric.js +22 -0
  111. package/es/lib/hooks/intlHooks/useIntlKeyStore/useIntlKeyStore.js +24 -20
  112. package/es/lib/hooks/intlHooks/useKintIntl/useKintIntl.js +33 -25
  113. package/es/lib/hooks/typedownHooks/useTypedown.js +55 -37
  114. package/es/lib/hooks/typedownHooks/useTypedownData.js +15 -7
  115. package/es/lib/hooks/typedownHooks/useTypedownToggle.js +15 -7
  116. package/es/lib/hooks/useActionListRef.js +11 -2
  117. package/es/lib/hooks/useActiveElement.js +11 -2
  118. package/es/lib/hooks/useCustProps.js +45 -37
  119. package/es/lib/hooks/useCustomProperties.js +21 -18
  120. package/es/lib/hooks/useHelperApp.js +33 -15
  121. package/es/lib/hooks/useKiwtFieldArray.js +22 -14
  122. package/es/lib/hooks/useKiwtSASQuery.js +37 -28
  123. package/es/lib/hooks/useLocalPageStore.js +10 -7
  124. package/es/lib/hooks/useLocalStorageState.js +13 -2
  125. package/es/lib/hooks/useModConfigEntries.js +12 -15
  126. package/es/lib/hooks/useMutateCustomProperties/useMutateCustomProperties.js +16 -11
  127. package/es/lib/hooks/useMutateCustomProperties/useMutateCustomProperties.test.js +51 -0
  128. package/es/lib/hooks/useMutateGeneric/useMutateGeneric.js +70 -48
  129. package/es/lib/hooks/useMutateGeneric/useMutateGeneric.test.js +192 -0
  130. package/es/lib/hooks/useMutateModConfigEntry.js +5 -7
  131. package/es/lib/hooks/useMutateRefdataCategory/useMutateRefdataCategory.js +23 -16
  132. package/es/lib/hooks/useMutateRefdataCategory/useMutateRefdataCategory.test.js +69 -0
  133. package/es/lib/hooks/useMutateRefdataValue/useMutateRefdataValue.js +25 -17
  134. package/es/lib/hooks/useMutateRefdataValue/useMutateRefdataValue.test.js +95 -0
  135. package/es/lib/hooks/useMutateTemplates/useMutateTemplates.js +21 -13
  136. package/es/lib/hooks/useMutateTemplates/useMutateTemplates.test.js +34 -0
  137. package/es/lib/hooks/useParallelBatchFetch.js +61 -38
  138. package/es/lib/hooks/usePrevNextPagination.js +46 -32
  139. package/es/lib/hooks/useQIndex.js +23 -11
  140. package/es/lib/hooks/useRefdata.js +11 -13
  141. package/es/lib/hooks/useSASQQueryMeta.js +2 -3
  142. package/es/lib/hooks/useStandaloneSASQQueryParameter/useStandaloneSASQQueryParameter.js +18 -19
  143. package/es/lib/hooks/useTemplates.js +9 -12
  144. package/es/lib/utils/buildUrl.js +3 -2
  145. package/es/lib/utils/downloadBlob.js +12 -8
  146. package/es/lib/utils/filterParsers/deparseKiwtQueryFilters.js +5 -5
  147. package/es/lib/utils/filterParsers/parseKiwtQueryFilters.js +2 -2
  148. package/es/lib/utils/filterParsers/parseKiwtQueryGroups.js +5 -4
  149. package/es/lib/utils/filterParsers/parseKiwtQueryString.js +1 -1
  150. package/es/lib/utils/generateKiwtQueryParams/generateKiwtQueryParams.js +78 -102
  151. package/es/lib/utils/generateKiwtQueryParams/generateKiwtQueryParams.test.js +322 -29
  152. package/es/lib/utils/groupCustomPropertiesByCtx.js +9 -5
  153. package/es/lib/utils/matchString/matchString.js +7 -5
  154. package/es/lib/utils/matchString/matchString.test.js +26 -7
  155. package/es/lib/utils/modConfigEntriesQueryKey.js +4 -5
  156. package/es/lib/utils/parseErrorResponse.js +18 -8
  157. package/es/lib/utils/selectorSafe.js +3 -2
  158. package/es/lib/utils/sortByLabel.js +3 -2
  159. package/es/lib/utils/stringStyling/boldString.js +13 -4
  160. package/es/lib/utils/stringStyling/boldString.test.js +4 -5
  161. package/es/lib/utils/stringStyling/highlightString.js +13 -4
  162. package/es/lib/utils/stringStyling/highlightString.test.js +4 -5
  163. package/es/lib/validators/validators.js +8 -7
  164. package/package.json +1 -1
  165. package/src/artifacts/coverage-jest/ActionList/ActionList.js.html +1 -1
  166. package/src/artifacts/coverage-jest/ActionList/ActionListFieldArray.js.html +1 -1
  167. package/src/artifacts/coverage-jest/ActionList/index.html +1 -1
  168. package/src/artifacts/coverage-jest/ActionList/index.js.html +1 -1
  169. package/src/artifacts/coverage-jest/ButtonTypedown/ButtonTypedown.js.html +1 -1
  170. package/src/artifacts/coverage-jest/ButtonTypedown/index.html +1 -1
  171. package/src/artifacts/coverage-jest/ButtonTypedown/index.js.html +1 -1
  172. package/src/artifacts/coverage-jest/ComboButton/ComboButton.js.html +1 -1
  173. package/src/artifacts/coverage-jest/ComboButton/index.html +1 -1
  174. package/src/artifacts/coverage-jest/ComboButton/index.js.html +1 -1
  175. package/src/artifacts/coverage-jest/CustomProperties/Config/CustomPropertiesLookup.js.html +1 -1
  176. package/src/artifacts/coverage-jest/CustomProperties/Config/CustomPropertiesSettings.js.html +1 -1
  177. package/src/artifacts/coverage-jest/CustomProperties/Config/CustomPropertyForm.js.html +1 -1
  178. package/src/artifacts/coverage-jest/CustomProperties/Config/CustomPropertyView.js.html +1 -1
  179. package/src/artifacts/coverage-jest/CustomProperties/Config/index.html +1 -1
  180. package/src/artifacts/coverage-jest/CustomProperties/Config/index.js.html +1 -1
  181. package/src/artifacts/coverage-jest/CustomProperties/Edit/CustomPropertiesEdit.js.html +1 -1
  182. package/src/artifacts/coverage-jest/CustomProperties/Edit/CustomPropertiesEditCtx.js.html +1 -1
  183. package/src/artifacts/coverage-jest/CustomProperties/Edit/CustomPropertiesListField.js.html +1 -1
  184. package/src/artifacts/coverage-jest/CustomProperties/Edit/CustomPropertyField.js.html +1 -1
  185. package/src/artifacts/coverage-jest/CustomProperties/Edit/CustomPropertyFormCard.js.html +1 -1
  186. package/src/artifacts/coverage-jest/CustomProperties/Edit/index.html +1 -1
  187. package/src/artifacts/coverage-jest/CustomProperties/Edit/index.js.html +1 -1
  188. package/src/artifacts/coverage-jest/CustomProperties/Edit/testResources.js.html +1 -1
  189. package/src/artifacts/coverage-jest/CustomProperties/Filter/CustomPropertiesFilter.js.html +1 -1
  190. package/src/artifacts/coverage-jest/CustomProperties/Filter/CustomPropertiesFilterField.js.html +1 -1
  191. package/src/artifacts/coverage-jest/CustomProperties/Filter/CustomPropertiesFilterFieldArray.js.html +1 -1
  192. package/src/artifacts/coverage-jest/CustomProperties/Filter/CustomPropertiesFilterForm.js.html +1 -1
  193. package/src/artifacts/coverage-jest/CustomProperties/Filter/CustomPropertiesRule.js.html +1 -1
  194. package/src/artifacts/coverage-jest/CustomProperties/Filter/index.html +1 -1
  195. package/src/artifacts/coverage-jest/CustomProperties/Filter/index.js.html +1 -1
  196. package/src/artifacts/coverage-jest/CustomProperties/Filter/testResources.js.html +1 -1
  197. package/src/artifacts/coverage-jest/CustomProperties/Filter/useOperators.js.html +1 -1
  198. package/src/artifacts/coverage-jest/CustomProperties/Filter/useParseActiveFilterStrings.js.html +1 -1
  199. package/src/artifacts/coverage-jest/CustomProperties/Filter/useValueProps.js.html +1 -1
  200. package/src/artifacts/coverage-jest/CustomProperties/View/CustomPropertiesView.js.html +1 -1
  201. package/src/artifacts/coverage-jest/CustomProperties/View/CustomPropertiesViewCtx.js.html +1 -1
  202. package/src/artifacts/coverage-jest/CustomProperties/View/CustomPropertyCard.js.html +1 -1
  203. package/src/artifacts/coverage-jest/CustomProperties/View/index.html +1 -1
  204. package/src/artifacts/coverage-jest/CustomProperties/View/index.js.html +1 -1
  205. package/src/artifacts/coverage-jest/CustomProperties/View/testResources.js.html +1 -1
  206. package/src/artifacts/coverage-jest/CustomProperties/index.html +1 -1
  207. package/src/artifacts/coverage-jest/CustomProperties/index.js.html +1 -1
  208. package/src/artifacts/coverage-jest/CycleButton/CycleButton.js.html +1 -1
  209. package/src/artifacts/coverage-jest/CycleButton/index.html +1 -1
  210. package/src/artifacts/coverage-jest/CycleButton/index.js.html +1 -1
  211. package/src/artifacts/coverage-jest/FieldLabel/FieldLabel.js.html +1 -1
  212. package/src/artifacts/coverage-jest/FieldLabel/index.html +1 -1
  213. package/src/artifacts/coverage-jest/FieldLabel/index.js.html +1 -1
  214. package/src/artifacts/coverage-jest/Files/FileUploader/FileUploader.js.html +1 -1
  215. package/src/artifacts/coverage-jest/Files/FileUploader/index.html +1 -1
  216. package/src/artifacts/coverage-jest/Files/FileUploader/index.js.html +1 -1
  217. package/src/artifacts/coverage-jest/Files/FileView/FileView.js.html +1 -1
  218. package/src/artifacts/coverage-jest/Files/FileView/index.html +1 -1
  219. package/src/artifacts/coverage-jest/Files/FileView/index.js.html +1 -1
  220. package/src/artifacts/coverage-jest/Files/index.html +1 -1
  221. package/src/artifacts/coverage-jest/Files/index.js.html +1 -1
  222. package/src/artifacts/coverage-jest/Files/useFileHandlers.js.html +1 -1
  223. package/src/artifacts/coverage-jest/FormModal/FormModal.js.html +1 -1
  224. package/src/artifacts/coverage-jest/FormModal/index.html +1 -1
  225. package/src/artifacts/coverage-jest/FormModal/index.js.html +1 -1
  226. package/src/artifacts/coverage-jest/FormattedKintMessage/FormattedKintMessage.js.html +1 -1
  227. package/src/artifacts/coverage-jest/FormattedKintMessage/index.html +1 -1
  228. package/src/artifacts/coverage-jest/FormattedKintMessage/index.js.html +1 -1
  229. package/src/artifacts/coverage-jest/IconSelect/IconSelect.js.html +1 -1
  230. package/src/artifacts/coverage-jest/IconSelect/index.html +1 -1
  231. package/src/artifacts/coverage-jest/IconSelect/index.js.html +1 -1
  232. package/src/artifacts/coverage-jest/NoResultsMessage/NoResultsMessage.js.html +1 -1
  233. package/src/artifacts/coverage-jest/NoResultsMessage/index.html +1 -1
  234. package/src/artifacts/coverage-jest/NoResultsMessage/index.js.html +1 -1
  235. package/src/artifacts/coverage-jest/NumberField/NumberField.js.html +1 -1
  236. package/src/artifacts/coverage-jest/NumberField/index.html +1 -1
  237. package/src/artifacts/coverage-jest/NumberField/index.js.html +1 -1
  238. package/src/artifacts/coverage-jest/QueryTypedown/QueryTypedown.js.html +24 -9
  239. package/src/artifacts/coverage-jest/QueryTypedown/index.html +13 -13
  240. package/src/artifacts/coverage-jest/QueryTypedown/index.js.html +1 -1
  241. package/src/artifacts/coverage-jest/RefdataButtons/RefdataButtons.js.html +1 -1
  242. package/src/artifacts/coverage-jest/RefdataButtons/index.html +1 -1
  243. package/src/artifacts/coverage-jest/RefdataButtons/index.js.html +1 -1
  244. package/src/artifacts/coverage-jest/ResponsiveButtonGroup/ResponsiveButtonGroup.js.html +1 -1
  245. package/src/artifacts/coverage-jest/ResponsiveButtonGroup/index.html +1 -1
  246. package/src/artifacts/coverage-jest/ResponsiveButtonGroup/index.js.html +1 -1
  247. package/src/artifacts/coverage-jest/ResponsiveButtonGroup/useResponsiveButtonGroupSizing.js.html +1 -1
  248. package/src/artifacts/coverage-jest/RichSelect/RichSelect.js.html +1 -1
  249. package/src/artifacts/coverage-jest/RichSelect/index.html +1 -1
  250. package/src/artifacts/coverage-jest/RichSelect/index.js.html +1 -1
  251. package/src/artifacts/coverage-jest/RichSelect/useSelectedOption.js.html +1 -1
  252. package/src/artifacts/coverage-jest/SASQLookupComponent/SASQLookupComponent.js.html +30 -30
  253. package/src/artifacts/coverage-jest/SASQLookupComponent/TableBody/TableBody.js.html +1 -1
  254. package/src/artifacts/coverage-jest/SASQLookupComponent/TableBody/index.html +1 -1
  255. package/src/artifacts/coverage-jest/SASQLookupComponent/TableBody/index.js.html +1 -1
  256. package/src/artifacts/coverage-jest/SASQLookupComponent/index.html +1 -1
  257. package/src/artifacts/coverage-jest/SASQLookupComponent/index.js.html +1 -1
  258. package/src/artifacts/coverage-jest/SASQRoute/SASQRoute.js.html +1 -1
  259. package/src/artifacts/coverage-jest/SASQRoute/index.html +1 -1
  260. package/src/artifacts/coverage-jest/SASQRoute/index.js.html +1 -1
  261. package/src/artifacts/coverage-jest/SASQViewComponent/SASQViewComponent.js.html +1 -1
  262. package/src/artifacts/coverage-jest/SASQViewComponent/index.html +1 -1
  263. package/src/artifacts/coverage-jest/SASQViewComponent/index.js.html +1 -1
  264. package/src/artifacts/coverage-jest/SearchField/SearchField.js.html +1 -1
  265. package/src/artifacts/coverage-jest/SearchField/index.html +1 -1
  266. package/src/artifacts/coverage-jest/SearchField/index.js.html +1 -1
  267. package/src/artifacts/coverage-jest/SearchKeyControl/SearchKeyControl.js.html +1 -1
  268. package/src/artifacts/coverage-jest/SearchKeyControl/index.html +1 -1
  269. package/src/artifacts/coverage-jest/SearchKeyControl/index.js.html +1 -1
  270. package/src/artifacts/coverage-jest/Settings/EditableRefdataCategoryList/EditableRefdataCategoryList.js.html +1 -1
  271. package/src/artifacts/coverage-jest/Settings/EditableRefdataCategoryList/index.html +1 -1
  272. package/src/artifacts/coverage-jest/Settings/EditableRefdataCategoryList/index.js.html +1 -1
  273. package/src/artifacts/coverage-jest/Settings/EditableRefdataList/EditableRefdataList.js.html +1 -1
  274. package/src/artifacts/coverage-jest/Settings/EditableRefdataList/index.html +1 -1
  275. package/src/artifacts/coverage-jest/Settings/EditableRefdataList/index.js.html +1 -1
  276. package/src/artifacts/coverage-jest/Settings/EditableSettingsList/EditableSettingsList.js.html +1 -1
  277. package/src/artifacts/coverage-jest/Settings/EditableSettingsList/EditableSettingsListFieldArray/EditableSettingsListFieldArray.js.html +1 -1
  278. package/src/artifacts/coverage-jest/Settings/EditableSettingsList/EditableSettingsListFieldArray/index.html +1 -1
  279. package/src/artifacts/coverage-jest/Settings/EditableSettingsList/EditableSettingsListFieldArray/index.js.html +1 -1
  280. package/src/artifacts/coverage-jest/Settings/EditableSettingsList/SettingField/EditSettingValue/EditSettingValue.js.html +1 -1
  281. package/src/artifacts/coverage-jest/Settings/EditableSettingsList/SettingField/EditSettingValue/index.html +1 -1
  282. package/src/artifacts/coverage-jest/Settings/EditableSettingsList/SettingField/EditSettingValue/index.js.html +1 -1
  283. package/src/artifacts/coverage-jest/Settings/EditableSettingsList/SettingField/RenderSettingValue/RenderSettingValue.js.html +1 -1
  284. package/src/artifacts/coverage-jest/Settings/EditableSettingsList/SettingField/RenderSettingValue/index.html +1 -1
  285. package/src/artifacts/coverage-jest/Settings/EditableSettingsList/SettingField/RenderSettingValue/index.js.html +1 -1
  286. package/src/artifacts/coverage-jest/Settings/EditableSettingsList/SettingField/SettingField.js.html +1 -1
  287. package/src/artifacts/coverage-jest/Settings/EditableSettingsList/SettingField/index.html +1 -1
  288. package/src/artifacts/coverage-jest/Settings/EditableSettingsList/SettingField/index.js.html +1 -1
  289. package/src/artifacts/coverage-jest/Settings/EditableSettingsList/index.html +1 -1
  290. package/src/artifacts/coverage-jest/Settings/EditableSettingsList/index.js.html +1 -1
  291. package/src/artifacts/coverage-jest/Settings/RefdataCategoriesSettings/RefdataCategoriesSettings.js.html +1 -1
  292. package/src/artifacts/coverage-jest/Settings/RefdataCategoriesSettings/index.html +1 -1
  293. package/src/artifacts/coverage-jest/Settings/RefdataCategoriesSettings/index.js.html +1 -1
  294. package/src/artifacts/coverage-jest/Settings/SettingPage/SettingPage.js.html +1 -1
  295. package/src/artifacts/coverage-jest/Settings/SettingPage/SettingPagePane/SettingPagePane.js.html +1 -1
  296. package/src/artifacts/coverage-jest/Settings/SettingPage/SettingPagePane/index.html +1 -1
  297. package/src/artifacts/coverage-jest/Settings/SettingPage/SettingPagePane/index.js.html +1 -1
  298. package/src/artifacts/coverage-jest/Settings/SettingPage/index.html +1 -1
  299. package/src/artifacts/coverage-jest/Settings/SettingPage/index.js.html +1 -1
  300. package/src/artifacts/coverage-jest/Settings/Settings/Settings.js.html +1 -1
  301. package/src/artifacts/coverage-jest/Settings/Settings/index.html +1 -1
  302. package/src/artifacts/coverage-jest/Settings/Settings/index.js.html +1 -1
  303. package/src/artifacts/coverage-jest/Settings/SettingsFormContainer/SettingsFormContainer.js.html +1 -1
  304. package/src/artifacts/coverage-jest/Settings/SettingsFormContainer/index.html +1 -1
  305. package/src/artifacts/coverage-jest/Settings/SettingsFormContainer/index.js.html +1 -1
  306. package/src/artifacts/coverage-jest/Settings/StaticSettingsField/StaticSettingsField.js.html +1 -1
  307. package/src/artifacts/coverage-jest/Settings/StaticSettingsField/StaticSettingsFieldComponent/StaticSettingsFieldComponent.js.html +1 -1
  308. package/src/artifacts/coverage-jest/Settings/StaticSettingsField/StaticSettingsFieldComponent/index.html +1 -1
  309. package/src/artifacts/coverage-jest/Settings/StaticSettingsField/StaticSettingsFieldComponent/index.js.html +1 -1
  310. package/src/artifacts/coverage-jest/Settings/StaticSettingsField/index.html +1 -1
  311. package/src/artifacts/coverage-jest/Settings/StaticSettingsField/index.js.html +1 -1
  312. package/src/artifacts/coverage-jest/Settings/constants/index.html +1 -1
  313. package/src/artifacts/coverage-jest/Settings/constants/index.js.html +1 -1
  314. package/src/artifacts/coverage-jest/Settings/constants/queryKeys.js.html +1 -1
  315. package/src/artifacts/coverage-jest/Settings/contexts/SettingsContext.js.html +1 -1
  316. package/src/artifacts/coverage-jest/Settings/contexts/index.html +1 -1
  317. package/src/artifacts/coverage-jest/Settings/contexts/index.js.html +1 -1
  318. package/src/artifacts/coverage-jest/Settings/hooks/index.html +1 -1
  319. package/src/artifacts/coverage-jest/Settings/hooks/index.js.html +1 -1
  320. package/src/artifacts/coverage-jest/Settings/hooks/staticSettingsPages/index.html +1 -1
  321. package/src/artifacts/coverage-jest/Settings/hooks/staticSettingsPages/index.js.html +1 -1
  322. package/src/artifacts/coverage-jest/Settings/hooks/staticSettingsPages/useSettingCallout/index.html +1 -1
  323. package/src/artifacts/coverage-jest/Settings/hooks/staticSettingsPages/useSettingCallout/index.js.html +1 -1
  324. package/src/artifacts/coverage-jest/Settings/hooks/staticSettingsPages/useSettingCallout/useSettingCallout.js.html +1 -1
  325. package/src/artifacts/coverage-jest/Settings/hooks/staticSettingsPages/useSettingsSectionInitalValues/index.html +1 -1
  326. package/src/artifacts/coverage-jest/Settings/hooks/staticSettingsPages/useSettingsSectionInitalValues/index.js.html +1 -1
  327. package/src/artifacts/coverage-jest/Settings/hooks/staticSettingsPages/useSettingsSectionInitalValues/useSettingsSectionInitalValues.js.html +1 -1
  328. package/src/artifacts/coverage-jest/Settings/hooks/staticSettingsPages/useStaticSettingsSection.js.html +1 -1
  329. package/src/artifacts/coverage-jest/Settings/hooks/useAppSettings/index.html +1 -1
  330. package/src/artifacts/coverage-jest/Settings/hooks/useAppSettings/index.js.html +1 -1
  331. package/src/artifacts/coverage-jest/Settings/hooks/useAppSettings/useAppSettings.js.html +1 -1
  332. package/src/artifacts/coverage-jest/Settings/hooks/useSettingSection/index.html +1 -1
  333. package/src/artifacts/coverage-jest/Settings/hooks/useSettingSection/index.js.html +1 -1
  334. package/src/artifacts/coverage-jest/Settings/hooks/useSettingSection/useSettingSection.js.html +1 -1
  335. package/src/artifacts/coverage-jest/Settings/hooks/useSettings/index.html +1 -1
  336. package/src/artifacts/coverage-jest/Settings/hooks/useSettings/index.js.html +1 -1
  337. package/src/artifacts/coverage-jest/Settings/hooks/useSettings/useSettings.js.html +1 -1
  338. package/src/artifacts/coverage-jest/Settings/index.html +1 -1
  339. package/src/artifacts/coverage-jest/Settings/index.js.html +1 -1
  340. package/src/artifacts/coverage-jest/Tags/Tags.js.html +1 -1
  341. package/src/artifacts/coverage-jest/Tags/hooks/index.html +1 -1
  342. package/src/artifacts/coverage-jest/Tags/hooks/index.js.html +1 -1
  343. package/src/artifacts/coverage-jest/Tags/hooks/useTags.js.html +1 -1
  344. package/src/artifacts/coverage-jest/Tags/hooks/useTagsEnabled.js.html +1 -1
  345. package/src/artifacts/coverage-jest/Tags/index.html +1 -1
  346. package/src/artifacts/coverage-jest/Tags/index.js.html +1 -1
  347. package/src/artifacts/coverage-jest/Tags/tagsConfig.js.html +1 -1
  348. package/src/artifacts/coverage-jest/Typedown/Typedown.js.html +136 -7
  349. package/src/artifacts/coverage-jest/Typedown/index.html +3 -3
  350. package/src/artifacts/coverage-jest/Typedown/index.js.html +1 -1
  351. package/src/artifacts/coverage-jest/cobertura-coverage.xml +513 -507
  352. package/src/artifacts/coverage-jest/constants/comparators.js.html +1 -1
  353. package/src/artifacts/coverage-jest/constants/customProperties.js.html +1 -1
  354. package/src/artifacts/coverage-jest/constants/endpoints.js.html +1 -1
  355. package/src/artifacts/coverage-jest/constants/eventCodes.js.html +1 -1
  356. package/src/artifacts/coverage-jest/constants/index.html +1 -1
  357. package/src/artifacts/coverage-jest/constants/pagination.js.html +1 -1
  358. package/src/artifacts/coverage-jest/hooks/index.html +1 -1
  359. package/src/artifacts/coverage-jest/hooks/index.js.html +1 -1
  360. package/src/artifacts/coverage-jest/hooks/intlHooks/index.html +1 -1
  361. package/src/artifacts/coverage-jest/hooks/intlHooks/index.js.html +1 -1
  362. package/src/artifacts/coverage-jest/hooks/intlHooks/useIntlKey/index.html +1 -1
  363. package/src/artifacts/coverage-jest/hooks/intlHooks/useIntlKey/index.js.html +1 -1
  364. package/src/artifacts/coverage-jest/hooks/intlHooks/useIntlKey/useIntlKey.js.html +7 -7
  365. package/src/artifacts/coverage-jest/hooks/intlHooks/useIntlKeyStore/index.html +1 -1
  366. package/src/artifacts/coverage-jest/hooks/intlHooks/useIntlKeyStore/index.js.html +1 -1
  367. package/src/artifacts/coverage-jest/hooks/intlHooks/useIntlKeyStore/useIntlKeyStore.js.html +6 -6
  368. package/src/artifacts/coverage-jest/hooks/intlHooks/useKintIntl/index.html +1 -1
  369. package/src/artifacts/coverage-jest/hooks/intlHooks/useKintIntl/index.js.html +1 -1
  370. package/src/artifacts/coverage-jest/hooks/intlHooks/useKintIntl/useKintIntl.js.html +6 -6
  371. package/src/artifacts/coverage-jest/hooks/typedownHooks/index.html +1 -1
  372. package/src/artifacts/coverage-jest/hooks/typedownHooks/index.js.html +1 -1
  373. package/src/artifacts/coverage-jest/hooks/typedownHooks/useTypedown.js.html +1 -1
  374. package/src/artifacts/coverage-jest/hooks/typedownHooks/useTypedownData.js.html +1 -1
  375. package/src/artifacts/coverage-jest/hooks/typedownHooks/useTypedownToggle.js.html +1 -1
  376. package/src/artifacts/coverage-jest/hooks/useActionListRef.js.html +1 -1
  377. package/src/artifacts/coverage-jest/hooks/useActiveElement.js.html +1 -1
  378. package/src/artifacts/coverage-jest/hooks/useCustProps.js.html +1 -1
  379. package/src/artifacts/coverage-jest/hooks/useCustomProperties.js.html +1 -1
  380. package/src/artifacts/coverage-jest/hooks/useHelperApp.js.html +1 -1
  381. package/src/artifacts/coverage-jest/hooks/useInvalidateRefdata/index.html +1 -1
  382. package/src/artifacts/coverage-jest/hooks/useInvalidateRefdata/index.js.html +1 -1
  383. package/src/artifacts/coverage-jest/hooks/useInvalidateRefdata/useInvalidateRefdata.js.html +2 -2
  384. package/src/artifacts/coverage-jest/hooks/useKiwtFieldArray.js.html +1 -1
  385. package/src/artifacts/coverage-jest/hooks/useKiwtSASQuery.js.html +9 -9
  386. package/src/artifacts/coverage-jest/hooks/useLocalPageStore.js.html +1 -1
  387. package/src/artifacts/coverage-jest/hooks/useLocalStorageState.js.html +5 -5
  388. package/src/artifacts/coverage-jest/hooks/useModConfigEntries.js.html +1 -1
  389. package/src/artifacts/coverage-jest/hooks/useMutateCustomProperties/index.html +17 -17
  390. package/src/artifacts/coverage-jest/hooks/useMutateCustomProperties/index.js.html +1 -1
  391. package/src/artifacts/coverage-jest/hooks/useMutateCustomProperties/useMutateCustomProperties.js.html +16 -16
  392. package/src/artifacts/coverage-jest/hooks/useMutateGeneric/index.html +21 -21
  393. package/src/artifacts/coverage-jest/hooks/useMutateGeneric/index.js.html +1 -1
  394. package/src/artifacts/coverage-jest/hooks/useMutateGeneric/useMutateGeneric.js.html +93 -93
  395. package/src/artifacts/coverage-jest/hooks/useMutateModConfigEntry.js.html +1 -1
  396. package/src/artifacts/coverage-jest/hooks/useMutateRefdataCategory/index.html +21 -21
  397. package/src/artifacts/coverage-jest/hooks/useMutateRefdataCategory/index.js.html +1 -1
  398. package/src/artifacts/coverage-jest/hooks/useMutateRefdataCategory/useMutateRefdataCategory.js.html +40 -40
  399. package/src/artifacts/coverage-jest/hooks/useMutateRefdataValue/index.html +21 -21
  400. package/src/artifacts/coverage-jest/hooks/useMutateRefdataValue/index.js.html +1 -1
  401. package/src/artifacts/coverage-jest/hooks/useMutateRefdataValue/useMutateRefdataValue.js.html +44 -44
  402. package/src/artifacts/coverage-jest/hooks/useMutateTemplates/index.html +21 -21
  403. package/src/artifacts/coverage-jest/hooks/useMutateTemplates/index.js.html +1 -1
  404. package/src/artifacts/coverage-jest/hooks/useMutateTemplates/useMutateTemplates.js.html +38 -38
  405. package/src/artifacts/coverage-jest/hooks/useParallelBatchFetch.js.html +1 -1
  406. package/src/artifacts/coverage-jest/hooks/usePrevNextPagination.js.html +20 -20
  407. package/src/artifacts/coverage-jest/hooks/useQIndex.js.html +8 -8
  408. package/src/artifacts/coverage-jest/hooks/useRefdata.js.html +1 -1
  409. package/src/artifacts/coverage-jest/hooks/useSASQQueryMeta.js.html +1 -1
  410. package/src/artifacts/coverage-jest/hooks/useStandaloneSASQQueryParameter/index.html +1 -1
  411. package/src/artifacts/coverage-jest/hooks/useStandaloneSASQQueryParameter/index.js.html +1 -1
  412. package/src/artifacts/coverage-jest/hooks/useStandaloneSASQQueryParameter/useStandaloneSASQQueryParameter.js.html +1 -1
  413. package/src/artifacts/coverage-jest/hooks/useTemplates.js.html +1 -1
  414. package/src/artifacts/coverage-jest/index.html +83 -83
  415. package/src/artifacts/coverage-jest/utils/buildUrl.js.html +1 -1
  416. package/src/artifacts/coverage-jest/utils/downloadBlob.js.html +2 -2
  417. package/src/artifacts/coverage-jest/utils/filterParsers/deparseKiwtQueryFilters.js.html +3 -3
  418. package/src/artifacts/coverage-jest/utils/filterParsers/index.html +1 -1
  419. package/src/artifacts/coverage-jest/utils/filterParsers/index.js.html +1 -1
  420. package/src/artifacts/coverage-jest/utils/filterParsers/parseKiwtQueryFilters.js.html +3 -3
  421. package/src/artifacts/coverage-jest/utils/filterParsers/parseKiwtQueryGroups.js.html +2 -2
  422. package/src/artifacts/coverage-jest/utils/filterParsers/parseKiwtQueryString.js.html +5 -5
  423. package/src/artifacts/coverage-jest/utils/generateKiwtQuery.js.html +7 -7
  424. package/src/artifacts/coverage-jest/utils/generateKiwtQueryParams/generateKiwtQueryParams.js.html +125 -125
  425. package/src/artifacts/coverage-jest/utils/generateKiwtQueryParams/index.html +21 -21
  426. package/src/artifacts/coverage-jest/utils/generateKiwtQueryParams/index.js.html +1 -1
  427. package/src/artifacts/coverage-jest/utils/groupCustomPropertiesByCtx.js.html +2 -2
  428. package/src/artifacts/coverage-jest/utils/index.html +5 -5
  429. package/src/artifacts/coverage-jest/utils/index.js.html +1 -1
  430. package/src/artifacts/coverage-jest/utils/matchString/index.html +1 -1
  431. package/src/artifacts/coverage-jest/utils/matchString/index.js.html +1 -1
  432. package/src/artifacts/coverage-jest/utils/matchString/matchString.js.html +2 -2
  433. package/src/artifacts/coverage-jest/utils/modConfigEntriesQueryKey.js.html +2 -2
  434. package/src/artifacts/coverage-jest/utils/parseErrorResponse.js.html +2 -2
  435. package/src/artifacts/coverage-jest/utils/parseModConfigEntry.js.html +2 -2
  436. package/src/artifacts/coverage-jest/utils/refdataOptions.js.html +1 -1
  437. package/src/artifacts/coverage-jest/utils/refdataQueryKey/index.html +1 -1
  438. package/src/artifacts/coverage-jest/utils/refdataQueryKey/index.js.html +1 -1
  439. package/src/artifacts/coverage-jest/utils/refdataQueryKey/refdataQueryKey.js.html +2 -2
  440. package/src/artifacts/coverage-jest/utils/selectorSafe.js.html +2 -2
  441. package/src/artifacts/coverage-jest/utils/sortByLabel.js.html +2 -2
  442. package/src/artifacts/coverage-jest/utils/stringStyling/boldString.js.html +2 -2
  443. package/src/artifacts/coverage-jest/utils/stringStyling/highlightString.js.html +2 -2
  444. package/src/artifacts/coverage-jest/utils/stringStyling/index.html +1 -1
  445. package/src/artifacts/coverage-jest/utils/stringStyling/index.js.html +1 -1
  446. package/src/artifacts/coverage-jest/utils/toCamelCase.js.html +2 -2
  447. package/src/artifacts/coverage-jest/utils/typedownQueryKey.js.html +2 -2
  448. package/src/artifacts/coverage-jest/validators/index.html +1 -1
  449. package/src/artifacts/coverage-jest/validators/index.js.html +1 -1
  450. package/src/artifacts/coverage-jest/validators/validators.js.html +1 -1
  451. package/src/lib/QueryTypedown/QueryTypedown.js +7 -2
  452. package/src/lib/QueryTypedown/README.md +7 -6
  453. package/src/lib/Typedown/README.md +27 -1
  454. package/src/lib/Typedown/Typedown.js +47 -4
  455. package/src/lib/hooks/__mocks__/useMutateGeneric.js +14 -0
  456. package/src/lib/hooks/useMutateCustomProperties/useMutateCustomProperties.test.js +65 -0
  457. package/src/lib/hooks/useMutateGeneric/useMutateGeneric.test.js +194 -0
  458. package/src/lib/hooks/useMutateRefdataCategory/useMutateRefdataCategory.test.js +76 -0
  459. package/src/lib/hooks/useMutateRefdataValue/useMutateRefdataValue.test.js +93 -0
  460. package/src/lib/hooks/useMutateTemplates/useMutateTemplates.test.js +33 -0
  461. package/src/lib/utils/generateKiwtQueryParams/generateKiwtQueryParams.test.js +248 -17
@@ -0,0 +1,65 @@
1
+ import { renderHook } from '@folio/jest-config-stripes/testing-library/react';
2
+
3
+ import useMutateGeneric from '../useMutateGeneric';
4
+ import useMutateCustomProperties from './useMutateCustomProperties';
5
+
6
+ // Use file in __mocks__
7
+ jest.mock('../useMutateGeneric');
8
+
9
+ describe('useMutateCustomProperties', () => {
10
+ const mockEndpoint = 'test/endpoint';
11
+ const mockId = '12345';
12
+
13
+ beforeEach(() => {
14
+ useMutateGeneric.mockClear();
15
+ });
16
+
17
+ describe('initialization', () => {
18
+ let sentConfig;
19
+ beforeEach(() => {
20
+ renderHook(() => useMutateCustomProperties({
21
+ endpoint: mockEndpoint,
22
+ id: mockId,
23
+ extraProp: 'passed-through'
24
+ }));
25
+
26
+ sentConfig = useMutateGeneric.mock.calls[0][0];
27
+ });
28
+
29
+ test('calls useMutateGeneric', () => {
30
+ expect(useMutateGeneric).toHaveBeenCalled();
31
+ });
32
+
33
+ test('passes the correct endpoint', () => {
34
+ expect(sentConfig.endpoint).toBe(mockEndpoint);
35
+ });
36
+
37
+ test('passes the id through', () => {
38
+ expect(sentConfig.id).toBe(mockId);
39
+ });
40
+
41
+ test('passes through additional mutateGenericProps', () => {
42
+ expect(sentConfig.extraProp).toBe('passed-through');
43
+ });
44
+
45
+ test('constructs the correct domain-specific queryKey', () => {
46
+ expect(sentConfig.queryKey).toEqual([
47
+ 'stripes-kint-components',
48
+ 'useMutateCustomProperties',
49
+ mockId
50
+ ]);
51
+ });
52
+
53
+ describe('endpointMutators logic', () => {
54
+ test('defines a delete mutator that appends the id to the endpoint', () => {
55
+ // This triggers the code: () => `${endpoint}/${id}`
56
+ expect(sentConfig.endpointMutators.delete()).toBe(`${mockEndpoint}/${mockId}`);
57
+ });
58
+
59
+ test('defines a put mutator that appends the id to the endpoint', () => {
60
+ // This triggers the code: () => `${endpoint}/${id}`
61
+ expect(sentConfig.endpointMutators.put()).toBe(`${mockEndpoint}/${mockId}`);
62
+ });
63
+ });
64
+ });
65
+ });
@@ -0,0 +1,194 @@
1
+ import { useMutation } from 'react-query';
2
+
3
+ // EXAMPLE -- Using the mockKy spies from useOkapiKy mock
4
+ import { mockDelete, mockPut, mockPost, mockKyJson } from '@folio/stripes/core';
5
+ import { renderHook, waitFor } from '@folio/jest-config-stripes/testing-library/react';
6
+
7
+ import useMutateGeneric from './useMutateGeneric';
8
+
9
+ describe('useMutateGeneric', () => {
10
+ const mockEndpoint = 'test/endpoint';
11
+ const mockQueryKey = ['test', 'key'];
12
+
13
+ beforeEach(() => {
14
+ jest.clearAllMocks();
15
+ });
16
+
17
+ describe.each([
18
+ {
19
+ verb: 'delete',
20
+ callIndex: 0,
21
+ payload: '12345',
22
+ expectedKeySuffix: 'delete',
23
+ expectedUrl: 'test/endpoint/12345',
24
+ mockSpy: mockDelete,
25
+ },
26
+ {
27
+ verb: 'put',
28
+ callIndex: 1,
29
+ payload: { id: '12345', name: 'test' },
30
+ expectedKeySuffix: 'edit',
31
+ expectedUrl: 'test/endpoint/12345',
32
+ expectedPayload: {
33
+ json: {
34
+ id: '12345',
35
+ name: 'test'
36
+ }
37
+ },
38
+ mockSpy: mockPut,
39
+ },
40
+ {
41
+ verb: 'post',
42
+ callIndex: 2,
43
+ payload: { name: 'new test' },
44
+ expectedKeySuffix: 'create',
45
+ expectedUrl: 'test/endpoint',
46
+ expectedPayload: {
47
+ json: {
48
+ name: 'new test'
49
+ }
50
+ },
51
+ mockSpy: mockPost,
52
+ },
53
+ ])('Verb: $verb', ({
54
+ verb,
55
+ callIndex,
56
+ payload,
57
+ expectedKeySuffix,
58
+ expectedUrl,
59
+ expectedPayload,
60
+ mockSpy
61
+ }) => {
62
+ describe(`initialization for ${verb}`, () => {
63
+ let hookResult;
64
+ beforeEach(() => {
65
+ const { result } = renderHook(() => useMutateGeneric({
66
+ endpoint: mockEndpoint,
67
+ queryKey: mockQueryKey,
68
+ }));
69
+ hookResult = result;
70
+ });
71
+
72
+ test(`returns the ${verb} mutation function`, () => {
73
+ expect(typeof hookResult.current[verb]).toBe('function');
74
+ });
75
+
76
+ test(`configures useMutation with the correct ${verb} queryKey`, () => {
77
+ // useMutation call index: 0=delete, 1=put, 2=post
78
+ expect(useMutation.mock.calls[callIndex][0]).toEqual([...mockQueryKey, expectedKeySuffix]);
79
+ });
80
+ });
81
+
82
+ describe(`with returnQueryObject: true, return full mutation object for ${verb}`, () => {
83
+ let hookResult;
84
+ beforeEach(() => {
85
+ const { result } = renderHook(() => useMutateGeneric({
86
+ endpoint: mockEndpoint,
87
+ returnQueryObject: { [verb]: true }
88
+ }));
89
+ hookResult = result;
90
+ });
91
+
92
+ test(`returns the full mutation object for ${verb} when requested`, () => {
93
+ expect(hookResult.current[verb]).toHaveProperty('mutateAsync');
94
+ });
95
+ });
96
+
97
+ describe(`execution for ${verb}`, () => {
98
+ const afterCall = jest.fn();
99
+ const catchCall = jest.fn();
100
+ const customMutator = jest.fn((p) => (verb === 'post' ? 'custom/post' : `custom/${p?.id || p}`));
101
+
102
+ describe('successful lifecycle', () => {
103
+ const successData = { id: 'some-id' };
104
+
105
+ beforeEach(async () => {
106
+ mockKyJson.mockResolvedValueOnce(successData);
107
+
108
+ const { result } = renderHook(() => useMutateGeneric({
109
+ endpoint: mockEndpoint,
110
+ afterQueryCalls: { [verb]: afterCall },
111
+ endpointMutators: { [verb]: customMutator },
112
+ }));
113
+
114
+ await waitFor(async () => {
115
+ await result.current[verb](payload);
116
+ });
117
+ });
118
+
119
+ test('calls the custom endpointMutator', () => {
120
+ expect(customMutator).toHaveBeenCalledWith(payload);
121
+ });
122
+
123
+ test('calls the correct ky verb with the mutated URL', () => {
124
+ const expectedCustomUrl = verb === 'post' ? 'custom/post' : 'custom/12345';
125
+
126
+ if (expectedPayload) {
127
+ expect(mockSpy).toHaveBeenCalledWith(expectedCustomUrl, expectedPayload);
128
+ } else {
129
+ expect(mockSpy).toHaveBeenCalledWith(expectedCustomUrl);
130
+ }
131
+ });
132
+
133
+ test('executes the afterQuery success callback', () => {
134
+ expect(afterCall).toHaveBeenCalledWith(successData);
135
+ });
136
+ });
137
+
138
+ describe('failure lifecycle', () => {
139
+ beforeEach(async () => {
140
+ mockSpy.mockImplementationOnce(() => ({
141
+ json: () => Promise.reject(new Error('Network Error')),
142
+ }));
143
+
144
+ const { result } = renderHook(() => useMutateGeneric({
145
+ endpoint: mockEndpoint,
146
+ catchQueryCalls: { [verb]: catchCall },
147
+ }));
148
+
149
+ await waitFor(async () => {
150
+ try {
151
+ await result.current[verb](payload);
152
+ } catch (e) { /* error handled in hook */ }
153
+ });
154
+ });
155
+
156
+ test('executes the catchQuery failure callback', () => {
157
+ expect(catchCall).toHaveBeenCalled();
158
+ });
159
+ });
160
+
161
+ describe('default mutators fallback', () => {
162
+ beforeEach(async () => {
163
+ const { result } = renderHook(() => useMutateGeneric({ endpoint: mockEndpoint }));
164
+ await waitFor(async () => {
165
+ await result.current[verb](payload);
166
+ });
167
+ });
168
+
169
+ test('uses default URL construction logic', () => {
170
+ if (expectedPayload) {
171
+ expect(mockSpy).toHaveBeenCalledWith(expectedUrl, expectedPayload);
172
+ } else {
173
+ expect(mockSpy).toHaveBeenCalledWith(expectedUrl);
174
+ }
175
+ });
176
+ });
177
+ });
178
+
179
+ describe(`returnQueryObject toggle for ${verb}`, () => {
180
+ let hookResult;
181
+ beforeEach(() => {
182
+ const { result } = renderHook(() => useMutateGeneric({
183
+ endpoint: mockEndpoint,
184
+ returnQueryObject: { [verb]: true }
185
+ }));
186
+ hookResult = result;
187
+ });
188
+
189
+ test('returns the full mutation object', () => {
190
+ expect(hookResult.current[verb]).toHaveProperty('mutateAsync');
191
+ });
192
+ });
193
+ });
194
+ });
@@ -0,0 +1,76 @@
1
+ import { renderHook } from '@folio/jest-config-stripes/testing-library/react';
2
+ import useMutateGeneric from '../useMutateGeneric';
3
+ import useInvalidateRefdata from '../useInvalidateRefdata';
4
+ import useMutateRefdataCategory from './useMutateRefdataCategory';
5
+
6
+ // Mocking dependencies
7
+ jest.mock('../useMutateGeneric');
8
+ jest.mock('../useInvalidateRefdata');
9
+
10
+ describe('useMutateRefdataCategory', () => {
11
+ const mockEndpoint = 'erm/refdata';
12
+ const mockInvalidate = jest.fn(() => Promise.resolve());
13
+
14
+ beforeEach(() => {
15
+ jest.clearAllMocks();
16
+ useInvalidateRefdata.mockReturnValue(mockInvalidate);
17
+ });
18
+
19
+ describe('initialization', () => {
20
+ let sentConfig;
21
+ beforeEach(() => {
22
+ renderHook(() => useMutateRefdataCategory({
23
+ endpoint: mockEndpoint
24
+ }));
25
+ sentConfig = useMutateGeneric.mock.calls[0][0];
26
+ });
27
+
28
+ test('passes the correct endpoint', () => {
29
+ expect(sentConfig.endpoint).toBe(mockEndpoint);
30
+ });
31
+
32
+ test('constructs the correct queryKey', () => {
33
+ expect(sentConfig.queryKey).toEqual([
34
+ 'stripes-kint-components',
35
+ 'useMutateRefdataCategory'
36
+ ]);
37
+ });
38
+
39
+ test('payloadMutator for post adds an empty values array', () => {
40
+ const result = sentConfig.payloadMutators.post({ desc: 'new category' });
41
+ expect(result.json).toEqual({
42
+ desc: 'new category',
43
+ values: []
44
+ });
45
+ });
46
+ });
47
+
48
+ describe('afterQueryCalls lifecycle', () => {
49
+ const mockRes = { id: '123' };
50
+ let sentConfig;
51
+
52
+ describe.each(['delete', 'post', 'put'])('Verb: %s', (verb) => {
53
+ const externalCallback = jest.fn();
54
+
55
+ beforeEach(async () => {
56
+ renderHook(() => useMutateRefdataCategory({
57
+ endpoint: mockEndpoint,
58
+ afterQueryCalls: { [verb]: externalCallback }
59
+ }));
60
+
61
+ sentConfig = useMutateGeneric.mock.calls[0][0];
62
+
63
+ // Manually trigger the wrapper function defined in the hook
64
+ await sentConfig.afterQueryCalls[verb](mockRes);
65
+ });
66
+
67
+ test(`calls invalidateRefdata for ${verb}`, () => {
68
+ expect(mockInvalidate).toHaveBeenCalled();
69
+ });
70
+
71
+ test(`calls the provided afterQuery${verb.charAt(0).toUpperCase() + verb.slice(1)} callback`, () => {
72
+ expect(externalCallback).toHaveBeenCalledWith(mockRes);
73
+ });
74
+ });
75
+ });
76
+ });
@@ -0,0 +1,93 @@
1
+ import { renderHook } from '@folio/jest-config-stripes/testing-library/react';
2
+ import useMutateGeneric from '../useMutateGeneric';
3
+ import useInvalidateRefdata from '../useInvalidateRefdata';
4
+ import useMutateRefdataValue from './useMutateRefdataValue';
5
+
6
+ jest.mock('../useMutateGeneric');
7
+ jest.mock('../useInvalidateRefdata');
8
+
9
+ describe('useMutateRefdataValue', () => {
10
+ const mockEndpoint = 'erm/refdata/values';
11
+ const mockId = 'category-123';
12
+ const mockInvalidate = jest.fn(() => Promise.resolve());
13
+ const mockKy = {
14
+ put: jest.fn(() => ({ json: () => Promise.resolve({ success: true }) }))
15
+ };
16
+
17
+ beforeEach(() => {
18
+ jest.clearAllMocks();
19
+ useInvalidateRefdata.mockReturnValue(mockInvalidate);
20
+ });
21
+
22
+ describe('initialization', () => {
23
+ test('constructs the correct queryKey using the ID', () => {
24
+ renderHook(() => useMutateRefdataValue({ endpoint: mockEndpoint, id: mockId }));
25
+ const sentConfig = useMutateGeneric.mock.calls[0][0];
26
+
27
+ expect(sentConfig.queryKey).toEqual([
28
+ 'stripes-kint-components',
29
+ 'useMutateRefdataValue',
30
+ mockId
31
+ ]);
32
+ });
33
+ });
34
+
35
+ describe('custom promiseReturns logic', () => {
36
+ let promiseReturns;
37
+ beforeEach(() => {
38
+ renderHook(() => useMutateRefdataValue({ endpoint: mockEndpoint, id: mockId }));
39
+ promiseReturns = useMutateGeneric.mock.calls[0][0].promiseReturns;
40
+ });
41
+
42
+ test('delete: sends a PUT to the parent category with _delete: true', async () => {
43
+ await promiseReturns.delete('value-abc', mockKy);
44
+ expect(mockKy.put).toHaveBeenCalledWith(
45
+ `${mockEndpoint}/${mockId}`,
46
+ {
47
+ json: {
48
+ id: mockId,
49
+ values: [{ id: 'value-abc', _delete: true }]
50
+ }
51
+ }
52
+ );
53
+ });
54
+
55
+ test('post: sends a PUT to the parent category with the new value data', async () => {
56
+ const newData = { label: 'New Value' };
57
+ await promiseReturns.post(newData, mockKy);
58
+ expect(mockKy.put).toHaveBeenCalledWith(
59
+ `${mockEndpoint}/${mockId}`,
60
+ {
61
+ json: {
62
+ id: mockId,
63
+ values: [newData]
64
+ }
65
+ }
66
+ );
67
+ });
68
+
69
+ test('put: sends a PUT to the parent category with the updated value data', async () => {
70
+ const updateData = { id: 'val-1', label: 'Updated' };
71
+ await promiseReturns.put(updateData, mockKy);
72
+ expect(mockKy.put).toHaveBeenCalledWith(
73
+ `${mockEndpoint}/${mockId}`,
74
+ {
75
+ json: {
76
+ id: mockId,
77
+ values: [updateData]
78
+ }
79
+ }
80
+ );
81
+ });
82
+ });
83
+
84
+ describe('afterQueryCalls lifecycle', () => {
85
+ test.each(['delete', 'post', 'put'])('Verb: %s triggers invalidation', async (verb) => {
86
+ renderHook(() => useMutateRefdataValue({ endpoint: mockEndpoint, id: mockId }));
87
+ const { afterQueryCalls } = useMutateGeneric.mock.calls[0][0];
88
+
89
+ await afterQueryCalls[verb]({ success: true });
90
+ expect(mockInvalidate).toHaveBeenCalled();
91
+ });
92
+ });
93
+ });
@@ -0,0 +1,33 @@
1
+ import { renderHook } from '@folio/jest-config-stripes/testing-library/react';
2
+ import useMutateGeneric from '../useMutateGeneric';
3
+ import useInvalidateRefdata from '../useInvalidateRefdata';
4
+ import useMutateTemplates from './useMutateTemplates';
5
+
6
+ jest.mock('../useMutateGeneric');
7
+ jest.mock('../useInvalidateRefdata');
8
+
9
+ describe('useMutateTemplates', () => {
10
+ const mockEndpoint = 'erm/templates';
11
+ const mockInvalidate = jest.fn(() => Promise.resolve());
12
+
13
+ beforeEach(() => {
14
+ jest.clearAllMocks();
15
+ useInvalidateRefdata.mockReturnValue(mockInvalidate);
16
+ });
17
+
18
+ test('passes the correct queryKey', () => {
19
+ renderHook(() => useMutateTemplates({ endpoint: mockEndpoint }));
20
+ const sentConfig = useMutateGeneric.mock.calls[0][0];
21
+ expect(sentConfig.queryKey).toEqual(['stripes-kint-components', 'useMutateTemplates']);
22
+ });
23
+
24
+ describe('afterQueryCalls', () => {
25
+ test.each(['delete', 'post', 'put'])('Verb: %s calls invalidateRefdata', async (verb) => {
26
+ renderHook(() => useMutateTemplates({ endpoint: mockEndpoint }));
27
+ const { afterQueryCalls } = useMutateGeneric.mock.calls[0][0];
28
+
29
+ await afterQueryCalls[verb]({});
30
+ expect(mockInvalidate).toHaveBeenCalled();
31
+ });
32
+ });
33
+ });