@wise/dynamic-flow-client 5.9.1 → 5.9.2-exp-ext-renderer-5899c9c

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 (400) hide show
  1. package/package.json +11 -10
  2. package/build/DynamicFlowCore.js +0 -5
  3. package/build/common/errorBoundary/ErrorBoundary.js +0 -26
  4. package/build/common/errorBoundary/ErrorBoundary.test.js +0 -29
  5. package/build/common/errorBoundary/ErrorBoundaryAlert.js +0 -11
  6. package/build/common/makeHttpClient/api-utils.js +0 -3
  7. package/build/common/makeHttpClient/index.js +0 -1
  8. package/build/common/makeHttpClient/makeHttpClient.js +0 -10
  9. package/build/common/makeHttpClient/makeHttpClient.test.js +0 -186
  10. package/build/common/messages/external-confirmation.messages.js +0 -23
  11. package/build/common/messages/file-upload.messages.js +0 -13
  12. package/build/common/messages/generic-error.messages.js +0 -18
  13. package/build/common/messages/help.messages.js +0 -8
  14. package/build/common/messages/multi-file-upload.messages.js +0 -18
  15. package/build/common/messages/multi-select.messages.js +0 -8
  16. package/build/common/messages/paragraph.messages.js +0 -13
  17. package/build/common/messages/repeatable.messages.js +0 -23
  18. package/build/common/messages/search.messages.js +0 -8
  19. package/build/common/messages/validation.array.messages.js +0 -13
  20. package/build/common/messages/validation.messages.js +0 -53
  21. package/build/controller/FlowController.js +0 -368
  22. package/build/controller/executePoll.js +0 -49
  23. package/build/controller/executeRefresh.js +0 -39
  24. package/build/controller/executeRequest.js +0 -77
  25. package/build/controller/executeSubmission.js +0 -69
  26. package/build/controller/getErrorMessage.js +0 -7
  27. package/build/controller/getRequestAbortController.js +0 -13
  28. package/build/controller/getResponseType.js +0 -35
  29. package/build/controller/getSafeHttpClient.js +0 -8
  30. package/build/controller/getStepCounter.js +0 -16
  31. package/build/controller/handleErrorResponse.js +0 -26
  32. package/build/controller/makeSafeHttpClient.js +0 -8
  33. package/build/controller/response-utils.js +0 -72
  34. package/build/domain/components/AlertComponent.js +0 -1
  35. package/build/domain/components/AllOfComponent.js +0 -40
  36. package/build/domain/components/BooleanInputComponent.js +0 -50
  37. package/build/domain/components/BoxComponent.js +0 -3
  38. package/build/domain/components/ButtonComponent.js +0 -1
  39. package/build/domain/components/ColumnsComponent.js +0 -3
  40. package/build/domain/components/ConstComponent.js +0 -18
  41. package/build/domain/components/ContainerComponent.js +0 -3
  42. package/build/domain/components/DateInputComponent.js +0 -75
  43. package/build/domain/components/DecisionComponent.js +0 -1
  44. package/build/domain/components/DividerComponent.js +0 -1
  45. package/build/domain/components/FormComponent.js +0 -3
  46. package/build/domain/components/FormattedValueComponent.js +0 -44
  47. package/build/domain/components/HeadingComponent.js +0 -1
  48. package/build/domain/components/ImageComponent.js +0 -1
  49. package/build/domain/components/InstructionsComponent.js +0 -1
  50. package/build/domain/components/IntegerInputComponent.js +0 -74
  51. package/build/domain/components/ListComponent.js +0 -1
  52. package/build/domain/components/LoadingIndicatorComponent.js +0 -1
  53. package/build/domain/components/MarkdownComponent.js +0 -1
  54. package/build/domain/components/MediaComponent.js +0 -1
  55. package/build/domain/components/ModalComponent.js +0 -16
  56. package/build/domain/components/ModalLayoutComponent.js +0 -3
  57. package/build/domain/components/MoneyInputComponent.js +0 -57
  58. package/build/domain/components/MultiSelectInputComponent.js +0 -81
  59. package/build/domain/components/MultiUploadInputComponent.js +0 -88
  60. package/build/domain/components/NumberInputComponent.js +0 -73
  61. package/build/domain/components/ObjectComponent.js +0 -45
  62. package/build/domain/components/ParagraphComponent.js +0 -1
  63. package/build/domain/components/PersistAsyncComponent.js +0 -92
  64. package/build/domain/components/ProgressComponent.js +0 -1
  65. package/build/domain/components/RepeatableComponent.js +0 -103
  66. package/build/domain/components/ReviewComponent.js +0 -1
  67. package/build/domain/components/RootDomainComponent.js +0 -173
  68. package/build/domain/components/SectionComponent.js +0 -5
  69. package/build/domain/components/SelectInputComponent.js +0 -88
  70. package/build/domain/components/StatusListComponent.js +0 -1
  71. package/build/domain/components/SubflowDomainComponent.js +0 -9
  72. package/build/domain/components/TabsComponent.js +0 -1
  73. package/build/domain/components/TextInputComponent.js +0 -76
  74. package/build/domain/components/TupleComponent.js +0 -41
  75. package/build/domain/components/UploadInputComponent.js +0 -83
  76. package/build/domain/components/UpsellComponent.js +0 -25
  77. package/build/domain/components/searchComponent/SearchComponent.js +0 -92
  78. package/build/domain/components/searchComponent/SearchComponent.test.js +0 -190
  79. package/build/domain/components/step/ExternalConfirmationComponent.js +0 -28
  80. package/build/domain/components/step/StepDomainComponent.js +0 -78
  81. package/build/domain/components/step/ToolbarComponent.js +0 -1
  82. package/build/domain/components/utils/WithUpdate.js +0 -1
  83. package/build/domain/components/utils/component-utils.js +0 -12
  84. package/build/domain/components/utils/debounce.js +0 -34
  85. package/build/domain/components/utils/debounce.test.js +0 -67
  86. package/build/domain/components/utils/file-utils.js +0 -21
  87. package/build/domain/components/utils/file-utils.test.js +0 -27
  88. package/build/domain/components/utils/getRandomId.js +0 -1
  89. package/build/domain/components/utils/isExactLocalValueMatch.js +0 -14
  90. package/build/domain/components/utils/isOrWasValid.js +0 -5
  91. package/build/domain/components/utils/isPartialModelMatch.js +0 -18
  92. package/build/domain/components/utils/isPartialModelMatch.test.js +0 -74
  93. package/build/domain/features/eventNames.js +0 -24
  94. package/build/domain/features/events.js +0 -1
  95. package/build/domain/features/persistAsync/getComponentMultiPersistAsync.js +0 -50
  96. package/build/domain/features/persistAsync/getInitialPersistedState.js +0 -7
  97. package/build/domain/features/persistAsync/getPerformPersistAsync.js +0 -43
  98. package/build/domain/features/persistAsync/getPerformPersistAsync.test.js +0 -139
  99. package/build/domain/features/polling/getStepPolling.js +0 -43
  100. package/build/domain/features/polling/getStepPolling.test.js +0 -90
  101. package/build/domain/features/prefetch/getStepPrefetch.js +0 -43
  102. package/build/domain/features/prefetch/request-cache.js +0 -49
  103. package/build/domain/features/prefetch/request-cache.test.js +0 -70
  104. package/build/domain/features/refreshAfter/getStepRefreshAfter.js +0 -24
  105. package/build/domain/features/refreshAfter/getStepRefreshAfter.test.js +0 -40
  106. package/build/domain/features/schema-on-change/getDebouncedSchemaOnChange.js +0 -50
  107. package/build/domain/features/schema-on-change/getSchemaOnChange.js +0 -34
  108. package/build/domain/features/search/getPerformSearchFunction.js +0 -75
  109. package/build/domain/features/search/getPerformSearchFunction.test.js +0 -301
  110. package/build/domain/features/summary/summary-utils.js +0 -40
  111. package/build/domain/features/summary/summary-utils.test.js +0 -125
  112. package/build/domain/features/utils/http-utils.js +0 -21
  113. package/build/domain/features/utils/response-utils.js +0 -9
  114. package/build/domain/features/validation/spec-utils.js +0 -19
  115. package/build/domain/features/validation/validateStringPattern.js +0 -24
  116. package/build/domain/features/validation/validation-functions.js +0 -6
  117. package/build/domain/features/validation/validation-functions.test.js +0 -108
  118. package/build/domain/features/validation/value-checks.js +0 -125
  119. package/build/domain/features/validation/value-checks.test.js +0 -262
  120. package/build/domain/features/validationAsync/getComponentValidationAsync.js +0 -53
  121. package/build/domain/features/validationAsync/getComponentValidationAsync.test.js +0 -67
  122. package/build/domain/features/validationAsync/getInitialValidationAsyncState.js +0 -5
  123. package/build/domain/features/validationAsync/getPerformValidationAsync.js +0 -45
  124. package/build/domain/features/validationAsync/getPerformValidationAsync.test.js +0 -143
  125. package/build/domain/mappers/layout/alertLayoutToComponent.js +0 -16
  126. package/build/domain/mappers/layout/boxLayoutToComponent.js +0 -13
  127. package/build/domain/mappers/layout/buttonLayoutToComponent.js +0 -77
  128. package/build/domain/mappers/layout/columnsLayoutToComponent.js +0 -13
  129. package/build/domain/mappers/layout/decisionLayoutToComponent.js +0 -22
  130. package/build/domain/mappers/layout/deprecatedListLayoutToComponent.js +0 -30
  131. package/build/domain/mappers/layout/dividerLayoutToComponent.js +0 -2
  132. package/build/domain/mappers/layout/formLayoutToComponent.js +0 -19
  133. package/build/domain/mappers/layout/headingLayoutToComponent.js +0 -12
  134. package/build/domain/mappers/layout/imageLayoutToComponent.js +0 -20
  135. package/build/domain/mappers/layout/infoLayoutToComponent.js +0 -12
  136. package/build/domain/mappers/layout/instructionsLayoutToComponent.js +0 -12
  137. package/build/domain/mappers/layout/listLayoutToComponent.js +0 -39
  138. package/build/domain/mappers/layout/loadingIndicatorLayoutToComponent.js +0 -9
  139. package/build/domain/mappers/layout/markdownLayoutToComponent.js +0 -12
  140. package/build/domain/mappers/layout/mediaLayoutToComponent.js +0 -12
  141. package/build/domain/mappers/layout/modalLayoutToComponent.js +0 -17
  142. package/build/domain/mappers/layout/modalToComponent.js +0 -8
  143. package/build/domain/mappers/layout/paragraphLayoutToComponent.js +0 -12
  144. package/build/domain/mappers/layout/progressLayoutToComponent.js +0 -15
  145. package/build/domain/mappers/layout/reviewLayoutToComponent.js +0 -48
  146. package/build/domain/mappers/layout/searchLayoutToComponent.js +0 -44
  147. package/build/domain/mappers/layout/sectionLayoutToComponent.js +0 -15
  148. package/build/domain/mappers/layout/statusListLayoutToComponent.js +0 -15
  149. package/build/domain/mappers/layout/tabsLayoutToComponent.js +0 -16
  150. package/build/domain/mappers/layout/upsellLayoutToComponent.js +0 -25
  151. package/build/domain/mappers/mapLayoutToComponent.js +0 -81
  152. package/build/domain/mappers/mapSchemaToComponent.js +0 -61
  153. package/build/domain/mappers/mapSchemaToComponent.test.js +0 -112
  154. package/build/domain/mappers/mapStepSchemas.js +0 -15
  155. package/build/domain/mappers/mapStepToComponent.js +0 -133
  156. package/build/domain/mappers/mapStepToComponent.test.js +0 -221
  157. package/build/domain/mappers/mapToolbarToComponent.js +0 -15
  158. package/build/domain/mappers/schema/allOfSchemaToComponent.js +0 -16
  159. package/build/domain/mappers/schema/arraySchemaToComponent/arraySchemaToComponent.js +0 -26
  160. package/build/domain/mappers/schema/arraySchemaToComponent/arraySchemaToMultiSelectComponent.js +0 -55
  161. package/build/domain/mappers/schema/arraySchemaToComponent/arraySchemaToMultiUploadComponent.js +0 -67
  162. package/build/domain/mappers/schema/arraySchemaToComponent/arraySchemaToRepeatableComponent.js +0 -57
  163. package/build/domain/mappers/schema/arraySchemaToComponent/arraySchemaToTupleComponent.js +0 -20
  164. package/build/domain/mappers/schema/blobSchemaToComponent.js +0 -15
  165. package/build/domain/mappers/schema/booleanSchemaToComponent.js +0 -29
  166. package/build/domain/mappers/schema/constSchemaToComponent.js +0 -23
  167. package/build/domain/mappers/schema/integerSchemaToComponent.js +0 -28
  168. package/build/domain/mappers/schema/numberSchemaToComponent.js +0 -26
  169. package/build/domain/mappers/schema/objectSchemaToComponent/assertDisplayOrder.js +0 -23
  170. package/build/domain/mappers/schema/objectSchemaToComponent/objectSchemaToFormattedValueComponent.js +0 -9
  171. package/build/domain/mappers/schema/objectSchemaToComponent/objectSchemaToMoneyInputComponent.js +0 -119
  172. package/build/domain/mappers/schema/objectSchemaToComponent/objectSchemaToMoneyInputComponent.test.js +0 -96
  173. package/build/domain/mappers/schema/objectSchemaToComponent/objectSchemaToObjectComponent.js +0 -31
  174. package/build/domain/mappers/schema/objectSchemaToComponent/objectSchemaToObjectComponent.test.js +0 -99
  175. package/build/domain/mappers/schema/oneOfSchemaToComponent/oneOfSchemaToComponent.js +0 -66
  176. package/build/domain/mappers/schema/oneOfSchemaToComponent/oneOfSchemaToComponent.test.js +0 -225
  177. package/build/domain/mappers/schema/persistAsyncSchemaToComponent.js +0 -29
  178. package/build/domain/mappers/schema/stringSchemaToComponent/stringSchemaToComponent.js +0 -18
  179. package/build/domain/mappers/schema/stringSchemaToComponent/stringSchemaToComponent.test.js +0 -133
  180. package/build/domain/mappers/schema/stringSchemaToComponent/stringSchemaToDateInputComponent.js +0 -48
  181. package/build/domain/mappers/schema/stringSchemaToComponent/stringSchemaToTextInputComponent.js +0 -37
  182. package/build/domain/mappers/schema/stringSchemaToComponent/stringSchemaToUploadInputComponent.js +0 -28
  183. package/build/domain/mappers/schema/tests/test-utils.js +0 -16
  184. package/build/domain/mappers/schema/types.js +0 -1
  185. package/build/domain/mappers/schema/utils/getPerformPersistAsyncFn.js +0 -19
  186. package/build/domain/mappers/schema/utils/getValidationAsyncInitialState.js +0 -23
  187. package/build/domain/mappers/schema/utils/mapCommonSchemaProps.js +0 -16
  188. package/build/domain/mappers/types.js +0 -1
  189. package/build/domain/mappers/utils/FeatureFlags.js +0 -22
  190. package/build/domain/mappers/utils/behavior-utils.js +0 -44
  191. package/build/domain/mappers/utils/call-to-action-utils.js +0 -21
  192. package/build/domain/mappers/utils/getAutocompleteString.js +0 -76
  193. package/build/domain/mappers/utils/getAutocompleteString.test.js +0 -21
  194. package/build/domain/mappers/utils/groupLayoutByPinned.js +0 -38
  195. package/build/domain/mappers/utils/groupLayoutByPinned.test.js +0 -166
  196. package/build/domain/mappers/utils/image.js +0 -9
  197. package/build/domain/mappers/utils/layout-utils.js +0 -11
  198. package/build/domain/mappers/utils/legacy-utils.js +0 -49
  199. package/build/domain/mappers/utils/media-utils.js +0 -14
  200. package/build/domain/mappers/utils/suggestions-utils.js +0 -26
  201. package/build/domain/mappers/utils/suggestions-utils.test.js +0 -36
  202. package/build/domain/mappers/utils/tags-utils.js +0 -1
  203. package/build/domain/mappers/utils/utils.js +0 -35
  204. package/build/domain/types.js +0 -1
  205. package/build/getSubflowCallbacks.js +0 -38
  206. package/build/i18n/index.js +0 -40
  207. package/build/index.js +0 -8
  208. package/build/renderers/CoreContainerRenderer.js +0 -5
  209. package/build/renderers/CoreRootRenderer.js +0 -12
  210. package/build/renderers/EmptyLoadingStateRenderer.js +0 -5
  211. package/build/renderers/getRenderFunction.js +0 -24
  212. package/build/renderers/getSchemaErrorMessageFunction.js +0 -97
  213. package/build/renderers/mappers/alertComponentToProps.js +0 -2
  214. package/build/renderers/mappers/allOfComponentToProps.js +0 -6
  215. package/build/renderers/mappers/booleanInputComponentToProps.js +0 -5
  216. package/build/renderers/mappers/boxComponentToProps.js +0 -13
  217. package/build/renderers/mappers/buttonComponentToProps.js +0 -4
  218. package/build/renderers/mappers/columnsComponentToProps.js +0 -11
  219. package/build/renderers/mappers/componentToRendererProps.js +0 -164
  220. package/build/renderers/mappers/constComponentToProps.js +0 -5
  221. package/build/renderers/mappers/containerComponentToProps.js +0 -7
  222. package/build/renderers/mappers/dateInputComponentToProps.js +0 -2
  223. package/build/renderers/mappers/decisionComponentToProps.js +0 -16
  224. package/build/renderers/mappers/dividerComponentToProps.js +0 -2
  225. package/build/renderers/mappers/externalComponentToProps.js +0 -3
  226. package/build/renderers/mappers/formComponentToProps.js +0 -12
  227. package/build/renderers/mappers/formattedValueComponentToProps.js +0 -5
  228. package/build/renderers/mappers/headingComponentToProps.js +0 -2
  229. package/build/renderers/mappers/hiddenComponentToProps.js +0 -4
  230. package/build/renderers/mappers/imageComponentToProps.js +0 -2
  231. package/build/renderers/mappers/instructionsComponentToProps.js +0 -2
  232. package/build/renderers/mappers/integerInputComponentToProps.js +0 -2
  233. package/build/renderers/mappers/listComponentToProps.js +0 -2
  234. package/build/renderers/mappers/loadingIndicatorComponentToProps.js +0 -2
  235. package/build/renderers/mappers/markdownComponentToProps.js +0 -2
  236. package/build/renderers/mappers/mediaComponentToProps.js +0 -2
  237. package/build/renderers/mappers/modalComponentToProps.js +0 -11
  238. package/build/renderers/mappers/modalLayoutComponentToProps.js +0 -16
  239. package/build/renderers/mappers/moneyInputComponentToProps.js +0 -36
  240. package/build/renderers/mappers/multiSelectComponentToProps.js +0 -23
  241. package/build/renderers/mappers/multiUploadInputComponentToProps.js +0 -12
  242. package/build/renderers/mappers/numberInputComponentToProps.js +0 -2
  243. package/build/renderers/mappers/objectComponentToProps.js +0 -8
  244. package/build/renderers/mappers/paragraphComponentToProps.js +0 -2
  245. package/build/renderers/mappers/persistAsyncComponentToProps.js +0 -8
  246. package/build/renderers/mappers/progressComponentToProps.js +0 -2
  247. package/build/renderers/mappers/repeatableComponentToProps.js +0 -30
  248. package/build/renderers/mappers/reviewComponentToProps.js +0 -2
  249. package/build/renderers/mappers/rootComponentToProps.js +0 -21
  250. package/build/renderers/mappers/searchComponentToProps.js +0 -57
  251. package/build/renderers/mappers/sectionComponentToProps.js +0 -6
  252. package/build/renderers/mappers/selectInputComponentToProps.js +0 -34
  253. package/build/renderers/mappers/statusListComponentToProps.js +0 -2
  254. package/build/renderers/mappers/subflowComponentToRendererProps.js +0 -4
  255. package/build/renderers/mappers/tabsComponentToProps.js +0 -14
  256. package/build/renderers/mappers/textInputComponentToProps.js +0 -2
  257. package/build/renderers/mappers/tupleComponentToProps.js +0 -8
  258. package/build/renderers/mappers/uploadInputComponentToProps.js +0 -8
  259. package/build/renderers/mappers/upsellComponentToProps.js +0 -2
  260. package/build/renderers/mappers/utils/getValidationState.js +0 -12
  261. package/build/renderers/mappers/utils/inputComponentToProps.js +0 -26
  262. package/build/renderers/mappers/utils/mapErrorsToValidationState.js +0 -9
  263. package/build/renderers/mappers/utils/pick.js +0 -8
  264. package/build/renderers/mappers/utils/selectInputOptionsToProps.js +0 -11
  265. package/build/renderers/stepComponentToProps.js +0 -32
  266. package/build/renderers/utils.js +0 -69
  267. package/build/renderers/utils.test.js +0 -70
  268. package/build/stories/dev-tools/ContainerQueries.story.js +0 -66
  269. package/build/stories/dev-tools/Debugger.story.js +0 -38
  270. package/build/stories/dev-tools/FixtureSelect.story.js +0 -23
  271. package/build/stories/dev-tools/TestServer.story.js +0 -32
  272. package/build/stories/examples/NativeFlow.story.js +0 -80
  273. package/build/stories/examples/Recipients.story.js +0 -568
  274. package/build/stories/spec/behavior/Copy.story.js +0 -59
  275. package/build/stories/spec/behavior/Modal.story.js +0 -76
  276. package/build/stories/spec/behavior/Subflow.story.js +0 -267
  277. package/build/stories/spec/layouts/Decision.story.js +0 -241
  278. package/build/stories/spec/layouts/Image.story.js +0 -42
  279. package/build/stories/spec/layouts/Modal.story.js +0 -81
  280. package/build/stories/spec/layouts/Search.story.js +0 -325
  281. package/build/stories/spec/layouts/Upsell.story.js +0 -55
  282. package/build/stories/spec/layouts/button/Button.story.js +0 -100
  283. package/build/stories/spec/layouts/button/PinnedButton.story.js +0 -81
  284. package/build/stories/spec/response/ActionResponse.story.js +0 -66
  285. package/build/stories/spec/schemas/MultiSelect.story.js +0 -148
  286. package/build/stories/spec/schemas/Upload.story.js +0 -168
  287. package/build/stories/spec/schemas/const/ConstLayout.story.js +0 -159
  288. package/build/stories/spec/schemas/const/ObjectConst.story.js +0 -94
  289. package/build/stories/spec/schemas/features/PersistAsync.story.js +0 -211
  290. package/build/stories/spec/schemas/features/ValidationAsync.story.js +0 -103
  291. package/build/stories/spec/schemas/object/FormattedValue.story.js +0 -92
  292. package/build/stories/spec/schemas/object/MoneyInput.story.js +0 -240
  293. package/build/stories/spec/schemas/oneOf/OneOfInitialisation.story.js +0 -55
  294. package/build/stories/spec/schemas/oneOf/OneOfWithSingleOption.story.js +0 -114
  295. package/build/stories/spec/step/Controls.story.js +0 -109
  296. package/build/stories/spec/step/DFModal.story.js +0 -58
  297. package/build/stories/spec/step/Footer.story.js +0 -70
  298. package/build/stories/spec/step/Navigation.story.js +0 -20
  299. package/build/stories/spec/step/Tags.story.js +0 -39
  300. package/build/stories/spec/step/ToolBar.story.js +0 -60
  301. package/build/stories/spec/step/features/ErrorHandling.story.js +0 -92
  302. package/build/stories/spec/step/features/External.story.js +0 -44
  303. package/build/stories/spec/step/features/Polling.story.js +0 -108
  304. package/build/stories/spec/step/features/RefreshAfter.story.js +0 -92
  305. package/build/stories/spec/step/features/refresh/Refresh.story.js +0 -258
  306. package/build/stories/spec/step/features/refresh/RefreshWithPersistAsync.story.js +0 -958
  307. package/build/stories/types.js +0 -1
  308. package/build/stories/utils/fixtureHttpClient.js +0 -70
  309. package/build/stories/utils/getBasicStep.js +0 -223
  310. package/build/stories/utils/mockSearchHandler.js +0 -71
  311. package/build/stories/utils/render-utils.js +0 -41
  312. package/build/stories/visual-tests/layouts/NotUsingListItem.story.js +0 -17
  313. package/build/test-utils/DynamicFlowWise.js +0 -32
  314. package/build/test-utils/DynamicFlowWiseModal.js +0 -34
  315. package/build/test-utils/NeptuneProviders.js +0 -11
  316. package/build/test-utils/component-utils.js +0 -5
  317. package/build/test-utils/fetch-utils.js +0 -45
  318. package/build/test-utils/getMergedTestRenderers.js +0 -34
  319. package/build/test-utils/getRandomId.js +0 -1
  320. package/build/test-utils/index.js +0 -3
  321. package/build/test-utils/rtl-utils.js +0 -7
  322. package/build/test-utils/step-utils.js +0 -6
  323. package/build/test-utils/wait.js +0 -3
  324. package/build/tests/AlertLayout.test.js +0 -78
  325. package/build/tests/ArrayTuple.test.js +0 -118
  326. package/build/tests/ButtonLayout.test.js +0 -308
  327. package/build/tests/ConstLayout.test.js +0 -95
  328. package/build/tests/DateInput.test.js +0 -163
  329. package/build/tests/DecisionLayout.test.js +0 -146
  330. package/build/tests/DynamicFlow.test.js +0 -147
  331. package/build/tests/External.test.js +0 -169
  332. package/build/tests/Flow.test.js +0 -328
  333. package/build/tests/FormLayout.test.js +0 -28
  334. package/build/tests/FormattedValue.test.js +0 -107
  335. package/build/tests/ImageRenderer.test.js +0 -78
  336. package/build/tests/InitialAction.test.js +0 -179
  337. package/build/tests/InitialStep.test.js +0 -168
  338. package/build/tests/InstructionsLayout.test.js +0 -45
  339. package/build/tests/ListLayout.test.js +0 -145
  340. package/build/tests/Logging.test.js +0 -53
  341. package/build/tests/ModalBehavior.test.js +0 -149
  342. package/build/tests/MoneyInput.test.js +0 -316
  343. package/build/tests/MultiUpload.test.js +0 -293
  344. package/build/tests/NativeBack.test.js +0 -267
  345. package/build/tests/OneOfInitialisation.test.js +0 -571
  346. package/build/tests/PersistAsync.test.js +0 -686
  347. package/build/tests/Polling.test.js +0 -617
  348. package/build/tests/Prefetching.test.js +0 -230
  349. package/build/tests/RefreshAfter.test.js +0 -63
  350. package/build/tests/RefreshOnChange.ResponseHandling.test.js +0 -205
  351. package/build/tests/RefreshOnChange.test.js +0 -233
  352. package/build/tests/RefreshOnChange.with.Segmented.test.js +0 -348
  353. package/build/tests/RefreshOnChange.with.Tabs.test.js +0 -358
  354. package/build/tests/RefreshOnChangePreserve.test.js +0 -224
  355. package/build/tests/RendererProps.test.js +0 -342
  356. package/build/tests/Repeatable.test.js +0 -107
  357. package/build/tests/Rerendering.test.js +0 -67
  358. package/build/tests/ReviewLayout.test.js +0 -274
  359. package/build/tests/SchemaOnChange.test.js +0 -133
  360. package/build/tests/SchemaReferences.test.js +0 -88
  361. package/build/tests/ScrollToError.test.js +0 -217
  362. package/build/tests/SegmentedControl.test.js +0 -49
  363. package/build/tests/SingleFileUpload.test.js +0 -88
  364. package/build/tests/StatusList.test.js +0 -85
  365. package/build/tests/Subflow.test.js +0 -710
  366. package/build/tests/Submission.ResponseHandling.test.js +0 -557
  367. package/build/tests/Submission.merging.test.js +0 -202
  368. package/build/tests/Submission.test.js +0 -603
  369. package/build/tests/Tags.test.js +0 -475
  370. package/build/tests/Upsell.test.js +0 -126
  371. package/build/tests/ValidationAsync.test.js +0 -295
  372. package/build/tests/legacy/Actions.test.js +0 -158
  373. package/build/tests/legacy/BackButton.test.js +0 -114
  374. package/build/tests/legacy/HiddenSchemas.test.js +0 -246
  375. package/build/tests/legacy/MultiSelect.test.js +0 -497
  376. package/build/tests/legacy/MultipleFileUploadSchema.test.js +0 -341
  377. package/build/tests/legacy/PersistAsync.blob-schema.test.js +0 -224
  378. package/build/tests/legacy/PersistAsync.string-schema.test.js +0 -211
  379. package/build/tests/legacy/RefreshStepOnChange.debouncing.test.js +0 -209
  380. package/build/tests/legacy/RefreshStepOnChange.test.js +0 -424
  381. package/build/tests/legacy/Search.test.js +0 -437
  382. package/build/tests/renderers/MultiSelectInputRendererProps.test.js +0 -58
  383. package/build/tests/renderers/SelectInputRendererProps.test.js +0 -43
  384. package/build/tests/renderers/TextInputRenderer.test.js +0 -51
  385. package/build/types.js +0 -1
  386. package/build/useDynamicFlow.js +0 -104
  387. package/build/useDynamicFlowModal.js +0 -58
  388. package/build/utils/analyse-step.js +0 -14
  389. package/build/utils/component-utils.js +0 -8
  390. package/build/utils/component-utils.test.js +0 -113
  391. package/build/utils/getScrollToTop.js +0 -12
  392. package/build/utils/normalise-flow-id.js +0 -1
  393. package/build/utils/normalise-flow-id.test.js +0 -24
  394. package/build/utils/openLinkInNewTab.js +0 -10
  395. package/build/utils/recursiveMerge.js +0 -40
  396. package/build/utils/recursiveMerge.test.js +0 -93
  397. package/build/utils/type-utils.js +0 -21
  398. package/build/utils/type-validators.js +0 -11
  399. package/build/utils/type-validators.test.js +0 -180
  400. package/build/utils/useStableCallback.js +0 -15
