@webiny/app-website-builder-workflows 0.0.0-unstable.0156a4c312

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 (402) hide show
  1. package/Components/ContentReviews/WbContentReviews.d.ts +2 -0
  2. package/Components/ContentReviews/WbContentReviews.js +41 -0
  3. package/Components/ContentReviews/WbContentReviews.js.map +1 -0
  4. package/Components/ContentReviews/WbContentReviews.smoke.test.d.ts +1 -0
  5. package/Components/ContentReviews/WbContentReviews.smoke.test.js +59 -0
  6. package/Components/ContentReviews/WbContentReviews.smoke.test.js.map +1 -0
  7. package/Components/ContentReviews/WbContentReviews.test.d.ts +1 -0
  8. package/Components/ContentReviews/WbContentReviews.test.js +80 -0
  9. package/Components/ContentReviews/WbContentReviews.test.js.map +1 -0
  10. package/Components/ContentReviews/WbContentReviewsSidebarItem.d.ts +2 -0
  11. package/Components/ContentReviews/WbContentReviewsSidebarItem.js +18 -0
  12. package/Components/ContentReviews/WbContentReviewsSidebarItem.js.map +1 -0
  13. package/Components/ContentReviews/WbContentReviewsSidebarItem.test.d.ts +1 -0
  14. package/Components/ContentReviews/WbContentReviewsSidebarItem.test.js +67 -0
  15. package/Components/ContentReviews/WbContentReviewsSidebarItem.test.js.map +1 -0
  16. package/Components/PageEditor/DisabledPublishButton.d.ts +6 -0
  17. package/Components/PageEditor/DisabledPublishButton.js +17 -0
  18. package/Components/PageEditor/DisabledPublishButton.js.map +1 -0
  19. package/Components/PageEditor/DisabledPublishButton.test.d.ts +1 -0
  20. package/Components/PageEditor/DisabledPublishButton.test.js +67 -0
  21. package/Components/PageEditor/DisabledPublishButton.test.js.map +1 -0
  22. package/Components/PageEditor/PageBasePublishDecorator.d.ts +2 -0
  23. package/Components/PageEditor/PageBasePublishDecorator.js +23 -0
  24. package/Components/PageEditor/PageBasePublishDecorator.js.map +1 -0
  25. package/Components/PageEditor/PageEditorAutoSave.d.ts +2 -0
  26. package/Components/PageEditor/PageEditorAutoSave.js +23 -0
  27. package/Components/PageEditor/PageEditorAutoSave.js.map +1 -0
  28. package/Components/PageEditor/PageEditorAutoSave.test.d.ts +1 -0
  29. package/Components/PageEditor/PageEditorAutoSave.test.js +111 -0
  30. package/Components/PageEditor/PageEditorAutoSave.test.js.map +1 -0
  31. package/Components/PageEditor/PageEditorConfig.d.ts +2 -0
  32. package/Components/PageEditor/PageEditorConfig.js +13 -0
  33. package/Components/PageEditor/PageEditorConfig.js.map +1 -0
  34. package/Components/PageEditor/PageEditorLayout.d.ts +2 -0
  35. package/Components/PageEditor/PageEditorLayout.js +10 -0
  36. package/Components/PageEditor/PageEditorLayout.js.map +1 -0
  37. package/Components/PageEditor/PageEditorLayout.test.d.ts +1 -0
  38. package/Components/PageEditor/PageEditorLayout.test.js +121 -0
  39. package/Components/PageEditor/PageEditorLayout.test.js.map +1 -0
  40. package/Components/PageEditor/PageEditorTopBar.d.ts +2 -0
  41. package/Components/PageEditor/PageEditorTopBar.js +10 -0
  42. package/Components/PageEditor/PageEditorTopBar.js.map +1 -0
  43. package/Components/PageEditor/PageEditorTopBar.test.d.ts +1 -0
  44. package/Components/PageEditor/PageEditorTopBar.test.js +175 -0
  45. package/Components/PageEditor/PageEditorTopBar.test.js.map +1 -0
  46. package/Components/PageEditor/PageNewRevisionDecorator.d.ts +2 -0
  47. package/Components/PageEditor/PageNewRevisionDecorator.js +24 -0
  48. package/Components/PageEditor/PageNewRevisionDecorator.js.map +1 -0
  49. package/Components/PageEditor/PageNewRevisionDecorator.test.d.ts +1 -0
  50. package/Components/PageEditor/PageNewRevisionDecorator.test.js +107 -0
  51. package/Components/PageEditor/PageNewRevisionDecorator.test.js.map +1 -0
  52. package/Components/PageEditor/PageReadOnlySync.d.ts +3 -0
  53. package/Components/PageEditor/PageReadOnlySync.js +23 -0
  54. package/Components/PageEditor/PageReadOnlySync.js.map +1 -0
  55. package/Components/PageEditor/PageReviewBar.d.ts +4 -0
  56. package/Components/PageEditor/PageReviewBar.js +93 -0
  57. package/Components/PageEditor/PageReviewBar.js.map +1 -0
  58. package/Components/PageEditor/PageReviewBar.test.d.ts +1 -0
  59. package/Components/PageEditor/PageReviewBar.test.js +135 -0
  60. package/Components/PageEditor/PageReviewBar.test.js.map +1 -0
  61. package/Components/PageEditor/PageReviewPublishAction.d.ts +2 -0
  62. package/Components/PageEditor/PageReviewPublishAction.js +15 -0
  63. package/Components/PageEditor/PageReviewPublishAction.js.map +1 -0
  64. package/Components/PageEditor/PageReviewPublishButton.d.ts +4 -0
  65. package/Components/PageEditor/PageReviewPublishButton.js +23 -0
  66. package/Components/PageEditor/PageReviewPublishButton.js.map +1 -0
  67. package/Components/PageEditor/PageScheduleDecorator.d.ts +2 -0
  68. package/Components/PageEditor/PageScheduleDecorator.js +23 -0
  69. package/Components/PageEditor/PageScheduleDecorator.js.map +1 -0
  70. package/Components/PageEditor/PageScheduleDecorator.test.d.ts +1 -0
  71. package/Components/PageEditor/PageScheduleDecorator.test.js +75 -0
  72. package/Components/PageEditor/PageScheduleDecorator.test.js.map +1 -0
  73. package/Components/PageEditor/getPageReadOnlyReason.d.ts +4 -0
  74. package/Components/PageEditor/getPageReadOnlyReason.js +20 -0
  75. package/Components/PageEditor/getPageReadOnlyReason.js.map +1 -0
  76. package/Components/PageEditor/getPageReadOnlyReason.test.d.ts +1 -0
  77. package/Components/PageEditor/getPageReadOnlyReason.test.js +122 -0
  78. package/Components/PageEditor/getPageReadOnlyReason.test.js.map +1 -0
  79. package/Components/PageEditor/getPageReviewContext.d.ts +9 -0
  80. package/Components/PageEditor/getPageReviewContext.js +13 -0
  81. package/Components/PageEditor/getPageReviewContext.js.map +1 -0
  82. package/Components/PageEditor/getPageReviewContext.test.d.ts +1 -0
  83. package/Components/PageEditor/getPageReviewContext.test.js +42 -0
  84. package/Components/PageEditor/getPageReviewContext.test.js.map +1 -0
  85. package/Components/PageEditor/pageEditorDocument.d.ts +17 -0
  86. package/Components/PageEditor/pageEditorDocument.js +0 -0
  87. package/Components/PageEditor/pageReviewMatrix.test.d.ts +1 -0
  88. package/Components/PageEditor/pageReviewMatrix.test.js +223 -0
  89. package/Components/PageEditor/pageReviewMatrix.test.js.map +1 -0
  90. package/Components/PageEditor/publishMatrix.test.d.ts +1 -0
  91. package/Components/PageEditor/publishMatrix.test.js +313 -0
  92. package/Components/PageEditor/publishMatrix.test.js.map +1 -0
  93. package/Components/PagesList/PageListReviewGatedActions.d.ts +2 -0
  94. package/Components/PagesList/PageListReviewGatedActions.js +27 -0
  95. package/Components/PagesList/PageListReviewGatedActions.js.map +1 -0
  96. package/Components/PagesList/PageListReviewGatedActions.test.d.ts +1 -0
  97. package/Components/PagesList/PageListReviewGatedActions.test.js +94 -0
  98. package/Components/PagesList/PageListReviewGatedActions.test.js.map +1 -0
  99. package/Components/PagesList/PagesList.d.ts +2 -0
  100. package/Components/PagesList/PagesList.js +8 -0
  101. package/Components/PagesList/PagesList.js.map +1 -0
  102. package/Components/PagesList/PagesList.test.d.ts +1 -0
  103. package/Components/PagesList/PagesList.test.js +47 -0
  104. package/Components/PagesList/PagesList.test.js.map +1 -0
  105. package/Components/PagesList/index.d.ts +1 -0
  106. package/Components/PagesList/index.js +1 -0
  107. package/Components/index.d.ts +2 -0
  108. package/Components/index.js +2 -0
  109. package/LICENSE +21 -0
  110. package/README.md +11 -0
  111. package/Routes/WebsiteBuilderWorkflowsMenu.d.ts +2 -0
  112. package/Routes/WebsiteBuilderWorkflowsMenu.js +23 -0
  113. package/Routes/WebsiteBuilderWorkflowsMenu.js.map +1 -0
  114. package/Routes/WebsiteBuilderWorkflowsMenu.test.d.ts +1 -0
  115. package/Routes/WebsiteBuilderWorkflowsMenu.test.js +141 -0
  116. package/Routes/WebsiteBuilderWorkflowsMenu.test.js.map +1 -0
  117. package/Routes/index.d.ts +1 -0
  118. package/Routes/index.js +1 -0
  119. package/constants.d.ts +1 -0
  120. package/constants.js +4 -0
  121. package/constants.js.map +1 -0
  122. package/editorGlue.wiring.test.d.ts +1 -0
  123. package/editorGlue.wiring.test.js +128 -0
  124. package/editorGlue.wiring.test.js.map +1 -0
  125. package/features/cache/WbReviewCacheSyncHandler.d.ts +8 -0
  126. package/features/cache/WbReviewCacheSyncHandler.js +14 -0
  127. package/features/cache/WbReviewCacheSyncHandler.js.map +1 -0
  128. package/features/cache/WbReviewPageCacheWriter.d.ts +17 -0
  129. package/features/cache/WbReviewPageCacheWriter.js +39 -0
  130. package/features/cache/WbReviewPageCacheWriter.js.map +1 -0
  131. package/features/cache/WbReviewPageCacheWriter.test.d.ts +1 -0
  132. package/features/cache/WbReviewPageCacheWriter.test.js +115 -0
  133. package/features/cache/WbReviewPageCacheWriter.test.js.map +1 -0
  134. package/features/cache/abstractions.d.ts +5 -0
  135. package/features/cache/abstractions.js +5 -0
  136. package/features/cache/abstractions.js.map +1 -0
  137. package/features/cache/feature.d.ts +1 -0
  138. package/features/cache/feature.js +13 -0
  139. package/features/cache/feature.js.map +1 -0
  140. package/features/editorGateway/WbWorkflowEditorGateway/WbWorkflowEditorGateway.d.ts +25 -0
  141. package/features/editorGateway/WbWorkflowEditorGateway/WbWorkflowEditorGateway.js +112 -0
  142. package/features/editorGateway/WbWorkflowEditorGateway/WbWorkflowEditorGateway.js.map +1 -0
  143. package/features/editorGateway/WbWorkflowEditorGateway/WbWorkflowEditorGateway.test.d.ts +1 -0
  144. package/features/editorGateway/WbWorkflowEditorGateway/WbWorkflowEditorGateway.test.js +632 -0
  145. package/features/editorGateway/WbWorkflowEditorGateway/WbWorkflowEditorGateway.test.js.map +1 -0
  146. package/features/editorGateway/feature.d.ts +1 -0
  147. package/features/editorGateway/feature.js +11 -0
  148. package/features/editorGateway/feature.js.map +1 -0
  149. package/features/editorGateway/feature.test.d.ts +1 -0
  150. package/features/editorGateway/feature.test.js +244 -0
  151. package/features/editorGateway/feature.test.js.map +1 -0
  152. package/features/editorGateway/graphql/deleteWebsiteBuilderPageWorkflow.d.ts +1 -0
  153. package/features/editorGateway/graphql/deleteWebsiteBuilderPageWorkflow.js +19 -0
  154. package/features/editorGateway/graphql/deleteWebsiteBuilderPageWorkflow.js.map +1 -0
  155. package/features/editorGateway/graphql/getWebsiteBuilderPageWorkflow.d.ts +1 -0
  156. package/features/editorGateway/graphql/getWebsiteBuilderPageWorkflow.js +19 -0
  157. package/features/editorGateway/graphql/getWebsiteBuilderPageWorkflow.js.map +1 -0
  158. package/features/editorGateway/graphql/inspectWebsiteBuilderPageRouting.d.ts +1 -0
  159. package/features/editorGateway/graphql/inspectWebsiteBuilderPageRouting.js +19 -0
  160. package/features/editorGateway/graphql/inspectWebsiteBuilderPageRouting.js.map +1 -0
  161. package/features/editorGateway/graphql/listWebsiteBuilderPageWorkflowNames.d.ts +1 -0
  162. package/features/editorGateway/graphql/listWebsiteBuilderPageWorkflowNames.js +23 -0
  163. package/features/editorGateway/graphql/listWebsiteBuilderPageWorkflowNames.js.map +1 -0
  164. package/features/editorGateway/graphql/storeWebsiteBuilderPageWorkflow.d.ts +1 -0
  165. package/features/editorGateway/graphql/storeWebsiteBuilderPageWorkflow.js +19 -0
  166. package/features/editorGateway/graphql/storeWebsiteBuilderPageWorkflow.js.map +1 -0
  167. package/features/editorGateway/graphql/websiteBuilderPageFolderExists.d.ts +1 -0
  168. package/features/editorGateway/graphql/websiteBuilderPageFolderExists.js +16 -0
  169. package/features/editorGateway/graphql/websiteBuilderPageFolderExists.js.map +1 -0
  170. package/features/editorMounting/WbWorkflowEditorAppAdapter.d.ts +21 -0
  171. package/features/editorMounting/WbWorkflowEditorAppAdapter.js +45 -0
  172. package/features/editorMounting/WbWorkflowEditorAppAdapter.js.map +1 -0
  173. package/features/editorMounting/WbWorkflowEditorAppAdapter.test.d.ts +1 -0
  174. package/features/editorMounting/WbWorkflowEditorAppAdapter.test.js +115 -0
  175. package/features/editorMounting/WbWorkflowEditorAppAdapter.test.js.map +1 -0
  176. package/features/editorMounting/abstractions.d.ts +5 -0
  177. package/features/editorMounting/abstractions.js +5 -0
  178. package/features/editorMounting/abstractions.js.map +1 -0
  179. package/features/editorMounting/feature.d.ts +3 -0
  180. package/features/editorMounting/feature.js +19 -0
  181. package/features/editorMounting/feature.js.map +1 -0
  182. package/features/editorMounting/feature.test.d.ts +1 -0
  183. package/features/editorMounting/feature.test.js +93 -0
  184. package/features/editorMounting/feature.test.js.map +1 -0
  185. package/features/editorReview/WbPageContentReloader.d.ts +12 -0
  186. package/features/editorReview/WbPageContentReloader.js +40 -0
  187. package/features/editorReview/WbPageContentReloader.js.map +1 -0
  188. package/features/editorReview/WbPageContentReloader.test.d.ts +1 -0
  189. package/features/editorReview/WbPageContentReloader.test.js +222 -0
  190. package/features/editorReview/WbPageContentReloader.test.js.map +1 -0
  191. package/features/editorReview/WbPageReview.d.ts +8 -0
  192. package/features/editorReview/WbPageReview.js +14 -0
  193. package/features/editorReview/WbPageReview.js.map +1 -0
  194. package/features/editorReview/WbPageUnsavedChanges.d.ts +8 -0
  195. package/features/editorReview/WbPageUnsavedChanges.js +12 -0
  196. package/features/editorReview/WbPageUnsavedChanges.js.map +1 -0
  197. package/features/editorReview/WbPageUnsavedChanges.test.d.ts +1 -0
  198. package/features/editorReview/WbPageUnsavedChanges.test.js +33 -0
  199. package/features/editorReview/WbPageUnsavedChanges.test.js.map +1 -0
  200. package/features/editorReview/abstractions.d.ts +5 -0
  201. package/features/editorReview/abstractions.js +5 -0
  202. package/features/editorReview/abstractions.js.map +1 -0
  203. package/features/editorReview/feature.d.ts +3 -0
  204. package/features/editorReview/feature.js +17 -0
  205. package/features/editorReview/feature.js.map +1 -0
  206. package/features/gateway/WbReviewChangeMessageHandler.d.ts +8 -0
  207. package/features/gateway/WbReviewChangeMessageHandler.js +16 -0
  208. package/features/gateway/WbReviewChangeMessageHandler.js.map +1 -0
  209. package/features/gateway/WbReviewContentAdapter/WbReviewContentAdapter.d.ts +13 -0
  210. package/features/gateway/WbReviewContentAdapter/WbReviewContentAdapter.js +35 -0
  211. package/features/gateway/WbReviewContentAdapter/WbReviewContentAdapter.js.map +1 -0
  212. package/features/gateway/WbReviewContentAdapter/WbReviewContentAdapter.test.d.ts +1 -0
  213. package/features/gateway/WbReviewContentAdapter/WbReviewContentAdapter.test.js +47 -0
  214. package/features/gateway/WbReviewContentAdapter/WbReviewContentAdapter.test.js.map +1 -0
  215. package/features/gateway/WbReviewContentAdapter/abstractions.d.ts +5 -0
  216. package/features/gateway/WbReviewContentAdapter/abstractions.js +5 -0
  217. package/features/gateway/WbReviewContentAdapter/abstractions.js.map +1 -0
  218. package/features/gateway/WbReviewGateway/WbReviewGateway.d.ts +51 -0
  219. package/features/gateway/WbReviewGateway/WbReviewGateway.js +216 -0
  220. package/features/gateway/WbReviewGateway/WbReviewGateway.js.map +1 -0
  221. package/features/gateway/WbReviewGateway/WbReviewGateway.test.d.ts +1 -0
  222. package/features/gateway/WbReviewGateway/WbReviewGateway.test.js +647 -0
  223. package/features/gateway/WbReviewGateway/WbReviewGateway.test.js.map +1 -0
  224. package/features/gateway/WbReviewNotificationHandler.d.ts +8 -0
  225. package/features/gateway/WbReviewNotificationHandler.js +16 -0
  226. package/features/gateway/WbReviewNotificationHandler.js.map +1 -0
  227. package/features/gateway/WbReviewRowProvider/WbReviewRowProvider.d.ts +8 -0
  228. package/features/gateway/WbReviewRowProvider/WbReviewRowProvider.js +14 -0
  229. package/features/gateway/WbReviewRowProvider/WbReviewRowProvider.js.map +1 -0
  230. package/features/gateway/WbReviewRowProvider/abstractions.d.ts +5 -0
  231. package/features/gateway/WbReviewRowProvider/abstractions.js +5 -0
  232. package/features/gateway/WbReviewRowProvider/abstractions.js.map +1 -0
  233. package/features/gateway/assertWbPageNamespace.d.ts +1 -0
  234. package/features/gateway/assertWbPageNamespace.js +7 -0
  235. package/features/gateway/assertWbPageNamespace.js.map +1 -0
  236. package/features/gateway/contentReviewsBindings.test.d.ts +1 -0
  237. package/features/gateway/contentReviewsBindings.test.js +159 -0
  238. package/features/gateway/contentReviewsBindings.test.js.map +1 -0
  239. package/features/gateway/feature.d.ts +4 -0
  240. package/features/gateway/feature.js +27 -0
  241. package/features/gateway/feature.js.map +1 -0
  242. package/features/gateway/feature.test.d.ts +1 -0
  243. package/features/gateway/feature.test.js +85 -0
  244. package/features/gateway/feature.test.js.map +1 -0
  245. package/features/gateway/graphql/WbOperationResponse.d.ts +3 -0
  246. package/features/gateway/graphql/WbOperationResponse.js +0 -0
  247. package/features/gateway/graphql/approveWebsiteBuilderPageReviewStep.d.ts +1 -0
  248. package/features/gateway/graphql/approveWebsiteBuilderPageReviewStep.js +22 -0
  249. package/features/gateway/graphql/approveWebsiteBuilderPageReviewStep.js.map +1 -0
  250. package/features/gateway/graphql/cancelWebsiteBuilderPageReview.d.ts +1 -0
  251. package/features/gateway/graphql/cancelWebsiteBuilderPageReview.js +18 -0
  252. package/features/gateway/graphql/cancelWebsiteBuilderPageReview.js.map +1 -0
  253. package/features/gateway/graphql/cancelWebsiteBuilderPageReviewsForDelete.d.ts +1 -0
  254. package/features/gateway/graphql/cancelWebsiteBuilderPageReviewsForDelete.js +26 -0
  255. package/features/gateway/graphql/cancelWebsiteBuilderPageReviewsForDelete.js.map +1 -0
  256. package/features/gateway/graphql/getWebsiteBuilderPageReview.d.ts +1 -0
  257. package/features/gateway/graphql/getWebsiteBuilderPageReview.js +18 -0
  258. package/features/gateway/graphql/getWebsiteBuilderPageReview.js.map +1 -0
  259. package/features/gateway/graphql/getWebsiteBuilderPageReviewStepRun.d.ts +1 -0
  260. package/features/gateway/graphql/getWebsiteBuilderPageReviewStepRun.js +18 -0
  261. package/features/gateway/graphql/getWebsiteBuilderPageReviewStepRun.js.map +1 -0
  262. package/features/gateway/graphql/getWebsiteBuilderPageTargetReview.d.ts +1 -0
  263. package/features/gateway/graphql/getWebsiteBuilderPageTargetReview.js +18 -0
  264. package/features/gateway/graphql/getWebsiteBuilderPageTargetReview.js.map +1 -0
  265. package/features/gateway/graphql/listWebsiteBuilderPageReviewStepCandidates.d.ts +1 -0
  266. package/features/gateway/graphql/listWebsiteBuilderPageReviewStepCandidates.js +18 -0
  267. package/features/gateway/graphql/listWebsiteBuilderPageReviewStepCandidates.js.map +1 -0
  268. package/features/gateway/graphql/listWebsiteBuilderPageReviews.d.ts +1 -0
  269. package/features/gateway/graphql/listWebsiteBuilderPageReviews.js +34 -0
  270. package/features/gateway/graphql/listWebsiteBuilderPageReviews.js.map +1 -0
  271. package/features/gateway/graphql/listWebsiteBuilderPageStepCandidates.d.ts +1 -0
  272. package/features/gateway/graphql/listWebsiteBuilderPageStepCandidates.js +22 -0
  273. package/features/gateway/graphql/listWebsiteBuilderPageStepCandidates.js.map +1 -0
  274. package/features/gateway/graphql/listWebsiteBuilderPageWorkflows.d.ts +1 -0
  275. package/features/gateway/graphql/listWebsiteBuilderPageWorkflows.js +18 -0
  276. package/features/gateway/graphql/listWebsiteBuilderPageWorkflows.js.map +1 -0
  277. package/features/gateway/graphql/reassignWebsiteBuilderPageReviewStep.d.ts +1 -0
  278. package/features/gateway/graphql/reassignWebsiteBuilderPageReviewStep.js +22 -0
  279. package/features/gateway/graphql/reassignWebsiteBuilderPageReviewStep.js.map +1 -0
  280. package/features/gateway/graphql/rejectWebsiteBuilderPageReviewStep.d.ts +1 -0
  281. package/features/gateway/graphql/rejectWebsiteBuilderPageReviewStep.js +22 -0
  282. package/features/gateway/graphql/rejectWebsiteBuilderPageReviewStep.js.map +1 -0
  283. package/features/gateway/graphql/requestWebsiteBuilderPageReview.d.ts +1 -0
  284. package/features/gateway/graphql/requestWebsiteBuilderPageReview.js +26 -0
  285. package/features/gateway/graphql/requestWebsiteBuilderPageReview.js.map +1 -0
  286. package/features/gateway/graphql/restartWebsiteBuilderPageReviewStep.d.ts +1 -0
  287. package/features/gateway/graphql/restartWebsiteBuilderPageReviewStep.js +18 -0
  288. package/features/gateway/graphql/restartWebsiteBuilderPageReviewStep.js.map +1 -0
  289. package/features/gateway/graphql/startWebsiteBuilderPageReviewStep.d.ts +1 -0
  290. package/features/gateway/graphql/startWebsiteBuilderPageReviewStep.js +18 -0
  291. package/features/gateway/graphql/startWebsiteBuilderPageReviewStep.js.map +1 -0
  292. package/features/gateway/graphql/takeOverWebsiteBuilderPageReviewStep.d.ts +1 -0
  293. package/features/gateway/graphql/takeOverWebsiteBuilderPageReviewStep.js +26 -0
  294. package/features/gateway/graphql/takeOverWebsiteBuilderPageReviewStep.js.map +1 -0
  295. package/features/trash/BulkDeletePresenterReviewDecorator.d.ts +14 -0
  296. package/features/trash/BulkDeletePresenterReviewDecorator.js +27 -0
  297. package/features/trash/BulkDeletePresenterReviewDecorator.js.map +1 -0
  298. package/features/trash/BulkDeletePresenterReviewDecorator.test.d.ts +1 -0
  299. package/features/trash/BulkDeletePresenterReviewDecorator.test.js +234 -0
  300. package/features/trash/BulkDeletePresenterReviewDecorator.test.js.map +1 -0
  301. package/features/trash/DeletePageRevisionUseCaseReviewDecorator.d.ts +13 -0
  302. package/features/trash/DeletePageRevisionUseCaseReviewDecorator.js +23 -0
  303. package/features/trash/DeletePageRevisionUseCaseReviewDecorator.js.map +1 -0
  304. package/features/trash/DeletePageRevisionUseCaseReviewDecorator.test.d.ts +1 -0
  305. package/features/trash/DeletePageRevisionUseCaseReviewDecorator.test.js +114 -0
  306. package/features/trash/DeletePageRevisionUseCaseReviewDecorator.test.js.map +1 -0
  307. package/features/trash/DeletePageUseCaseReviewDecorator.d.ts +13 -0
  308. package/features/trash/DeletePageUseCaseReviewDecorator.js +23 -0
  309. package/features/trash/DeletePageUseCaseReviewDecorator.js.map +1 -0
  310. package/features/trash/DeletePageUseCaseReviewDecorator.test.d.ts +1 -0
  311. package/features/trash/DeletePageUseCaseReviewDecorator.test.js +134 -0
  312. package/features/trash/DeletePageUseCaseReviewDecorator.test.js.map +1 -0
  313. package/features/trash/feature.d.ts +1 -0
  314. package/features/trash/feature.js +15 -0
  315. package/features/trash/feature.js.map +1 -0
  316. package/features/trash/feature.test.d.ts +1 -0
  317. package/features/trash/feature.test.js +183 -0
  318. package/features/trash/feature.test.js.map +1 -0
  319. package/hooks/usePage.d.ts +5 -0
  320. package/hooks/usePage.js +15 -0
  321. package/hooks/usePage.js.map +1 -0
  322. package/hooks/usePage.test.d.ts +1 -0
  323. package/hooks/usePage.test.js +49 -0
  324. package/hooks/usePage.test.js.map +1 -0
  325. package/index.d.ts +2 -0
  326. package/index.js +40 -0
  327. package/index.js.map +1 -0
  328. package/index.mount.test.d.ts +1 -0
  329. package/index.mount.test.js +50 -0
  330. package/index.mount.test.js.map +1 -0
  331. package/index.test.d.ts +1 -0
  332. package/index.test.js +523 -0
  333. package/index.test.js.map +1 -0
  334. package/package.json +54 -0
  335. package/pageListChangeStatus.wiring.test.d.ts +1 -0
  336. package/pageListChangeStatus.wiring.test.js +175 -0
  337. package/pageListChangeStatus.wiring.test.js.map +1 -0
  338. package/pageListGlue.wiring.test.d.ts +1 -0
  339. package/pageListGlue.wiring.test.js +220 -0
  340. package/pageListGlue.wiring.test.js.map +1 -0
  341. package/presentation/page/PageGet/WbReviewGetPageFieldSelection.d.ts +8 -0
  342. package/presentation/page/PageGet/WbReviewGetPageFieldSelection.js +16 -0
  343. package/presentation/page/PageGet/WbReviewGetPageFieldSelection.js.map +1 -0
  344. package/presentation/page/PageGet/WbReviewGetPageFieldSelection.test.d.ts +1 -0
  345. package/presentation/page/PageGet/WbReviewGetPageFieldSelection.test.js +19 -0
  346. package/presentation/page/PageGet/WbReviewGetPageFieldSelection.test.js.map +1 -0
  347. package/presentation/page/PageGet/feature.d.ts +1 -0
  348. package/presentation/page/PageGet/feature.js +11 -0
  349. package/presentation/page/PageGet/feature.js.map +1 -0
  350. package/presentation/page/PageList/WbReviewListPagesFieldSelection.d.ts +8 -0
  351. package/presentation/page/PageList/WbReviewListPagesFieldSelection.js +16 -0
  352. package/presentation/page/PageList/WbReviewListPagesFieldSelection.js.map +1 -0
  353. package/presentation/page/PageList/WbReviewListPagesFieldSelection.test.d.ts +1 -0
  354. package/presentation/page/PageList/WbReviewListPagesFieldSelection.test.js +19 -0
  355. package/presentation/page/PageList/WbReviewListPagesFieldSelection.test.js.map +1 -0
  356. package/presentation/page/PageList/WbReviewTableRowMapperDecorator.d.ts +12 -0
  357. package/presentation/page/PageList/WbReviewTableRowMapperDecorator.js +24 -0
  358. package/presentation/page/PageList/WbReviewTableRowMapperDecorator.js.map +1 -0
  359. package/presentation/page/PageList/WbReviewTableRowMapperDecorator.test.d.ts +1 -0
  360. package/presentation/page/PageList/WbReviewTableRowMapperDecorator.test.js +70 -0
  361. package/presentation/page/PageList/WbReviewTableRowMapperDecorator.test.js.map +1 -0
  362. package/presentation/page/PageList/feature.d.ts +1 -0
  363. package/presentation/page/PageList/feature.js +13 -0
  364. package/presentation/page/PageList/feature.js.map +1 -0
  365. package/presentation/page/RevisionList/RevisionListPresenterDecorator.d.ts +15 -0
  366. package/presentation/page/RevisionList/RevisionListPresenterDecorator.js +36 -0
  367. package/presentation/page/RevisionList/RevisionListPresenterDecorator.js.map +1 -0
  368. package/presentation/page/RevisionList/RevisionListPresenterDecorator.test.d.ts +1 -0
  369. package/presentation/page/RevisionList/RevisionListPresenterDecorator.test.js +119 -0
  370. package/presentation/page/RevisionList/RevisionListPresenterDecorator.test.js.map +1 -0
  371. package/presentation/page/RevisionList/feature.d.ts +1 -0
  372. package/presentation/page/RevisionList/feature.js +11 -0
  373. package/presentation/page/RevisionList/feature.js.map +1 -0
  374. package/presentation/page/wbReviewPageSelection.d.ts +1 -0
  375. package/presentation/page/wbReviewPageSelection.js +9 -0
  376. package/presentation/page/wbReviewPageSelection.js.map +1 -0
  377. package/publishAutosave.wiring.test.d.ts +1 -0
  378. package/publishAutosave.wiring.test.js +162 -0
  379. package/publishAutosave.wiring.test.js.map +1 -0
  380. package/routes.d.ts +9 -0
  381. package/routes.js +19 -0
  382. package/routes.js.map +1 -0
  383. package/testing/WbEditorHarness.d.ts +11 -0
  384. package/testing/WbEditorHarness.js +22 -0
  385. package/testing/WbEditorHarness.js.map +1 -0
  386. package/testing/createFakeSession.d.ts +9 -0
  387. package/testing/createFakeSession.js +29 -0
  388. package/testing/createFakeSession.js.map +1 -0
  389. package/testing/createFakeVm.d.ts +3 -0
  390. package/testing/createFakeVm.js +51 -0
  391. package/testing/createFakeVm.js.map +1 -0
  392. package/testing/createFolder.d.ts +2 -0
  393. package/testing/createFolder.js +13 -0
  394. package/testing/createFolder.js.map +1 -0
  395. package/testing/createPageEditor.d.ts +4 -0
  396. package/testing/createPageEditor.js +26 -0
  397. package/testing/createPageEditor.js.map +1 -0
  398. package/testing/registerPageContent.d.ts +20 -0
  399. package/testing/registerPageContent.js +28 -0
  400. package/testing/registerPageContent.js.map +1 -0
  401. package/types.d.ts +9 -0
  402. package/types.js +0 -0
package/package.json ADDED
@@ -0,0 +1,54 @@
1
+ {
2
+ "name": "@webiny/app-website-builder-workflows",
3
+ "version": "0.0.0-unstable.0156a4c312",
4
+ "type": "module",
5
+ "exports": {
6
+ ".": "./index.js",
7
+ "./*": "./*"
8
+ },
9
+ "repository": {
10
+ "type": "git",
11
+ "url": "https://github.com/webiny/webiny-js.git"
12
+ },
13
+ "author": "Webiny Ltd",
14
+ "license": "MIT",
15
+ "dependencies": {
16
+ "@webiny/admin-ui": "0.0.0-unstable.0156a4c312",
17
+ "@webiny/app": "0.0.0-unstable.0156a4c312",
18
+ "@webiny/app-aco": "0.0.0-unstable.0156a4c312",
19
+ "@webiny/app-admin": "0.0.0-unstable.0156a4c312",
20
+ "@webiny/app-website-builder": "0.0.0-unstable.0156a4c312",
21
+ "@webiny/app-websockets": "0.0.0-unstable.0156a4c312",
22
+ "@webiny/app-workflows": "0.0.0-unstable.0156a4c312",
23
+ "@webiny/feature": "0.0.0-unstable.0156a4c312",
24
+ "@webiny/icons": "0.0.0-unstable.0156a4c312",
25
+ "mobx": "7.1.4",
26
+ "react": "19.3.1",
27
+ "react-dom": "19.3.1"
28
+ },
29
+ "devDependencies": {
30
+ "@testing-library/react": "16.3.3",
31
+ "@types/react": "19.3.0",
32
+ "@webiny/app-headless-cms-workflows": "0.0.0-unstable.0156a4c312",
33
+ "@webiny/build-tools": "0.0.0-unstable.0156a4c312",
34
+ "@webiny/di": "2.0.0",
35
+ "@webiny/feature-flags": "0.0.0-unstable.0156a4c312",
36
+ "@webiny/react-composition": "0.0.0-unstable.0156a4c312",
37
+ "@webiny/website-builder-sdk": "0.0.0-unstable.0156a4c312",
38
+ "rimraf": "6.1.3",
39
+ "typescript": "7.0.2",
40
+ "vitest": "5.0.5"
41
+ },
42
+ "publishConfig": {
43
+ "access": "public"
44
+ },
45
+ "svgo": {
46
+ "plugins": {
47
+ "removeViewBox": false
48
+ }
49
+ },
50
+ "gitHead": "b8aec8a1be3f25c3b428b357fe1e352c7cbff9ae",
51
+ "webiny": {
52
+ "publishFrom": "dist"
53
+ }
54
+ }
@@ -0,0 +1 @@
1
+ import "~/types.js";
@@ -0,0 +1,175 @@
1
+ import react from "react";
2
+ import { cleanup, fireEvent, render, screen } from "@testing-library/react";
3
+ import { afterEach, describe, expect, it, vi } from "vitest";
4
+ import { Container } from "@webiny/di";
5
+ import { DiContainerProvider } from "@webiny/app";
6
+ import { MainGraphQLClient } from "@webiny/app/features/mainGraphQLClient/abstractions.js";
7
+ import { ListCache } from "@webiny/app-admin/features/listCache/index.js";
8
+ import { CompositionProvider } from "@webiny/react-composition";
9
+ import { Page, PageDtoMapper } from "@webiny/app-website-builder/domain/Page/index.js";
10
+ import { PageListConfig, PageListWithConfig, usePageListConfig } from "@webiny/app-website-builder/presentation/pages/PageList/configs/index.js";
11
+ import { PageProvider } from "@webiny/app-website-builder/presentation/pages/PageList/hooks/usePage.js";
12
+ import { FullPageCache, PageListCache } from "@webiny/app-website-builder/features/pages/shared/abstractions.js";
13
+ import { TableRowMapper } from "@webiny/app-website-builder/presentation/pages/PageList/components/Table/TableRowMapper.js";
14
+ import { ReviewNotificationService } from "@webiny/app-workflows/review/notifications/abstractions.js";
15
+ import { ReviewState } from "@webiny/app-workflows/review/domain/ReviewState.js";
16
+ import { StepState } from "@webiny/app-workflows/review/domain/StepState.js";
17
+ import { Routes } from "./routes.js";
18
+ import "./types.js";
19
+ import { WebsiteBuilderWorkflows } from "./index.js";
20
+ const flags = vi.hoisted(()=>({
21
+ enabled: true
22
+ }));
23
+ const goToRoute = vi.hoisted(()=>vi.fn());
24
+ vi.mock("@webiny/app-admin", async (importOriginal)=>{
25
+ const actual = await importOriginal();
26
+ return {
27
+ ...actual,
28
+ useFeatureFlags: ()=>({
29
+ isEnabled: ()=>flags.enabled
30
+ }),
31
+ useRouter: ()=>({
32
+ goToRoute: goToRoute
33
+ })
34
+ };
35
+ });
36
+ vi.mock("@webiny/admin-ui", async (importOriginal)=>{
37
+ const actual = await importOriginal();
38
+ const React = await import("react");
39
+ const Item = (props)=>React.createElement("button", {
40
+ onClick: props.onClick
41
+ }, props.text);
42
+ const ItemIcon = ()=>React.createElement("span");
43
+ return {
44
+ ...actual,
45
+ Sidebar: {
46
+ ...actual.Sidebar,
47
+ Item: Object.assign(Item, {
48
+ Icon: ItemIcon
49
+ })
50
+ }
51
+ };
52
+ });
53
+ vi.mock("~/Routes/index.js", ()=>({
54
+ WebsiteBuilderWorkflowsMenu: ()=>null
55
+ }));
56
+ vi.mock("~/Components/ContentReviews/WbContentReviews.js", ()=>({
57
+ WbContentReviews: ()=>null
58
+ }));
59
+ vi.mock("@webiny/app-website-builder/presentation/pages/PageList/configs/Browser/PageAction.js", async ()=>{
60
+ const { makeDecoratable } = await import("@webiny/react-composition");
61
+ const PageAction = makeDecoratable("PageAction", (props)=>props.element ?? null);
62
+ return {
63
+ PageAction
64
+ };
65
+ });
66
+ const { Browser: Browser } = PageListConfig;
67
+ const createDto = (reviewState)=>{
68
+ let system = null;
69
+ if (null !== reviewState) system = {
70
+ workflow: {
71
+ workflowId: "workflow-1",
72
+ reviewState,
73
+ stepId: "step-1",
74
+ stepName: "Legal",
75
+ stepState: StepState.InReview
76
+ }
77
+ };
78
+ const page = Page.create({
79
+ id: "page-1#0001",
80
+ entryId: "page-1",
81
+ system
82
+ });
83
+ return PageDtoMapper.toDTO(page);
84
+ };
85
+ const SidebarFooterProbe = ()=>{
86
+ const { browser } = usePageListConfig();
87
+ return /*#__PURE__*/ react.createElement("div", {
88
+ "data-testid": "sidebar-footer"
89
+ }, browser.sidebarFooter.map((footer)=>/*#__PURE__*/ react.createElement("div", {
90
+ key: footer.name,
91
+ "data-name": footer.name
92
+ }, footer.element)));
93
+ };
94
+ const waitForActions = async ()=>{
95
+ await screen.findByTestId("edit");
96
+ };
97
+ const mountRoot = (enabled, reviewState)=>{
98
+ flags.enabled = enabled;
99
+ const container = new Container();
100
+ container.register(TableRowMapper);
101
+ container.registerInstance(PageListCache, new ListCache("entryId"));
102
+ container.registerInstance(FullPageCache, new ListCache("id"));
103
+ container.registerInstance(MainGraphQLClient, {
104
+ execute: vi.fn()
105
+ });
106
+ container.registerInstance(ReviewNotificationService, {
107
+ handle: vi.fn()
108
+ });
109
+ render(/*#__PURE__*/ react.createElement(DiContainerProvider, {
110
+ container: container
111
+ }, /*#__PURE__*/ react.createElement(CompositionProvider, null, /*#__PURE__*/ react.createElement(WebsiteBuilderWorkflows, null), /*#__PURE__*/ react.createElement(PageListConfig, null, /*#__PURE__*/ react.createElement(Browser.Sidebar.Footer, {
112
+ name: "neutral",
113
+ element: /*#__PURE__*/ react.createElement("span", null)
114
+ })), /*#__PURE__*/ react.createElement(PageListWithConfig, null, /*#__PURE__*/ react.createElement(SidebarFooterProbe, null), /*#__PURE__*/ react.createElement(PageProvider, {
115
+ page: createDto(reviewState)
116
+ }, /*#__PURE__*/ react.createElement(Browser.Page.Action, {
117
+ name: "changeStatus",
118
+ element: /*#__PURE__*/ react.createElement("span", {
119
+ "data-testid": "change-status"
120
+ })
121
+ }), /*#__PURE__*/ react.createElement(Browser.Page.Action, {
122
+ name: "edit",
123
+ element: /*#__PURE__*/ react.createElement("span", {
124
+ "data-testid": "edit"
125
+ })
126
+ }))))));
127
+ };
128
+ describe("Website Builder Change status decoration from the composition root", ()=>{
129
+ afterEach(()=>{
130
+ cleanup();
131
+ goToRoute.mockReset();
132
+ });
133
+ it("flag on: the action is hidden for a page whose review is in progress", async ()=>{
134
+ mountRoot(true, ReviewState.InProgress);
135
+ await waitForActions();
136
+ expect(screen.queryAllByTestId("change-status")).toHaveLength(0);
137
+ expect(screen.queryAllByTestId("edit")).toHaveLength(1);
138
+ });
139
+ it("flag on: the action is shown for an approved review", async ()=>{
140
+ mountRoot(true, ReviewState.Approved);
141
+ await waitForActions();
142
+ expect(screen.queryAllByTestId("change-status")).toHaveLength(1);
143
+ });
144
+ it("flag on: the action is shown for a page with no review", async ()=>{
145
+ mountRoot(true, null);
146
+ await waitForActions();
147
+ expect(screen.queryAllByTestId("change-status")).toHaveLength(1);
148
+ });
149
+ it("flag off: the action is left untouched even for a review in progress", async ()=>{
150
+ mountRoot(false, ReviewState.InProgress);
151
+ await waitForActions();
152
+ expect(screen.queryAllByTestId("change-status")).toHaveLength(1);
153
+ });
154
+ it("flag on: the Content Reviews sidebar item is mounted and opens the route", async ()=>{
155
+ mountRoot(true, null);
156
+ await waitForActions();
157
+ const footer = screen.getByTestId("sidebar-footer");
158
+ expect(footer.querySelector('[data-name="contentReviews"]')).not.toBeNull();
159
+ fireEvent.click(screen.getByRole("button", {
160
+ name: "Content Reviews"
161
+ }));
162
+ expect(goToRoute).toHaveBeenCalledWith(Routes.Pages.WorkflowStateList);
163
+ });
164
+ it("flag off: no Content Reviews sidebar item is mounted", async ()=>{
165
+ mountRoot(false, null);
166
+ await waitForActions();
167
+ const footer = screen.getByTestId("sidebar-footer");
168
+ expect(footer.querySelector('[data-name="contentReviews"]')).toBeNull();
169
+ expect(screen.queryByRole("button", {
170
+ name: "Content Reviews"
171
+ })).toBeNull();
172
+ });
173
+ });
174
+
175
+ //# sourceMappingURL=pageListChangeStatus.wiring.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pageListChangeStatus.wiring.test.js","sources":["../src/pageListChangeStatus.wiring.test.tsx"],"sourcesContent":["import React from \"react\";\nimport { cleanup } from \"@testing-library/react\";\nimport { fireEvent } from \"@testing-library/react\";\nimport { render } from \"@testing-library/react\";\nimport { screen } from \"@testing-library/react\";\nimport { afterEach } from \"vitest\";\nimport { describe } from \"vitest\";\nimport { expect } from \"vitest\";\nimport { it } from \"vitest\";\nimport { vi } from \"vitest\";\nimport { Container } from \"@webiny/di\";\nimport { DiContainerProvider } from \"@webiny/app\";\nimport { MainGraphQLClient } from \"@webiny/app/features/mainGraphQLClient/abstractions.js\";\nimport { ListCache } from \"@webiny/app-admin/features/listCache/index.js\";\nimport { CompositionProvider } from \"@webiny/react-composition\";\nimport { Page } from \"@webiny/app-website-builder/domain/Page/index.js\";\nimport { PageDtoMapper } from \"@webiny/app-website-builder/domain/Page/index.js\";\nimport { PageListConfig } from \"@webiny/app-website-builder/presentation/pages/PageList/configs/index.js\";\nimport { usePageListConfig } from \"@webiny/app-website-builder/presentation/pages/PageList/configs/index.js\";\nimport { PageListWithConfig } from \"@webiny/app-website-builder/presentation/pages/PageList/configs/index.js\";\nimport { PageProvider } from \"@webiny/app-website-builder/presentation/pages/PageList/hooks/usePage.js\";\nimport { FullPageCache } from \"@webiny/app-website-builder/features/pages/shared/abstractions.js\";\nimport { PageListCache } from \"@webiny/app-website-builder/features/pages/shared/abstractions.js\";\nimport { TableRowMapper as BaseTableRowMapper } from \"@webiny/app-website-builder/presentation/pages/PageList/components/Table/TableRowMapper.js\";\nimport { ReviewNotificationService } from \"@webiny/app-workflows/review/notifications/abstractions.js\";\nimport { ReviewState } from \"@webiny/app-workflows/review/domain/ReviewState.js\";\nimport type { ReviewStateValue } from \"@webiny/app-workflows/review/domain/ReviewState.js\";\nimport { StepState } from \"@webiny/app-workflows/review/domain/StepState.js\";\nimport { Routes } from \"~/routes.js\";\nimport \"~/types.js\";\nimport { WebsiteBuilderWorkflows } from \"~/index.js\";\n\ninterface SidebarItemStubProps {\n text: string;\n onClick: () => void;\n}\n\nconst flags = vi.hoisted(() => {\n return { enabled: true };\n});\n\nconst goToRoute = vi.hoisted(() => vi.fn());\n\nvi.mock(\"@webiny/app-admin\", async importOriginal => {\n const actual = await importOriginal<typeof import(\"@webiny/app-admin\")>();\n return {\n ...actual,\n useFeatureFlags: () => ({ isEnabled: () => flags.enabled }),\n useRouter: () => ({ goToRoute })\n };\n});\n\nvi.mock(\"@webiny/admin-ui\", async importOriginal => {\n const actual = await importOriginal<typeof import(\"@webiny/admin-ui\")>();\n const React = await import(\"react\");\n const Item = (props: SidebarItemStubProps) => {\n return React.createElement(\"button\", { onClick: props.onClick }, props.text);\n };\n const ItemIcon = () => React.createElement(\"span\");\n return {\n ...actual,\n Sidebar: { ...actual.Sidebar, Item: Object.assign(Item, { Icon: ItemIcon }) }\n };\n});\n\nvi.mock(\"~/Routes/index.js\", () => {\n return { WebsiteBuilderWorkflowsMenu: () => null };\n});\n\nvi.mock(\"~/Components/ContentReviews/WbContentReviews.js\", () => {\n return { WbContentReviews: () => null };\n});\n\n/*\n * The row action host needs the page list shell; the stub renders the element it is given, so what\n * decides visibility is the real decorator that the real PagesList mounts through the real config.\n */\nvi.mock(\n \"@webiny/app-website-builder/presentation/pages/PageList/configs/Browser/PageAction.js\",\n async () => {\n const { makeDecoratable } = await import(\"@webiny/react-composition\");\n interface StubProps {\n name: string;\n element?: React.ReactElement;\n }\n const PageAction = makeDecoratable(\"PageAction\", (props: StubProps) => {\n return props.element ?? null;\n });\n return { PageAction };\n }\n);\n\nconst { Browser } = PageListConfig;\n\nconst createDto = (reviewState: ReviewStateValue | null) => {\n let system = null;\n if (reviewState !== null) {\n system = {\n workflow: {\n workflowId: \"workflow-1\",\n reviewState,\n stepId: \"step-1\",\n stepName: \"Legal\",\n stepState: StepState.InReview\n }\n };\n }\n const page = Page.create({ id: \"page-1#0001\", entryId: \"page-1\", system });\n return PageDtoMapper.toDTO(page);\n};\n\n/* Renders the sidebar footer slot the way the page list does. */\nconst SidebarFooterProbe = () => {\n const { browser } = usePageListConfig();\n\n return (\n <div data-testid={\"sidebar-footer\"}>\n {browser.sidebarFooter.map(footer => (\n <div key={footer.name} data-name={footer.name}>\n {footer.element}\n </div>\n ))}\n </div>\n );\n};\n\n/* The page list renders its children once the config has been collected. */\nconst waitForActions = async () => {\n await screen.findByTestId(\"edit\");\n};\n\nconst mountRoot = (enabled: boolean, reviewState: ReviewStateValue | null) => {\n flags.enabled = enabled;\n const container = new Container();\n container.register(BaseTableRowMapper);\n container.registerInstance(PageListCache, new ListCache<Page>(\"entryId\"));\n container.registerInstance(FullPageCache, new ListCache<Page>(\"id\"));\n container.registerInstance(MainGraphQLClient, { execute: vi.fn() });\n container.registerInstance(ReviewNotificationService, { handle: vi.fn() });\n\n render(\n <DiContainerProvider container={container}>\n <CompositionProvider>\n <WebsiteBuilderWorkflows />\n {/* A neutral config entry, so the page list config flushes with the flag off too. */}\n <PageListConfig>\n <Browser.Sidebar.Footer name={\"neutral\"} element={<span />} />\n </PageListConfig>\n <PageListWithConfig>\n <SidebarFooterProbe />\n <PageProvider page={createDto(reviewState)}>\n <Browser.Page.Action\n name={\"changeStatus\"}\n element={<span data-testid={\"change-status\"} />}\n />\n <Browser.Page.Action\n name={\"edit\"}\n element={<span data-testid={\"edit\"} />}\n />\n </PageProvider>\n </PageListWithConfig>\n </CompositionProvider>\n </DiContainerProvider>\n );\n};\n\ndescribe(\"Website Builder Change status decoration from the composition root\", () => {\n afterEach(() => {\n cleanup();\n goToRoute.mockReset();\n });\n\n it(\"flag on: the action is hidden for a page whose review is in progress\", async () => {\n mountRoot(true, ReviewState.InProgress);\n\n await waitForActions();\n expect(screen.queryAllByTestId(\"change-status\")).toHaveLength(0);\n expect(screen.queryAllByTestId(\"edit\")).toHaveLength(1);\n });\n\n it(\"flag on: the action is shown for an approved review\", async () => {\n mountRoot(true, ReviewState.Approved);\n\n await waitForActions();\n expect(screen.queryAllByTestId(\"change-status\")).toHaveLength(1);\n });\n\n it(\"flag on: the action is shown for a page with no review\", async () => {\n mountRoot(true, null);\n\n await waitForActions();\n expect(screen.queryAllByTestId(\"change-status\")).toHaveLength(1);\n });\n\n it(\"flag off: the action is left untouched even for a review in progress\", async () => {\n mountRoot(false, ReviewState.InProgress);\n\n await waitForActions();\n expect(screen.queryAllByTestId(\"change-status\")).toHaveLength(1);\n });\n\n it(\"flag on: the Content Reviews sidebar item is mounted and opens the route\", async () => {\n mountRoot(true, null);\n\n await waitForActions();\n const footer = screen.getByTestId(\"sidebar-footer\");\n expect(footer.querySelector('[data-name=\"contentReviews\"]')).not.toBeNull();\n fireEvent.click(screen.getByRole(\"button\", { name: \"Content Reviews\" }));\n expect(goToRoute).toHaveBeenCalledWith(Routes.Pages.WorkflowStateList);\n });\n\n it(\"flag off: no Content Reviews sidebar item is mounted\", async () => {\n mountRoot(false, null);\n\n await waitForActions();\n const footer = screen.getByTestId(\"sidebar-footer\");\n expect(footer.querySelector('[data-name=\"contentReviews\"]')).toBeNull();\n expect(screen.queryByRole(\"button\", { name: \"Content Reviews\" })).toBeNull();\n });\n});\n"],"names":["flags","vi","goToRoute","importOriginal","actual","React","Item","props","ItemIcon","Object","makeDecoratable","PageAction","Browser","PageListConfig","createDto","reviewState","system","StepState","page","Page","PageDtoMapper","SidebarFooterProbe","browser","usePageListConfig","footer","waitForActions","screen","mountRoot","enabled","container","Container","BaseTableRowMapper","PageListCache","ListCache","FullPageCache","MainGraphQLClient","ReviewNotificationService","render","DiContainerProvider","CompositionProvider","WebsiteBuilderWorkflows","PageListWithConfig","PageProvider","describe","afterEach","cleanup","it","ReviewState","expect","fireEvent","Routes"],"mappings":"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"}
@@ -0,0 +1 @@
1
+ import "~/types.js";
@@ -0,0 +1,220 @@
1
+ import react from "react";
2
+ import { cleanup, render } from "@testing-library/react";
3
+ import { afterEach, describe, expect, it, vi } from "vitest";
4
+ import { Container } from "@webiny/di";
5
+ import { DiContainerProvider } from "@webiny/app";
6
+ import { ListCache } from "@webiny/app-admin/features/listCache/index.js";
7
+ import { createAbstraction } from "@webiny/feature/admin";
8
+ import { CompositionProvider } from "@webiny/react-composition";
9
+ import { Page } from "@webiny/app-website-builder/domain/Page/index.js";
10
+ import { WbPageStatus } from "@webiny/app-website-builder/constants.js";
11
+ import { GetPageGraphQLFieldSelection } from "@webiny/app-website-builder/features/pages/getPage/abstractions.js";
12
+ import { ListPagesGraphQLFieldSelection } from "@webiny/app-website-builder/features/pages/listPages/abstractions.js";
13
+ import { FullPageCache, PageListCache } from "@webiny/app-website-builder/features/pages/shared/abstractions.js";
14
+ import { TableRowMapper } from "@webiny/app-website-builder/presentation/pages/PageList/components/Table/abstractions.js";
15
+ import { TableRowMapper as TableRowMapper_js_TableRowMapper } from "@webiny/app-website-builder/presentation/pages/PageList/components/Table/TableRowMapper.js";
16
+ import { ReviewState } from "@webiny/app-workflows/review/domain/ReviewState.js";
17
+ import { StepState } from "@webiny/app-workflows/review/domain/StepState.js";
18
+ import { toSystemWorkflow } from "@webiny/app-workflows/review/domain/toSystemWorkflow.js";
19
+ import { ReviewCacheSyncHandler } from "@webiny/app-workflows/review/cache/ReviewCacheSyncHandler.js";
20
+ import { ReviewChangedEvent } from "@webiny/app-workflows/review/events/ReviewChangedEvent.js";
21
+ import { ReviewChangedHandler } from "@webiny/app-workflows/review/events/ReviewChangedHandler.js";
22
+ import { createReview } from "@webiny/app-workflows/review/testing/reviewFixtures.js";
23
+ import "./types.js";
24
+ import { WebsiteBuilderWorkflows } from "./index.js";
25
+ const flags = vi.hoisted(()=>({
26
+ enabled: true
27
+ }));
28
+ vi.mock("@webiny/app-admin", async (importOriginal)=>{
29
+ const actual = await importOriginal();
30
+ return {
31
+ ...actual,
32
+ useFeatureFlags: ()=>({
33
+ isEnabled: ()=>flags.enabled
34
+ })
35
+ };
36
+ });
37
+ vi.mock("~/Routes/index.js", ()=>({
38
+ WebsiteBuilderWorkflowsMenu: ()=>null
39
+ }));
40
+ vi.mock("~/Components/PagesList/index.js", ()=>({
41
+ PagesList: ()=>null
42
+ }));
43
+ vi.mock("~/Components/ContentReviews/WbContentReviews.js", ()=>({
44
+ WbContentReviews: ()=>null
45
+ }));
46
+ const createPage = (id, entryId)=>Page.create({
47
+ id,
48
+ entryId,
49
+ status: WbPageStatus.Draft
50
+ });
51
+ const OtherAppWriter = createAbstraction("Test/OtherAppReviewCacheWriter");
52
+ class OtherAppCacheSyncHandlerImpl extends ReviewCacheSyncHandler {
53
+ }
54
+ const OtherAppCacheSyncHandler = ReviewChangedHandler.createImplementation({
55
+ implementation: OtherAppCacheSyncHandlerImpl,
56
+ dependencies: [
57
+ OtherAppWriter
58
+ ]
59
+ });
60
+ const mountRoot = (enabled)=>{
61
+ flags.enabled = enabled;
62
+ const listCache = new ListCache("entryId");
63
+ const fullCache = new ListCache("id");
64
+ listCache.addItems([
65
+ createPage("page-1#0001", "page-1"),
66
+ createPage("page-2#0001", "page-2")
67
+ ]);
68
+ fullCache.addItems([
69
+ createPage("page-1#0001", "page-1")
70
+ ]);
71
+ const container = new Container();
72
+ container.register(TableRowMapper_js_TableRowMapper);
73
+ container.registerInstance(PageListCache, listCache);
74
+ container.registerInstance(FullPageCache, fullCache);
75
+ render(/*#__PURE__*/ react.createElement(DiContainerProvider, {
76
+ container: container
77
+ }, /*#__PURE__*/ react.createElement(CompositionProvider, null, /*#__PURE__*/ react.createElement(WebsiteBuilderWorkflows, null))));
78
+ return {
79
+ container,
80
+ listCache,
81
+ fullCache
82
+ };
83
+ };
84
+ const createInProgressPage = ()=>Page.create({
85
+ id: "page-1#0001",
86
+ entryId: "page-1",
87
+ status: WbPageStatus.Draft,
88
+ system: {
89
+ workflow: {
90
+ workflowId: "workflow-1",
91
+ reviewState: ReviewState.InProgress,
92
+ stepId: "step-1",
93
+ stepName: "Legal",
94
+ stepState: StepState.InReview
95
+ }
96
+ }
97
+ });
98
+ describe("Website Builder page list glue from the composition root", ()=>{
99
+ afterEach(()=>{
100
+ cleanup();
101
+ });
102
+ it("flag on: both field selections ask for system.workflow", ()=>{
103
+ const { container } = mountRoot(true);
104
+ const listSelections = container.resolveAll(ListPagesGraphQLFieldSelection);
105
+ const getSelections = container.resolveAll(GetPageGraphQLFieldSelection);
106
+ expect(listSelections).toHaveLength(1);
107
+ expect(getSelections).toHaveLength(1);
108
+ expect(listSelections[0].getSelection()[0]).toContain("reviewState");
109
+ expect(getSelections[0].getSelection()[0]).toContain("reviewState");
110
+ });
111
+ it("flag on: rows of pages in review are not selectable", ()=>{
112
+ const { container } = mountRoot(true);
113
+ const mapper = container.resolve(TableRowMapper);
114
+ const row = mapper.fromPage(createInProgressPage());
115
+ expect(row.$selectable).toBe(false);
116
+ });
117
+ it("flag on: a review change updates the page row through the shared handler and the writer", async ()=>{
118
+ const { container, listCache, fullCache } = mountRoot(true);
119
+ const handlers = container.resolveAll(ReviewChangedHandler);
120
+ expect(handlers).toHaveLength(1);
121
+ const review = createReview({
122
+ namespace: "wb.page",
123
+ targetId: "page-1",
124
+ targetRevisionId: "page-1#0001",
125
+ state: ReviewState.InProgress
126
+ });
127
+ const expected = toSystemWorkflow(review);
128
+ expect(expected).not.toBeNull();
129
+ await handlers[0].handle(new ReviewChangedEvent({
130
+ namespace: "wb.page",
131
+ targetId: "page-1",
132
+ targetRevisionId: "page-1#0001",
133
+ review
134
+ }));
135
+ const home = listCache.getItems().find((page)=>"page-1" === page.entryId);
136
+ const other = listCache.getItems().find((page)=>"page-2" === page.entryId);
137
+ const full = fullCache.getItems().find((page)=>"page-1#0001" === page.id);
138
+ expect(home?.system?.workflow).toEqual(expected);
139
+ expect(full?.system?.workflow).toEqual(expected);
140
+ expect(other?.system).toBeNull();
141
+ await handlers[0].handle(new ReviewChangedEvent({
142
+ namespace: "wb.page",
143
+ targetId: "page-1",
144
+ targetRevisionId: "page-1#0001",
145
+ review: null
146
+ }));
147
+ const cleared = listCache.getItems().find((page)=>"page-1" === page.entryId);
148
+ expect(cleared?.system?.workflow).toBeNull();
149
+ });
150
+ it("flag on: another app's subclass of the shared handler coexists with this app's (R237)", async ()=>{
151
+ const { container, listCache } = mountRoot(true);
152
+ const otherWrite = vi.fn();
153
+ const otherWriter = {
154
+ canHandle: (namespace)=>"cms.article" === namespace,
155
+ write: otherWrite
156
+ };
157
+ container.registerInstance(OtherAppWriter, otherWriter);
158
+ container.register(OtherAppCacheSyncHandler);
159
+ const handlers = container.resolveAll(ReviewChangedHandler);
160
+ expect(handlers).toHaveLength(2);
161
+ const pageReview = createReview({
162
+ namespace: "wb.page",
163
+ targetId: "page-1",
164
+ targetRevisionId: "page-1#0001",
165
+ state: ReviewState.InProgress
166
+ });
167
+ const entryReview = createReview({
168
+ namespace: "cms.article",
169
+ targetId: "entry-1",
170
+ targetRevisionId: "entry-1#0001",
171
+ state: ReviewState.InProgress
172
+ });
173
+ for (const handler of handlers)await handler.handle(new ReviewChangedEvent({
174
+ namespace: "wb.page",
175
+ targetId: "page-1",
176
+ targetRevisionId: "page-1#0001",
177
+ review: pageReview
178
+ }));
179
+ const home = listCache.getItems().find((page)=>"page-1" === page.entryId);
180
+ expect(home?.system?.workflow).toEqual(toSystemWorkflow(pageReview));
181
+ expect(otherWrite).not.toHaveBeenCalled();
182
+ for (const handler of handlers)await handler.handle(new ReviewChangedEvent({
183
+ namespace: "cms.article",
184
+ targetId: "entry-1",
185
+ targetRevisionId: "entry-1#0001",
186
+ review: entryReview
187
+ }));
188
+ expect(otherWrite).toHaveBeenCalledTimes(1);
189
+ const stillHome = listCache.getItems().find((page)=>"page-1" === page.entryId);
190
+ expect(stillHome?.system?.workflow).toEqual(toSystemWorkflow(pageReview));
191
+ });
192
+ it("flag on: a review of another namespace is ignored", async ()=>{
193
+ const { container, listCache } = mountRoot(true);
194
+ const handlers = container.resolveAll(ReviewChangedHandler);
195
+ const review = createReview({
196
+ namespace: "cms.article",
197
+ targetId: "page-1",
198
+ targetRevisionId: "page-1#0001"
199
+ });
200
+ await handlers[0].handle(new ReviewChangedEvent({
201
+ namespace: "cms.article",
202
+ targetId: "page-1",
203
+ targetRevisionId: "page-1#0001",
204
+ review
205
+ }));
206
+ const home = listCache.getItems().find((page)=>"page-1" === page.entryId);
207
+ expect(home?.system).toBeNull();
208
+ });
209
+ it("flag off: nothing is registered and rows stay selectable", ()=>{
210
+ const { container } = mountRoot(false);
211
+ expect(container.resolveAll(ListPagesGraphQLFieldSelection)).toHaveLength(0);
212
+ expect(container.resolveAll(GetPageGraphQLFieldSelection)).toHaveLength(0);
213
+ expect(container.resolveAll(ReviewChangedHandler)).toHaveLength(0);
214
+ const mapper = container.resolve(TableRowMapper);
215
+ const row = mapper.fromPage(createInProgressPage());
216
+ expect(row.$selectable).toBe(true);
217
+ });
218
+ });
219
+
220
+ //# sourceMappingURL=pageListGlue.wiring.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pageListGlue.wiring.test.js","sources":["../src/pageListGlue.wiring.test.tsx"],"sourcesContent":["import React from \"react\";\nimport { cleanup } from \"@testing-library/react\";\nimport { render } from \"@testing-library/react\";\nimport { afterEach } from \"vitest\";\nimport { describe } from \"vitest\";\nimport { expect } from \"vitest\";\nimport { it } from \"vitest\";\nimport { vi } from \"vitest\";\nimport { Container } from \"@webiny/di\";\nimport { DiContainerProvider } from \"@webiny/app\";\nimport { ListCache } from \"@webiny/app-admin/features/listCache/index.js\";\nimport { createAbstraction } from \"@webiny/feature/admin\";\nimport { CompositionProvider } from \"@webiny/react-composition\";\nimport { Page } from \"@webiny/app-website-builder/domain/Page/index.js\";\nimport { WbPageStatus } from \"@webiny/app-website-builder/constants.js\";\nimport { GetPageGraphQLFieldSelection } from \"@webiny/app-website-builder/features/pages/getPage/abstractions.js\";\nimport { ListPagesGraphQLFieldSelection } from \"@webiny/app-website-builder/features/pages/listPages/abstractions.js\";\nimport { FullPageCache } from \"@webiny/app-website-builder/features/pages/shared/abstractions.js\";\nimport { PageListCache } from \"@webiny/app-website-builder/features/pages/shared/abstractions.js\";\nimport { TableRowMapper as TableRowMapperAbstraction } from \"@webiny/app-website-builder/presentation/pages/PageList/components/Table/abstractions.js\";\nimport { TableRowMapper as BaseTableRowMapper } from \"@webiny/app-website-builder/presentation/pages/PageList/components/Table/TableRowMapper.js\";\nimport { ReviewState } from \"@webiny/app-workflows/review/domain/ReviewState.js\";\nimport { StepState } from \"@webiny/app-workflows/review/domain/StepState.js\";\nimport { toSystemWorkflow } from \"@webiny/app-workflows/review/domain/toSystemWorkflow.js\";\nimport type { IReviewCacheWriter } from \"@webiny/app-workflows/review/cache/IReviewCacheWriter.js\";\nimport { ReviewCacheSyncHandler } from \"@webiny/app-workflows/review/cache/ReviewCacheSyncHandler.js\";\nimport { ReviewChangedEvent } from \"@webiny/app-workflows/review/events/ReviewChangedEvent.js\";\nimport { ReviewChangedHandler } from \"@webiny/app-workflows/review/events/ReviewChangedHandler.js\";\nimport { createReview } from \"@webiny/app-workflows/review/testing/reviewFixtures.js\";\nimport \"~/types.js\";\nimport { WebsiteBuilderWorkflows } from \"~/index.js\";\n\nconst flags = vi.hoisted(() => {\n return { enabled: true };\n});\n\nvi.mock(\"@webiny/app-admin\", async importOriginal => {\n const actual = await importOriginal<typeof import(\"@webiny/app-admin\")>();\n return { ...actual, useFeatureFlags: () => ({ isEnabled: () => flags.enabled }) };\n});\n\nvi.mock(\"~/Routes/index.js\", () => {\n return { WebsiteBuilderWorkflowsMenu: () => null };\n});\n\nvi.mock(\"~/Components/PagesList/index.js\", () => {\n return { PagesList: () => null };\n});\n\nvi.mock(\"~/Components/ContentReviews/WbContentReviews.js\", () => {\n return { WbContentReviews: () => null };\n});\n\nconst createPage = (id: string, entryId: string): Page => {\n return Page.create({ id, entryId, status: WbPageStatus.Draft });\n};\n\n/*\n * Stands in for another app's cache sync: its own subclass of the shared handler (R237), bound to\n * its own writer token.\n */\nconst OtherAppWriter = createAbstraction<IReviewCacheWriter>(\"Test/OtherAppReviewCacheWriter\");\n\nclass OtherAppCacheSyncHandlerImpl\n extends ReviewCacheSyncHandler\n implements ReviewChangedHandler.Interface {}\n\nconst OtherAppCacheSyncHandler = ReviewChangedHandler.createImplementation({\n implementation: OtherAppCacheSyncHandlerImpl,\n dependencies: [OtherAppWriter]\n});\n\nconst mountRoot = (enabled: boolean) => {\n flags.enabled = enabled;\n const listCache = new ListCache<Page>(\"entryId\");\n const fullCache = new ListCache<Page>(\"id\");\n listCache.addItems([createPage(\"page-1#0001\", \"page-1\"), createPage(\"page-2#0001\", \"page-2\")]);\n fullCache.addItems([createPage(\"page-1#0001\", \"page-1\")]);\n\n const container = new Container();\n container.register(BaseTableRowMapper);\n container.registerInstance(PageListCache, listCache);\n container.registerInstance(FullPageCache, fullCache);\n\n render(\n <DiContainerProvider container={container}>\n <CompositionProvider>\n <WebsiteBuilderWorkflows />\n </CompositionProvider>\n </DiContainerProvider>\n );\n\n return { container, listCache, fullCache };\n};\n\nconst createInProgressPage = (): Page => {\n return Page.create({\n id: \"page-1#0001\",\n entryId: \"page-1\",\n status: WbPageStatus.Draft,\n system: {\n workflow: {\n workflowId: \"workflow-1\",\n reviewState: ReviewState.InProgress,\n stepId: \"step-1\",\n stepName: \"Legal\",\n stepState: StepState.InReview\n }\n }\n });\n};\n\ndescribe(\"Website Builder page list glue from the composition root\", () => {\n afterEach(() => {\n cleanup();\n });\n\n it(\"flag on: both field selections ask for system.workflow\", () => {\n const { container } = mountRoot(true);\n\n const listSelections = container.resolveAll(ListPagesGraphQLFieldSelection);\n const getSelections = container.resolveAll(GetPageGraphQLFieldSelection);\n\n expect(listSelections).toHaveLength(1);\n expect(getSelections).toHaveLength(1);\n expect(listSelections[0].getSelection()[0]).toContain(\"reviewState\");\n expect(getSelections[0].getSelection()[0]).toContain(\"reviewState\");\n });\n\n it(\"flag on: rows of pages in review are not selectable\", () => {\n const { container } = mountRoot(true);\n const mapper = container.resolve(TableRowMapperAbstraction);\n\n const row = mapper.fromPage(createInProgressPage());\n\n expect(row.$selectable).toBe(false);\n });\n\n it(\"flag on: a review change updates the page row through the shared handler and the writer\", async () => {\n const { container, listCache, fullCache } = mountRoot(true);\n const handlers = container.resolveAll(ReviewChangedHandler);\n expect(handlers).toHaveLength(1);\n const review = createReview({\n namespace: \"wb.page\",\n targetId: \"page-1\",\n targetRevisionId: \"page-1#0001\",\n state: ReviewState.InProgress\n });\n const expected = toSystemWorkflow(review);\n expect(expected).not.toBeNull();\n\n await handlers[0].handle(\n new ReviewChangedEvent({\n namespace: \"wb.page\",\n targetId: \"page-1\",\n targetRevisionId: \"page-1#0001\",\n review\n })\n );\n\n const home = listCache.getItems().find(page => page.entryId === \"page-1\");\n const other = listCache.getItems().find(page => page.entryId === \"page-2\");\n const full = fullCache.getItems().find(page => page.id === \"page-1#0001\");\n expect(home?.system?.workflow).toEqual(expected);\n expect(full?.system?.workflow).toEqual(expected);\n expect(other?.system).toBeNull();\n\n await handlers[0].handle(\n new ReviewChangedEvent({\n namespace: \"wb.page\",\n targetId: \"page-1\",\n targetRevisionId: \"page-1#0001\",\n review: null\n })\n );\n\n const cleared = listCache.getItems().find(page => page.entryId === \"page-1\");\n expect(cleared?.system?.workflow).toBeNull();\n });\n\n it(\"flag on: another app's subclass of the shared handler coexists with this app's (R237)\", async () => {\n const { container, listCache } = mountRoot(true);\n const otherWrite = vi.fn();\n const otherWriter: IReviewCacheWriter = {\n canHandle: namespace => namespace === \"cms.article\",\n write: otherWrite\n };\n container.registerInstance(OtherAppWriter, otherWriter);\n container.register(OtherAppCacheSyncHandler);\n const handlers = container.resolveAll(ReviewChangedHandler);\n expect(handlers).toHaveLength(2);\n const pageReview = createReview({\n namespace: \"wb.page\",\n targetId: \"page-1\",\n targetRevisionId: \"page-1#0001\",\n state: ReviewState.InProgress\n });\n const entryReview = createReview({\n namespace: \"cms.article\",\n targetId: \"entry-1\",\n targetRevisionId: \"entry-1#0001\",\n state: ReviewState.InProgress\n });\n\n for (const handler of handlers) {\n await handler.handle(\n new ReviewChangedEvent({\n namespace: \"wb.page\",\n targetId: \"page-1\",\n targetRevisionId: \"page-1#0001\",\n review: pageReview\n })\n );\n }\n const home = listCache.getItems().find(page => page.entryId === \"page-1\");\n expect(home?.system?.workflow).toEqual(toSystemWorkflow(pageReview));\n expect(otherWrite).not.toHaveBeenCalled();\n\n for (const handler of handlers) {\n await handler.handle(\n new ReviewChangedEvent({\n namespace: \"cms.article\",\n targetId: \"entry-1\",\n targetRevisionId: \"entry-1#0001\",\n review: entryReview\n })\n );\n }\n expect(otherWrite).toHaveBeenCalledTimes(1);\n const stillHome = listCache.getItems().find(page => page.entryId === \"page-1\");\n expect(stillHome?.system?.workflow).toEqual(toSystemWorkflow(pageReview));\n });\n\n it(\"flag on: a review of another namespace is ignored\", async () => {\n const { container, listCache } = mountRoot(true);\n const handlers = container.resolveAll(ReviewChangedHandler);\n const review = createReview({\n namespace: \"cms.article\",\n targetId: \"page-1\",\n targetRevisionId: \"page-1#0001\"\n });\n\n await handlers[0].handle(\n new ReviewChangedEvent({\n namespace: \"cms.article\",\n targetId: \"page-1\",\n targetRevisionId: \"page-1#0001\",\n review\n })\n );\n\n const home = listCache.getItems().find(page => page.entryId === \"page-1\");\n expect(home?.system).toBeNull();\n });\n\n it(\"flag off: nothing is registered and rows stay selectable\", () => {\n const { container } = mountRoot(false);\n\n expect(container.resolveAll(ListPagesGraphQLFieldSelection)).toHaveLength(0);\n expect(container.resolveAll(GetPageGraphQLFieldSelection)).toHaveLength(0);\n expect(container.resolveAll(ReviewChangedHandler)).toHaveLength(0);\n const mapper = container.resolve(TableRowMapperAbstraction);\n const row = mapper.fromPage(createInProgressPage());\n expect(row.$selectable).toBe(true);\n });\n});\n"],"names":["flags","vi","importOriginal","actual","createPage","id","entryId","Page","WbPageStatus","OtherAppWriter","createAbstraction","OtherAppCacheSyncHandlerImpl","ReviewCacheSyncHandler","OtherAppCacheSyncHandler","ReviewChangedHandler","mountRoot","enabled","listCache","ListCache","fullCache","container","Container","BaseTableRowMapper","PageListCache","FullPageCache","render","DiContainerProvider","CompositionProvider","WebsiteBuilderWorkflows","createInProgressPage","ReviewState","StepState","describe","afterEach","cleanup","it","listSelections","ListPagesGraphQLFieldSelection","getSelections","GetPageGraphQLFieldSelection","expect","mapper","TableRowMapperAbstraction","row","handlers","review","createReview","expected","toSystemWorkflow","ReviewChangedEvent","home","page","other","full","cleared","otherWrite","otherWriter","namespace","pageReview","entryReview","handler","stillHome"],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ import { GetPageGraphQLFieldSelection } from "@webiny/app-website-builder/features/pages/getPage/abstractions.js";
2
+ declare class WbReviewGetPageFieldSelectionImpl implements GetPageGraphQLFieldSelection.Interface {
3
+ getSelection(): string[];
4
+ }
5
+ export declare const WbReviewGetPageFieldSelection: typeof WbReviewGetPageFieldSelectionImpl & {
6
+ __abstraction: import("@webiny/di").Abstraction<import("@webiny/app-website-builder/features/pages/getPage/abstractions.js").IGetPageGraphQLFieldSelection>;
7
+ };
8
+ export {};
@@ -0,0 +1,16 @@
1
+ import { GetPageGraphQLFieldSelection } from "@webiny/app-website-builder/features/pages/getPage/abstractions.js";
2
+ import { WB_REVIEW_PAGE_SELECTION } from "../wbReviewPageSelection.js";
3
+ class WbReviewGetPageFieldSelectionImpl {
4
+ getSelection() {
5
+ return [
6
+ WB_REVIEW_PAGE_SELECTION
7
+ ];
8
+ }
9
+ }
10
+ const WbReviewGetPageFieldSelection = GetPageGraphQLFieldSelection.createImplementation({
11
+ dependencies: [],
12
+ implementation: WbReviewGetPageFieldSelectionImpl
13
+ });
14
+ export { WbReviewGetPageFieldSelection };
15
+
16
+ //# sourceMappingURL=WbReviewGetPageFieldSelection.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"presentation/page/PageGet/WbReviewGetPageFieldSelection.js","sources":["../../../../src/presentation/page/PageGet/WbReviewGetPageFieldSelection.ts"],"sourcesContent":["import { GetPageGraphQLFieldSelection } from \"@webiny/app-website-builder/features/pages/getPage/abstractions.js\";\nimport { WB_REVIEW_PAGE_SELECTION } from \"../wbReviewPageSelection.js\";\n\nclass WbReviewGetPageFieldSelectionImpl implements GetPageGraphQLFieldSelection.Interface {\n getSelection(): string[] {\n return [WB_REVIEW_PAGE_SELECTION];\n }\n}\n\nexport const WbReviewGetPageFieldSelection = GetPageGraphQLFieldSelection.createImplementation({\n dependencies: [],\n implementation: WbReviewGetPageFieldSelectionImpl\n});\n"],"names":["WbReviewGetPageFieldSelectionImpl","WB_REVIEW_PAGE_SELECTION","WbReviewGetPageFieldSelection","GetPageGraphQLFieldSelection"],"mappings":";;AAGA,MAAMA;IACF,eAAyB;QACrB,OAAO;YAACC;SAAyB;IACrC;AACJ;AAEO,MAAMC,gCAAgCC,6BAA6B,oBAAoB,CAAC;IAC3F,cAAc,EAAE;IAChB,gBAAgBH;AACpB"}
@@ -0,0 +1,19 @@
1
+ import { describe, expect, it } from "vitest";
2
+ import { Container } from "@webiny/di";
3
+ import { GetPageGraphQLFieldSelection } from "@webiny/app-website-builder/features/pages/getPage/abstractions.js";
4
+ import { REVIEW_SYSTEM_WORKFLOW_SELECTION } from "@webiny/app-workflows/review/gateway/reviewFields.js";
5
+ import { WbReviewGetPageFieldSelection } from "./WbReviewGetPageFieldSelection.js";
6
+ describe("WbReviewGetPageFieldSelection", ()=>{
7
+ it("selects system.workflow with the shared selection constant", ()=>{
8
+ const container = new Container();
9
+ container.register(WbReviewGetPageFieldSelection);
10
+ const selections = container.resolveAll(GetPageGraphQLFieldSelection);
11
+ expect(selections).toHaveLength(1);
12
+ const fields = selections[0].getSelection();
13
+ expect(fields).toHaveLength(1);
14
+ const normalized = fields[0].replace(/\s+/g, " ").trim();
15
+ expect(normalized).toBe(`system { workflow { ${REVIEW_SYSTEM_WORKFLOW_SELECTION} } }`);
16
+ });
17
+ });
18
+
19
+ //# sourceMappingURL=WbReviewGetPageFieldSelection.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"presentation/page/PageGet/WbReviewGetPageFieldSelection.test.js","sources":["../../../../src/presentation/page/PageGet/WbReviewGetPageFieldSelection.test.ts"],"sourcesContent":["import { describe } from \"vitest\";\nimport { expect } from \"vitest\";\nimport { it } from \"vitest\";\nimport { Container } from \"@webiny/di\";\nimport { GetPageGraphQLFieldSelection } from \"@webiny/app-website-builder/features/pages/getPage/abstractions.js\";\nimport { REVIEW_SYSTEM_WORKFLOW_SELECTION } from \"@webiny/app-workflows/review/gateway/reviewFields.js\";\nimport { WbReviewGetPageFieldSelection } from \"./WbReviewGetPageFieldSelection.js\";\n\ndescribe(\"WbReviewGetPageFieldSelection\", () => {\n it(\"selects system.workflow with the shared selection constant\", () => {\n const container = new Container();\n container.register(WbReviewGetPageFieldSelection);\n\n const selections = container.resolveAll(GetPageGraphQLFieldSelection);\n\n expect(selections).toHaveLength(1);\n const fields = selections[0].getSelection();\n expect(fields).toHaveLength(1);\n const normalized = fields[0].replace(/\\s+/g, \" \").trim();\n expect(normalized).toBe(`system { workflow { ${REVIEW_SYSTEM_WORKFLOW_SELECTION} } }`);\n });\n});\n"],"names":["describe","it","container","Container","WbReviewGetPageFieldSelection","selections","GetPageGraphQLFieldSelection","expect","fields","normalized","REVIEW_SYSTEM_WORKFLOW_SELECTION"],"mappings":";;;;;AAQAA,SAAS,iCAAiC;IACtCC,GAAG,8DAA8D;QAC7D,MAAMC,YAAY,IAAIC;QACtBD,UAAU,QAAQ,CAACE;QAEnB,MAAMC,aAAaH,UAAU,UAAU,CAACI;QAExCC,OAAOF,YAAY,YAAY,CAAC;QAChC,MAAMG,SAASH,UAAU,CAAC,EAAE,CAAC,YAAY;QACzCE,OAAOC,QAAQ,YAAY,CAAC;QAC5B,MAAMC,aAAaD,MAAM,CAAC,EAAE,CAAC,OAAO,CAAC,QAAQ,KAAK,IAAI;QACtDD,OAAOE,YAAY,IAAI,CAAC,CAAC,oBAAoB,EAAEC,iCAAiC,IAAI,CAAC;IACzF;AACJ"}
@@ -0,0 +1 @@
1
+ export declare const PageGetWorkflowsFeature: import("@webiny/feature/admin").FeatureDefinition<any, []>;
@@ -0,0 +1,11 @@
1
+ import { createFeature } from "@webiny/feature/admin";
2
+ import { WbReviewGetPageFieldSelection } from "./WbReviewGetPageFieldSelection.js";
3
+ const PageGetWorkflowsFeature = createFeature({
4
+ name: "PageGetWorkflows",
5
+ register (container) {
6
+ container.register(WbReviewGetPageFieldSelection);
7
+ }
8
+ });
9
+ export { PageGetWorkflowsFeature };
10
+
11
+ //# sourceMappingURL=feature.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"presentation/page/PageGet/feature.js","sources":["../../../../src/presentation/page/PageGet/feature.ts"],"sourcesContent":["import { createFeature } from \"@webiny/feature/admin\";\nimport { WbReviewGetPageFieldSelection } from \"./WbReviewGetPageFieldSelection.js\";\n\nexport const PageGetWorkflowsFeature = createFeature({\n name: \"PageGetWorkflows\",\n register(container) {\n container.register(WbReviewGetPageFieldSelection);\n }\n});\n"],"names":["PageGetWorkflowsFeature","createFeature","container","WbReviewGetPageFieldSelection"],"mappings":";;AAGO,MAAMA,0BAA0BC,cAAc;IACjD,MAAM;IACN,UAASC,SAAS;QACdA,UAAU,QAAQ,CAACC;IACvB;AACJ"}
@@ -0,0 +1,8 @@
1
+ import { ListPagesGraphQLFieldSelection } from "@webiny/app-website-builder/features/pages/listPages/abstractions.js";
2
+ declare class WbReviewListPagesFieldSelectionImpl implements ListPagesGraphQLFieldSelection.Interface {
3
+ getSelection(): string[];
4
+ }
5
+ export declare const WbReviewListPagesFieldSelection: typeof WbReviewListPagesFieldSelectionImpl & {
6
+ __abstraction: import("@webiny/di").Abstraction<import("@webiny/app-website-builder/features/pages/listPages/abstractions.js").IListPagesGraphQLFieldSelection>;
7
+ };
8
+ export {};