@@ -1,293 +0,0 @@
1
- import { jsx as _jsx } from "react/jsx-runtime";
2
- import { screen, waitFor } from '@testing-library/react';
3
- import { arraySchemaToMultiUploadComponent } from '../domain/mappers/schema/arraySchemaToComponent/arraySchemaToMultiUploadComponent';
4
- import { getMockMapperProps, getMockSchemaMapperProps, getUpdateFunctionMock, } from '../domain/mappers/schema/tests/test-utils';
5
- import { renderWithProviders, respondWith } from '../test-utils';
6
- import DynamicFlowWise from '../test-utils/DynamicFlowWise';
7
- import userEvent from '@testing-library/user-event';
8
- import { vi } from 'vitest';
9
- const user = userEvent.setup({ advanceTimers: vi.advanceTimersByTime });
10
- describe('given a multi-file upload schema', () => {
11
- describe('that has a per-file validation (accepts/maxSize)', () => {
12
- const schema = {
13
- type: 'array',
14
- addItemTitle: '',
15
- editItemTitle: '',
16
- validationMessages: {
17
- accepts: 'This should not be used',
18
- },
19
- items: {
20
- type: 'string',
21
- accepts: ['application/pdf'],
22
- title: 'Upload your passport',
23
- validationMessages: {
24
- accepts: 'Sorry, that file format is not supported. Please upload a different file',
25
- },
26
- format: 'base64url',
27
- maxSize: 10,
28
- },
29
- };
30
- describe('and the uploaded file is valid', () => {
31
- it('does not set an error message in the error map', async () => {
32
- const mockUpdateFn = getUpdateFunctionMock(() => component);
33
- const component = arraySchemaToMultiUploadComponent(Object.assign(Object.assign({}, getMockSchemaMapperProps({ schema })), { model: null }), Object.assign(Object.assign({}, getMockMapperProps()), { onComponentUpdate: mockUpdateFn }));
34
- const file = new File(['fooo'], 'file.pdf', {
35
- type: 'application/pdf',
36
- });
37
- await component.onInsertFile(0, file);
38
- expect(component.files[0].errors).toStrictEqual([]);
39
- });
40
- });
41
- describe('and the uploaded file is invalid', () => {
42
- it('because it is the wrong type, sets the file errors in the in the error map', async () => {
43
- const mockUpdateFn = getUpdateFunctionMock(() => component);
44
- const component = arraySchemaToMultiUploadComponent(Object.assign(Object.assign({}, getMockSchemaMapperProps({ schema })), { model: null }), Object.assign(Object.assign({}, getMockMapperProps()), { onComponentUpdate: mockUpdateFn }));
45
- const file = new File(['foo'], 'file.png', { type: 'image/png' });
46
- await component.onInsertFile(0, file);
47
- expect(component.files[0].errors).toStrictEqual(['accepts']);
48
- });
49
- it('because it is too big, sets the file errors in the in the error map', async () => {
50
- const mockUpdateFn = getUpdateFunctionMock(() => component);
51
- const component = arraySchemaToMultiUploadComponent(Object.assign(Object.assign({}, getMockSchemaMapperProps({ schema })), { model: null }), Object.assign(Object.assign({}, getMockMapperProps()), { onComponentUpdate: mockUpdateFn }));
52
- const file = new File(['foooooooooo'], 'file.pdf', {
53
- type: 'application/pdf',
54
- });
55
- await component.onInsertFile(0, file);
56
- expect(component.files[0].errors).toStrictEqual(['maxSize']);
57
- });
58
- it('uses validationMessages from the items schema, not the array schema', async () => {
59
- const mockUpdateFn = getUpdateFunctionMock(() => component);
60
- const getErrorMessageFunctions = vi
61
- .fn()
62
- .mockImplementation((validationMessages) => ({
63
- accepts: () => {
64
- return validationMessages.accepts;
65
- },
66
- }));
67
- const component = arraySchemaToMultiUploadComponent(Object.assign(Object.assign({}, getMockSchemaMapperProps({ schema })), { model: null }), Object.assign(Object.assign({}, getMockMapperProps()), { onComponentUpdate: mockUpdateFn, getErrorMessageFunctions }));
68
- getErrorMessageFunctions.mockClear();
69
- const file = new File(['foo'], 'file.png', { type: 'image/png' });
70
- await component.onInsertFile(0, file);
71
- expect(component.files[0].errors).toStrictEqual([
72
- 'Sorry, that file format is not supported. Please upload a different file',
73
- ]);
74
- });
75
- });
76
- });
77
- describe('that has persist-async', () => {
78
- describe('when deleting an uploaded file, while there are multiple', () => {
79
- it('deleting an uploaded file should remove only that file, leaving the others intact', async () => {
80
- const step = {
81
- id: 'step-id',
82
- title: 'Blob Upload (Multiple, Persist Async)',
83
- schemas: [
84
- {
85
- $id: '#id',
86
- type: 'array',
87
- title: 'Upload label',
88
- maxItems: 5,
89
- addItemTitle: 'Add',
90
- editItemTitle: 'Edit',
91
- items: {
92
- type: 'string',
93
- persistAsync: {
94
- method: 'POST',
95
- url: '/persist-async',
96
- param: 'param',
97
- idProperty: 'token',
98
- schema: {
99
- type: 'blob',
100
- source: 'file',
101
- title: 'Upload label',
102
- description: 'PNG, JPG, or PDF, less than 5mb',
103
- accepts: ['image/png', 'image/jpeg', 'application/pdf'],
104
- maxSize: 5242000,
105
- validationMessages: {
106
- maxSize: 'Your file is too large',
107
- },
108
- },
109
- },
110
- },
111
- },
112
- ],
113
- layout: [
114
- {
115
- type: 'form',
116
- schemaId: '#id',
117
- },
118
- {
119
- type: 'button',
120
- title: 'Submit',
121
- action: {
122
- url: '/submit',
123
- method: 'POST',
124
- },
125
- },
126
- ],
127
- };
128
- const httpClient = vi
129
- .fn()
130
- .mockImplementationOnce(async () => {
131
- return respondWith({ token: '123' });
132
- })
133
- .mockImplementationOnce(async () => {
134
- return respondWith({ token: '456' });
135
- })
136
- .mockImplementationOnce(async () => {
137
- return respondWith({ token: '789' });
138
- })
139
- .mockImplementationOnce(async () => {
140
- return respondWith(null, { headers: { 'X-DF-Response-Type': 'exit' } });
141
- });
142
- renderWithProviders(_jsx(DynamicFlowWise, { flowId: "id", initialStep: step, httpClient: httpClient, onCompletion: vi.fn(), onError: vi.fn() }));
143
- await user.upload(screen.getByTestId('uploadInput'), new File([''], 'file.png', { type: 'image/png' }));
144
- await waitFor(() => {
145
- expect(screen.getByText('Uploaded')).toBeInTheDocument();
146
- });
147
- await user.upload(screen.getByTestId('uploadInput'), new File([''], 'file.jpg', { type: 'image/jpeg' }));
148
- await user.upload(screen.getByTestId('uploadInput'), new File([''], 'file.pdf', { type: 'application/pdf' }));
149
- await waitFor(() => {
150
- expect(screen.getAllByText('Uploaded')).toHaveLength(3);
151
- });
152
- await user.click(screen.getAllByTestId('bin-icon')[1]);
153
- httpClient.mockClear();
154
- await waitFor(() => {
155
- expect(screen.getByRole('button', { name: 'Remove' })).toBeInTheDocument();
156
- });
157
- await user.click(screen.getByRole('button', { name: 'Remove' }));
158
- await waitFor(() => {
159
- expect(screen.getAllByText('Uploaded')).toHaveLength(2);
160
- });
161
- await user.click(screen.getByRole('button', { name: 'Submit' }));
162
- await waitFor(() => {
163
- expect(httpClient).toHaveBeenCalledWith('/submit', expect.objectContaining({ body: '["123","789"]' }));
164
- });
165
- });
166
- });
167
- });
168
- describe('and the first file upload fails server validation, and then a second file is uploaded', () => {
169
- const step = {
170
- id: 'step-id',
171
- title: 'Blob Upload (Multiple, Persist Async)',
172
- schemas: [
173
- {
174
- $id: '#id',
175
- type: 'array',
176
- title: 'Upload label',
177
- maxItems: 5,
178
- addItemTitle: 'Add',
179
- editItemTitle: 'Edit',
180
- items: {
181
- type: 'string',
182
- persistAsync: {
183
- method: 'POST',
184
- url: '/persist-async',
185
- param: 'param',
186
- idProperty: 'token',
187
- schema: {
188
- type: 'blob',
189
- source: 'file',
190
- title: 'Upload label',
191
- description: 'PNG, JPG, or PDF, less than 5mb',
192
- accepts: ['image/png', 'image/jpg', 'application/pdf'],
193
- maxSize: 5242000,
194
- validationMessages: {
195
- maxSize: 'Your file is too large',
196
- },
197
- },
198
- },
199
- },
200
- },
201
- ],
202
- layout: [
203
- {
204
- type: 'form',
205
- schemaId: '#id',
206
- },
207
- {
208
- type: 'button',
209
- title: 'Submit',
210
- action: {
211
- url: '/submit',
212
- method: 'POST',
213
- },
214
- },
215
- ],
216
- };
217
- it('correctly uploads the second file, and has removed the first', async () => {
218
- const httpClient = vi
219
- .fn()
220
- .mockImplementationOnce(async () => {
221
- return respondWith({}, { status: 422 });
222
- })
223
- .mockImplementationOnce(async () => {
224
- return respondWith({ token: '12345' });
225
- });
226
- renderWithProviders(_jsx(DynamicFlowWise, { flowId: "id", initialStep: step, httpClient: httpClient, onCompletion: vi.fn(), onError: vi.fn() }));
227
- await user.upload(screen.getByTestId('uploadInput'), new File([''], 'file.png', { type: 'image/png' }));
228
- await waitFor(() => {
229
- expect(screen.getByText('Something went wrong.')).toBeInTheDocument();
230
- });
231
- await user.click(screen.getByTestId('bin-icon'));
232
- await user.upload(screen.getByTestId('uploadInput'), new File([''], 'file.png', { type: 'image/png' }));
233
- await waitFor(() => {
234
- expect(screen.getByText('Uploaded')).toBeInTheDocument();
235
- });
236
- });
237
- });
238
- describe('and the array schema has hidden: true', () => {
239
- const step = {
240
- id: 'step-id',
241
- title: 'Blob Upload (Multiple, Persist Async)',
242
- schemas: [
243
- {
244
- $id: '#id',
245
- type: 'array',
246
- hidden: true,
247
- title: 'Upload label',
248
- maxItems: 5,
249
- addItemTitle: 'Add',
250
- editItemTitle: 'Edit',
251
- items: {
252
- type: 'string',
253
- persistAsync: {
254
- method: 'POST',
255
- url: '/persist-async',
256
- param: 'param',
257
- idProperty: 'token',
258
- schema: {
259
- type: 'blob',
260
- source: 'file',
261
- title: 'Upload label',
262
- description: 'PNG, JPG, or PDF, less than 5mb',
263
- accepts: ['image/png', 'image/jpg', 'application/pdf'],
264
- maxSize: 5242000,
265
- validationMessages: {
266
- maxSize: 'Your file is too large',
267
- },
268
- },
269
- },
270
- },
271
- },
272
- ],
273
- layout: [
274
- {
275
- type: 'form',
276
- schemaId: '#id',
277
- },
278
- {
279
- type: 'button',
280
- title: 'Submit',
281
- action: {
282
- url: '/submit',
283
- method: 'POST',
284
- },
285
- },
286
- ],
287
- };
288
- it('does not render the upload', () => {
289
- renderWithProviders(_jsx(DynamicFlowWise, { flowId: "id", initialStep: step, httpClient: vi.fn(), onCompletion: vi.fn(), onError: vi.fn() }));
290
- expect(screen.queryByLabelText('Upload label')).not.toBeInTheDocument();
291
- });
292
- });
293
- });
@@ -1,267 +0,0 @@
1
- import { jsx as _jsx } from "react/jsx-runtime";
2
- import { renderWithProviders, respondWith } from '../test-utils';
3
- import DynamicFlowWise from '../test-utils/DynamicFlowWise';
4
- import { act, screen, waitFor } from '@testing-library/react';
5
- import userEvent from '@testing-library/user-event';
6
- import { respondWithDelay } from '../test-utils/fetch-utils';
7
- import { vi } from 'vitest';
8
- const user = userEvent.setup({ advanceTimers: vi.advanceTimersByTime });
9
- describe('native back', () => {
10
- const getDefaultProps = () => ({
11
- flowId: 'flow-id',
12
- features: {
13
- nativeBack: true,
14
- },
15
- httpClient: vi.fn(),
16
- onCompletion: vi.fn(),
17
- onError: vi.fn(),
18
- onEvent: vi.fn(),
19
- onLog: vi.fn(),
20
- });
21
- const step = {
22
- id: 'step-id',
23
- title: 'Initial step',
24
- layout: [
25
- {
26
- type: 'button',
27
- title: 'Submit',
28
- behavior: {
29
- type: 'action',
30
- action: {
31
- url: '/submit',
32
- },
33
- },
34
- },
35
- ],
36
- schemas: [],
37
- };
38
- describe('given no stack behavior', () => {
39
- const getMockHttpClient = () => {
40
- let stepCount = 1;
41
- return vi.fn().mockImplementation(async (input) => {
42
- if (input === '/upload') {
43
- return respondWith({ token: '123' });
44
- }
45
- stepCount += 1;
46
- return respondWith(Object.assign(Object.assign({}, step), { title: `Step ${stepCount}` }));
47
- });
48
- };
49
- it('shows a back button on the initial step that cancels the flow if onCancellation is provided', async () => {
50
- const onCancellation = vi.fn();
51
- renderWithProviders(_jsx(DynamicFlowWise, Object.assign({ initialStep: step }, getDefaultProps(), { httpClient: getMockHttpClient(), onCancellation: onCancellation })));
52
- expect(screen.getByText('Initial step')).toBeInTheDocument();
53
- expect(screen.getByRole('button', { name: 'Back' })).toBeInTheDocument();
54
- await user.click(screen.getByRole('button', { name: 'Back' }));
55
- expect(onCancellation).toHaveBeenCalled();
56
- });
57
- it('does not show a back button on the initial step if onCancellation is not provided', async () => {
58
- renderWithProviders(_jsx(DynamicFlowWise, Object.assign({ initialStep: step }, getDefaultProps(), { httpClient: getMockHttpClient() })));
59
- expect(screen.getByText('Initial step')).toBeInTheDocument();
60
- expect(screen.queryByRole('button', { name: 'Back' })).not.toBeInTheDocument();
61
- });
62
- it('adds new steps that can be navigated back from', async () => {
63
- renderWithProviders(_jsx(DynamicFlowWise, Object.assign({ initialStep: step }, getDefaultProps(), { httpClient: getMockHttpClient() })));
64
- expect(screen.getByText('Initial step')).toBeInTheDocument();
65
- await user.click(screen.getByRole('button', { name: 'Submit' }));
66
- expect(screen.getByText('Step 2')).toBeInTheDocument();
67
- await user.click(screen.getByRole('button', { name: 'Submit' }));
68
- expect(screen.getByText('Step 3')).toBeInTheDocument();
69
- await user.click(screen.getByRole('button', { name: 'Back' }));
70
- expect(screen.getByText('Step 2')).toBeInTheDocument();
71
- await user.click(screen.getByRole('button', { name: 'Back' }));
72
- expect(screen.getByText('Initial step')).toBeInTheDocument();
73
- await user.click(screen.getByRole('button', { name: 'Submit' }));
74
- await waitFor(() => {
75
- expect(screen.getByText('Step 4')).toBeInTheDocument();
76
- });
77
- });
78
- it('restores state from the previous step', async () => {
79
- renderWithProviders(_jsx(DynamicFlowWise, Object.assign({ initialStep: Object.assign(Object.assign({}, step), { schemas: [
80
- {
81
- $id: '#schema',
82
- type: 'string',
83
- title: 'Name',
84
- },
85
- ], layout: [
86
- {
87
- type: 'form',
88
- schemaId: '#schema',
89
- },
90
- ...step.layout,
91
- ] }) }, getDefaultProps(), { httpClient: getMockHttpClient() })));
92
- expect(screen.getByText('Initial step')).toBeInTheDocument();
93
- await user.type(screen.getByLabelText('Name'), 'John Doe');
94
- await user.click(screen.getByRole('button', { name: 'Submit' }));
95
- expect(screen.getByText('Step 2')).toBeInTheDocument();
96
- await user.click(screen.getByRole('button', { name: 'Back' }));
97
- expect(screen.getByDisplayValue('John Doe')).toBeInTheDocument();
98
- });
99
- it('restores (visual) state from the previous step when there is an upload', async () => {
100
- renderWithProviders(_jsx(DynamicFlowWise, Object.assign({ initialStep: Object.assign(Object.assign({}, step), { schemas: [
101
- {
102
- $id: '#schema',
103
- type: 'string',
104
- persistAsync: {
105
- param: 'file',
106
- idProperty: 'token',
107
- method: 'POST',
108
- url: '/upload',
109
- schema: {
110
- type: 'blob',
111
- },
112
- },
113
- },
114
- ], layout: [
115
- {
116
- type: 'form',
117
- schemaId: '#schema',
118
- },
119
- ...step.layout,
120
- ] }) }, getDefaultProps(), { httpClient: getMockHttpClient() })));
121
- expect(screen.getByText('Initial step')).toBeInTheDocument();
122
- await user.upload(screen.getByTestId('uploadInput'), new File([''], 'my_file.png', { type: 'image/png' }));
123
- expect(screen.getByText('my_file.png')).toBeInTheDocument();
124
- await user.click(screen.getByRole('button', { name: 'Submit' }));
125
- await waitFor(() => {
126
- expect(screen.getByText('Step 2')).toBeInTheDocument();
127
- });
128
- await user.click(screen.getByRole('button', { name: 'Back' }));
129
- expect(screen.getByText('my_file.png')).toBeInTheDocument();
130
- });
131
- it('removes previous step if it has polling', async () => {
132
- const httpClient = vi
133
- .fn()
134
- .mockImplementationOnce(async () => {
135
- return respondWith(Object.assign(Object.assign({}, step), { title: 'Polling step', polling: {
136
- delay: 1,
137
- url: '/poll',
138
- maxAttempts: 5,
139
- onError: { behavior: { type: 'action', action: {} } },
140
- } }));
141
- })
142
- .mockImplementationOnce(async () => {
143
- return respondWithDelay(Object.assign(Object.assign({}, step), { title: 'Step after polling' }), 1000, {
144
- headers: { 'X-DF-Response-Type': 'step' },
145
- });
146
- });
147
- renderWithProviders(_jsx(DynamicFlowWise, Object.assign({ initialStep: step }, getDefaultProps(), { httpClient: httpClient })));
148
- expect(screen.getByText('Initial step')).toBeInTheDocument();
149
- await user.click(screen.getByRole('button', { name: 'Submit' }));
150
- expect(screen.getByText('Polling step')).toBeInTheDocument();
151
- await act(async () => {
152
- await vi.advanceTimersByTimeAsync(1000);
153
- });
154
- await waitFor(() => {
155
- expect(screen.getByText('Step after polling')).toBeInTheDocument();
156
- });
157
- await user.click(screen.getByRole('button', { name: 'Back' }));
158
- expect(screen.getByText('Initial step')).toBeInTheDocument();
159
- });
160
- it('restores refreshAfter from previous step', async () => {
161
- const httpClient = vi.fn().mockImplementation(async (input) => {
162
- if (input === '/refresh') {
163
- return respondWith(Object.assign(Object.assign({}, step), { title: 'Refreshed step' }));
164
- }
165
- return respondWith(Object.assign(Object.assign({}, step), { title: 'Next step' }));
166
- });
167
- renderWithProviders(_jsx(DynamicFlowWise, Object.assign({ initialStep: Object.assign(Object.assign({}, step), { refreshAfter: new Date(Date.now() + 5000).toISOString(), refreshUrl: '/refresh' }) }, getDefaultProps(), { httpClient: httpClient })));
168
- expect(screen.getByText('Initial step')).toBeInTheDocument();
169
- await user.click(screen.getByRole('button', { name: 'Submit' }));
170
- expect(screen.getByText('Next step')).toBeInTheDocument();
171
- await user.click(screen.getByRole('button', { name: 'Back' }));
172
- expect(screen.getByText('Initial step')).toBeInTheDocument();
173
- await act(async () => {
174
- await vi.advanceTimersByTimeAsync(6000);
175
- });
176
- expect(screen.getByText('Refreshed step')).toBeInTheDocument();
177
- });
178
- });
179
- describe('given stack behavior', () => {
180
- describe('replace-current', () => {
181
- const getMockHttpClient = () => {
182
- let stepCount = 1;
183
- return vi.fn().mockImplementation(async () => {
184
- stepCount += 1;
185
- return respondWith(Object.assign(Object.assign({}, step), { title: `Step ${stepCount}`, navigation: { stackBehavior: stepCount > 2 ? 'replace-current' : undefined } }));
186
- });
187
- };
188
- it('adds new steps that replace the current step', async () => {
189
- renderWithProviders(_jsx(DynamicFlowWise, Object.assign({ initialStep: step }, getDefaultProps(), { httpClient: getMockHttpClient() })));
190
- // initial step
191
- expect(screen.getByText('Initial step')).toBeInTheDocument();
192
- await user.click(screen.getByRole('button', { name: 'Submit' }));
193
- await waitFor(async () => {
194
- // no stack behavior
195
- expect(screen.getByText('Step 2')).toBeInTheDocument();
196
- });
197
- await user.click(screen.getByRole('button', { name: 'Submit' }));
198
- await waitFor(async () => {
199
- // replace-current step
200
- expect(screen.getByText('Step 3')).toBeInTheDocument();
201
- });
202
- await user.click(screen.getByRole('button', { name: 'Back' }));
203
- await waitFor(async () => {
204
- expect(screen.getByText('Initial step')).toBeInTheDocument();
205
- });
206
- });
207
- });
208
- describe('remove-previous', () => {
209
- const getMockHttpClient = () => {
210
- let stepCount = 1;
211
- return vi.fn().mockImplementation(async () => {
212
- stepCount += 1;
213
- return respondWith(Object.assign(Object.assign({}, step), { title: `Step ${stepCount}`, navigation: { stackBehavior: stepCount > 2 ? 'remove-previous' : undefined } }));
214
- });
215
- };
216
- it('adds new steps that replace the current step', async () => {
217
- renderWithProviders(_jsx(DynamicFlowWise, Object.assign({ initialStep: step }, getDefaultProps(), { httpClient: getMockHttpClient() })));
218
- // initial step
219
- expect(screen.getByText('Initial step')).toBeInTheDocument();
220
- await user.click(screen.getByRole('button', { name: 'Submit' }));
221
- // no stack behavior
222
- expect(screen.getByText('Step 2')).toBeInTheDocument();
223
- await user.click(screen.getByRole('button', { name: 'Submit' }));
224
- // remove-previous step
225
- expect(screen.getByText('Step 3')).toBeInTheDocument();
226
- await user.click(screen.getByRole('button', { name: 'Back' }));
227
- expect(screen.getByText('Initial step')).toBeInTheDocument();
228
- });
229
- });
230
- describe('remove-all', () => {
231
- const getMockHttpClient = () => {
232
- let stepCount = 1;
233
- return vi.fn().mockImplementation(async () => {
234
- stepCount += 1;
235
- return respondWith(Object.assign(Object.assign({}, step), { title: `Step ${stepCount}`, navigation: { stackBehavior: stepCount > 2 ? 'remove-all' : undefined } }));
236
- });
237
- };
238
- it('adds new steps that replace the current step', async () => {
239
- const onCancellation = vi.fn();
240
- renderWithProviders(_jsx(DynamicFlowWise, Object.assign({ initialStep: step }, getDefaultProps(), { httpClient: getMockHttpClient(), onCancellation: onCancellation })));
241
- // initial step
242
- expect(screen.getByText('Initial step')).toBeInTheDocument();
243
- await user.click(screen.getByRole('button', { name: 'Submit' }));
244
- // no stack behavior
245
- expect(screen.getByText('Step 2')).toBeInTheDocument();
246
- await user.click(screen.getByRole('button', { name: 'Submit' }));
247
- // remove-all step
248
- expect(screen.getByText('Step 3')).toBeInTheDocument();
249
- await user.click(screen.getByRole('button', { name: 'Back' }));
250
- expect(onCancellation).toHaveBeenCalled();
251
- expect(screen.getByText('Step 3')).toBeInTheDocument();
252
- });
253
- it('does not show back button on initial step after clearing the stack if no onCancellation is provided', async () => {
254
- renderWithProviders(_jsx(DynamicFlowWise, Object.assign({ initialStep: step }, getDefaultProps(), { httpClient: getMockHttpClient() })));
255
- // initial step
256
- expect(screen.getByText('Initial step')).toBeInTheDocument();
257
- await user.click(screen.getByRole('button', { name: 'Submit' }));
258
- // no stack behavior
259
- expect(screen.getByText('Step 2')).toBeInTheDocument();
260
- await user.click(screen.getByRole('button', { name: 'Submit' }));
261
- // remove-all step
262
- expect(screen.getByText('Step 3')).toBeInTheDocument();
263
- expect(screen.queryByRole('button', { name: 'Back' })).not.toBeInTheDocument();
264
- });
265
- });
266
- });
267
- });