@raketa-cloud/admin 1.8.3 → 1.8.6

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 (320) hide show
  1. package/dist/application.css +36 -0
  2. package/package.json +2 -2
  3. package/src/cloud/ResourceChanges.js +41 -0
  4. package/src/cloud/ResourceRevisions.js +242 -0
  5. package/src/cloud/Resources.js +219 -0
  6. package/src/cloud/documents/common.js +0 -30
  7. package/src/cloud/documents/resourcesDocuments.js +371 -0
  8. package/src/handlers/_shared/getResourceUpdateDestination.js +11 -0
  9. package/src/handlers/resource_revisions/CancelSchedulesHandler.js +31 -0
  10. package/src/handlers/resource_revisions/CodeHandler.js +70 -0
  11. package/src/handlers/resource_revisions/GeneralHandler.js +72 -0
  12. package/src/handlers/{article_revisions → resource_revisions}/LocksHandler.js +15 -10
  13. package/src/handlers/resource_revisions/MetaHandler.js +70 -0
  14. package/src/handlers/{article_revisions → resource_revisions}/PublishesHandler.js +27 -19
  15. package/src/handlers/resource_revisions/ResourceRevisionsHandler.js +65 -0
  16. package/src/handlers/{article_revisions → resource_revisions}/RevertsHandler.js +7 -5
  17. package/src/handlers/{page_revisions → resource_revisions}/TagHandler.js +31 -16
  18. package/src/handlers/resource_revisions/UnlocksHandler.js +29 -0
  19. package/src/handlers/resource_revisions/VisualHandler.js +71 -0
  20. package/src/handlers/{article_revisions → resource_revisions}/WidgetHandler.js +11 -6
  21. package/src/handlers/{pages → resources}/ChangeHandler.js +5 -3
  22. package/src/handlers/resources/ClonesHandler.js +24 -0
  23. package/src/handlers/resources/DeletesHandler.js +79 -0
  24. package/src/handlers/{pages → resources}/ExportsHandler.js +8 -4
  25. package/src/handlers/resources/HistoryHandler.js +39 -0
  26. package/src/handlers/{pages/PagesAPIHandler.js → resources/ResourcesAPIHandler.js} +4 -2
  27. package/src/handlers/{pages/PagesHandler.js → resources/ResourcesHandler.js} +35 -18
  28. package/src/handlers/{pages → resources}/TranslationsHandler.js +65 -37
  29. package/src/handlers/resources/URLsHandler.js +84 -0
  30. package/src/helpers/CSVExportHelper.js +5 -6
  31. package/src/index.js +28 -69
  32. package/src/routeArticlesModule.js +7 -167
  33. package/src/routeEventsModule.js +7 -182
  34. package/src/routePagesModule.js +7 -179
  35. package/src/routeResource.js +197 -0
  36. package/src/routeStandard.js +1 -1
  37. package/src/setupCloud.js +10 -30
  38. package/src/tests/HonoAdapter.coverage.test.js +640 -0
  39. package/src/tests/HonoAdapter.test.js +3 -0
  40. package/src/tests/buildResourcePath.test.js +69 -0
  41. package/src/tests/handlers/_shared/getResourceUpdateDestination.test.js +63 -0
  42. package/src/tests/handlers/{article_revisions/CancelScheduledHandler.test → resource_revisions/CancelSchedulesHandler.test}/create.test.js +26 -26
  43. package/src/tests/handlers/{page_revisions/CodesHandler.test → resource_revisions/CodeHandler.test}/edit_form.test.js +13 -16
  44. package/src/tests/handlers/{article_revisions/CodesHandler.test → resource_revisions/CodeHandler.test}/update.test.js +38 -57
  45. package/src/tests/handlers/resource_revisions/GeneralHandler.test/edit_form.test.js +58 -0
  46. package/src/tests/handlers/{article_revisions → resource_revisions}/GeneralHandler.test/update.test.js +39 -53
  47. package/src/tests/handlers/{event_revisions → resource_revisions}/LocksHandler.test/create.test.js +34 -31
  48. package/src/tests/handlers/{event_revisions → resource_revisions}/LocksHandler.test/create_form.test.js +16 -12
  49. package/src/tests/handlers/{page_revisions → resource_revisions}/MetaHandler.test/edit_form.test.js +13 -9
  50. package/src/tests/handlers/{article_revisions → resource_revisions}/MetaHandler.test/update.test.js +38 -57
  51. package/src/tests/handlers/{article_revisions → resource_revisions}/PublishesHandler.test/create.test.js +60 -72
  52. package/src/tests/handlers/{page_revisions → resource_revisions}/PublishesHandler.test/create_form.test.js +14 -10
  53. package/src/tests/handlers/resource_revisions/ResourceRevisionsHandler.test/create.test.js +87 -0
  54. package/src/tests/handlers/{article_revisions/ArticleRevisionsHandler.test → resource_revisions/ResourceRevisionsHandler.test}/destroy.test.js +13 -13
  55. package/src/tests/handlers/resource_revisions/RevertsHandler.test/create.test.js +83 -0
  56. package/src/tests/handlers/{event_revisions → resource_revisions}/TagHandler.test/edit_form.test.js +23 -19
  57. package/src/tests/handlers/{article_revisions → resource_revisions}/TagHandler.test/update.test.js +44 -49
  58. package/src/tests/handlers/{article_revisions → resource_revisions}/UnlocksHandler.test/create.test.js +22 -22
  59. package/src/tests/handlers/{page_revisions/VisualHandler.test.test → resource_revisions/VisualHandler.test}/edit_form.test.js +13 -16
  60. package/src/tests/handlers/resource_revisions/VisualHandler.test/update.test.js +130 -0
  61. package/src/tests/handlers/{event_revisions → resource_revisions}/WidgetHandler.test/show.test.js +11 -7
  62. package/src/tests/handlers/{event_revisions → resource_revisions}/WidgetHandler.test/update.test.js +28 -14
  63. package/src/tests/handlers/resources/ChangeHandler.test/show.test.js +57 -0
  64. package/src/tests/handlers/resources/ClonesHandler.test/create.test.js +57 -0
  65. package/src/tests/handlers/{articles → resources}/DeletesHandler.test/create.test.js +30 -30
  66. package/src/tests/handlers/resources/DeletesHandler.test/create_form.test.js +60 -0
  67. package/src/tests/handlers/{articles → resources}/ExportsHandler.test/index.test.js +57 -57
  68. package/src/tests/handlers/{articles/ArticlesHistoryHandler.test → resources/HistoryHandler.test}/index.test.js +19 -20
  69. package/src/tests/handlers/resources/ResourcesAPIHandler.test/index.test.js +41 -0
  70. package/src/tests/handlers/{pages/PagesHandler.test → resources/ResourcesHandler.test}/create.test.js +23 -22
  71. package/src/tests/handlers/{events/EventsHandler.test → resources/ResourcesHandler.test}/create_form.test.js +12 -11
  72. package/src/tests/handlers/{events/EventsHandler.test → resources/ResourcesHandler.test}/index.test.js +18 -18
  73. package/src/tests/handlers/resources/ResourcesHandler.test/show.test.js +111 -0
  74. package/src/tests/handlers/resources/TranslationsHandler.test/create.test.js +320 -0
  75. package/src/tests/handlers/resources/TranslationsHandler.test/create_form.test.js +85 -0
  76. package/src/tests/handlers/resources/TranslationsHandler.test/index.test.js +99 -0
  77. package/src/tests/handlers/{articles → resources}/URLsHandler.test/create.test.js +48 -43
  78. package/src/tests/handlers/resources/URLsHandler.test/create_form.test.js +55 -0
  79. package/src/tests/routeArticlesModule.test.js +43 -0
  80. package/src/tests/routeCategoriesModule.test.js +23 -0
  81. package/src/tests/routeEventsModule.test.js +43 -0
  82. package/src/tests/routePagesModule.test.js +43 -0
  83. package/src/tests/routeResource.test.js +202 -0
  84. package/src/tests/routeSettings.test.js +40 -0
  85. package/src/tests/routeStandard.test.js +70 -0
  86. package/src/tests/setGlobalContext.test.js +12 -0
  87. package/src/tests/setupAuthentication.test.js +407 -0
  88. package/src/tests/setupCloud.test.js +51 -0
  89. package/src/tests/support/factory.js +15 -86
  90. package/src/views/article_revisions/_nav.ejs +6 -6
  91. package/src/views/article_revisions/codes/_form.ejs +2 -2
  92. package/src/views/article_revisions/general/_form.ejs +3 -3
  93. package/src/views/article_revisions/locks/_form.ejs +2 -2
  94. package/src/views/article_revisions/meta/_form.ejs +2 -2
  95. package/src/views/article_revisions/publishes/_form.ejs +3 -3
  96. package/src/views/article_revisions/tags/_form.ejs +2 -2
  97. package/src/views/article_revisions/visuals/_form.ejs +2 -2
  98. package/src/views/articles/_form.ejs +9 -9
  99. package/src/views/articles/_shared/_export_button.ejs +1 -1
  100. package/src/views/articles/_shared/_history_toolbar.ejs +2 -2
  101. package/src/views/articles/_shared/_revision_operator.ejs +8 -0
  102. package/src/views/articles/_shared/_revision_toolbar.ejs +7 -7
  103. package/src/views/articles/_shared/_title.ejs +2 -2
  104. package/src/views/articles/_shared/_toolbar.ejs +6 -6
  105. package/src/views/articles/_shared/history_table.ejs +1 -1
  106. package/src/views/articles/create_form.ejs +1 -1
  107. package/src/views/articles/deletes/create_form.ejs +3 -3
  108. package/src/views/articles/history/index.ejs +4 -4
  109. package/src/views/articles/index.ejs +14 -12
  110. package/src/views/articles/show.ejs +8 -22
  111. package/src/views/articles/translations/_translation_toolbar.ejs +2 -2
  112. package/src/views/articles/translations/create_form.ejs +2 -2
  113. package/src/views/articles/translations/index.ejs +3 -3
  114. package/src/views/articles/urls/create_form.ejs +3 -3
  115. package/src/views/event_revisions/_nav.ejs +6 -6
  116. package/src/views/event_revisions/codes/_form.ejs +2 -2
  117. package/src/views/event_revisions/general/_form.ejs +5 -5
  118. package/src/views/event_revisions/locks/_form.ejs +2 -2
  119. package/src/views/event_revisions/meta/_form.ejs +2 -2
  120. package/src/views/event_revisions/publishes/_form.ejs +3 -3
  121. package/src/views/event_revisions/tags/_form.ejs +2 -2
  122. package/src/views/event_revisions/visuals/_form.ejs +2 -2
  123. package/src/views/events/_form.ejs +6 -6
  124. package/src/views/events/_shared/_export_button.ejs +1 -1
  125. package/src/views/events/_shared/_history_toolbar.ejs +2 -2
  126. package/src/views/events/_shared/_revision_operator.ejs +8 -0
  127. package/src/views/events/_shared/_revision_toolbar.ejs +7 -7
  128. package/src/views/events/_shared/_title.ejs +2 -2
  129. package/src/views/events/_shared/_toolbar.ejs +6 -6
  130. package/src/views/events/_shared/history_table.ejs +1 -1
  131. package/src/views/events/create_form.ejs +1 -1
  132. package/src/views/events/deletes/create_form.ejs +3 -3
  133. package/src/views/events/history/index.ejs +4 -4
  134. package/src/views/events/index.ejs +14 -12
  135. package/src/views/events/show.ejs +8 -22
  136. package/src/views/events/translations/_translation_toolbar.ejs +2 -2
  137. package/src/views/events/translations/create_form.ejs +2 -2
  138. package/src/views/events/translations/index.ejs +3 -3
  139. package/src/views/events/urls/create_form.ejs +3 -3
  140. package/src/views/layouts/application.ejs +30 -0
  141. package/src/views/page_revisions/_nav.ejs +6 -6
  142. package/src/views/page_revisions/codes/_form.ejs +2 -2
  143. package/src/views/page_revisions/general/_form.ejs +2 -2
  144. package/src/views/page_revisions/locks/_form.ejs +2 -2
  145. package/src/views/page_revisions/meta/_form.ejs +2 -2
  146. package/src/views/page_revisions/publishes/_form.ejs +3 -3
  147. package/src/views/page_revisions/tags/_form.ejs +2 -2
  148. package/src/views/page_revisions/visuals/_form.ejs +2 -2
  149. package/src/views/pages/_form.ejs +3 -3
  150. package/src/views/pages/_shared/_export_button.ejs +1 -1
  151. package/src/views/pages/_shared/_history_toolbar.ejs +2 -2
  152. package/src/views/pages/_shared/_revision_operator.ejs +8 -0
  153. package/src/views/pages/_shared/_revision_toolbar.ejs +7 -7
  154. package/src/views/pages/_shared/_title.ejs +2 -2
  155. package/src/views/pages/_shared/_toolbar.ejs +6 -6
  156. package/src/views/pages/_shared/history_table.ejs +1 -1
  157. package/src/views/pages/create_form.ejs +1 -1
  158. package/src/views/pages/deletes/create_form.ejs +3 -3
  159. package/src/views/pages/history/index.ejs +4 -4
  160. package/src/views/pages/index.ejs +12 -10
  161. package/src/views/pages/show.ejs +8 -22
  162. package/src/views/pages/translations/_translation_toolbar.ejs +2 -2
  163. package/src/views/pages/translations/create_form.ejs +2 -2
  164. package/src/views/pages/translations/index.ejs +3 -3
  165. package/src/views/pages/urls/create_form.ejs +3 -3
  166. package/src/cloud/ArticleChanges.js +0 -36
  167. package/src/cloud/ArticleRevisions.js +0 -239
  168. package/src/cloud/Articles.js +0 -216
  169. package/src/cloud/EventChanges.js +0 -36
  170. package/src/cloud/EventRevisions.js +0 -246
  171. package/src/cloud/Events.js +0 -231
  172. package/src/cloud/PageChanges.js +0 -36
  173. package/src/cloud/PageRevisions.js +0 -226
  174. package/src/cloud/Pages.js +0 -204
  175. package/src/cloud/documents/articlesDocuments.js +0 -375
  176. package/src/cloud/documents/eventsDocuments.js +0 -390
  177. package/src/cloud/documents/pagesDocuments.js +0 -370
  178. package/src/handlers/_shared/getArticlesUpdateDestination.js +0 -7
  179. package/src/handlers/_shared/getEventsUpdateDestination.js +0 -7
  180. package/src/handlers/_shared/getPagesUpdateDestination.js +0 -8
  181. package/src/handlers/article_revisions/ArticleRevisionsHandler.js +0 -57
  182. package/src/handlers/article_revisions/CancelSchedulesHandler.js +0 -26
  183. package/src/handlers/article_revisions/CodeHandler.js +0 -75
  184. package/src/handlers/article_revisions/GeneralHandler.js +0 -77
  185. package/src/handlers/article_revisions/MetaHandler.js +0 -75
  186. package/src/handlers/article_revisions/TagHandler.js +0 -83
  187. package/src/handlers/article_revisions/UnlocksHandler.js +0 -24
  188. package/src/handlers/article_revisions/VisualHandler.js +0 -75
  189. package/src/handlers/articles/ArticlesAPIHandler.js +0 -15
  190. package/src/handlers/articles/ArticlesHandler.js +0 -126
  191. package/src/handlers/articles/ChangeHandler.js +0 -22
  192. package/src/handlers/articles/ClonesHandler.js +0 -19
  193. package/src/handlers/articles/DeletesHandler.js +0 -72
  194. package/src/handlers/articles/ExportsHandler.js +0 -35
  195. package/src/handlers/articles/HistoryHandler.js +0 -31
  196. package/src/handlers/articles/TranslationsHandler.js +0 -231
  197. package/src/handlers/articles/URLsHandler.js +0 -83
  198. package/src/handlers/event_revisions/CancelSchedulesHandler.js +0 -26
  199. package/src/handlers/event_revisions/CodeHandler.js +0 -73
  200. package/src/handlers/event_revisions/EventRevisionsHandler.js +0 -55
  201. package/src/handlers/event_revisions/GeneralHandler.js +0 -75
  202. package/src/handlers/event_revisions/LocksHandler.js +0 -65
  203. package/src/handlers/event_revisions/MetaHandler.js +0 -73
  204. package/src/handlers/event_revisions/PublishesHandler.js +0 -112
  205. package/src/handlers/event_revisions/RevertsHandler.js +0 -26
  206. package/src/handlers/event_revisions/TagHandler.js +0 -80
  207. package/src/handlers/event_revisions/UnlocksHandler.js +0 -24
  208. package/src/handlers/event_revisions/VisualHandler.js +0 -73
  209. package/src/handlers/event_revisions/WidgetHandler.js +0 -41
  210. package/src/handlers/events/ChangeHandler.js +0 -22
  211. package/src/handlers/events/ClonesHandler.js +0 -19
  212. package/src/handlers/events/DeletesHandler.js +0 -72
  213. package/src/handlers/events/EventsAPIHandler.js +0 -15
  214. package/src/handlers/events/EventsHandler.js +0 -128
  215. package/src/handlers/events/ExportsHandler.js +0 -35
  216. package/src/handlers/events/HistoryHandler.js +0 -31
  217. package/src/handlers/events/TranslationsHandler.js +0 -233
  218. package/src/handlers/events/URLsHandler.js +0 -81
  219. package/src/handlers/page_revisions/CancelSchedulesHandler.js +0 -26
  220. package/src/handlers/page_revisions/CodeHandler.js +0 -59
  221. package/src/handlers/page_revisions/GeneralHandler.js +0 -61
  222. package/src/handlers/page_revisions/LocksHandler.js +0 -69
  223. package/src/handlers/page_revisions/MetaHandler.js +0 -59
  224. package/src/handlers/page_revisions/PageRevisionsHandler.js +0 -55
  225. package/src/handlers/page_revisions/PublishesHandler.js +0 -112
  226. package/src/handlers/page_revisions/RevertsHandler.js +0 -26
  227. package/src/handlers/page_revisions/UnlocksHandler.js +0 -22
  228. package/src/handlers/page_revisions/VisualHandler.js +0 -60
  229. package/src/handlers/page_revisions/WidgetHandler.js +0 -41
  230. package/src/handlers/pages/ClonesHandler.js +0 -19
  231. package/src/handlers/pages/DeletesHandler.js +0 -68
  232. package/src/handlers/pages/HistoryHandler.js +0 -31
  233. package/src/handlers/pages/URLsHandler.js +0 -77
  234. package/src/tests/handlers/article_revisions/ArticleRevisionsHandler.test/create.test.js +0 -87
  235. package/src/tests/handlers/article_revisions/CodesHandler.test/edit_form.test.js +0 -56
  236. package/src/tests/handlers/article_revisions/GeneralHandler.test/edit_form.test.js +0 -59
  237. package/src/tests/handlers/article_revisions/LocksHandler.test/create.test.js +0 -142
  238. package/src/tests/handlers/article_revisions/LocksHandler.test/create_form.test.js +0 -55
  239. package/src/tests/handlers/article_revisions/MetaHandler.test/edit_form.test.js +0 -56
  240. package/src/tests/handlers/article_revisions/PublishesHandler.test/create_form.test.js +0 -48
  241. package/src/tests/handlers/article_revisions/RevertsHandler.test/create.test.js +0 -86
  242. package/src/tests/handlers/article_revisions/TagHandler.test/edit_form.test.js +0 -72
  243. package/src/tests/handlers/article_revisions/VisualHandler.test.test/edit_form.test.js +0 -56
  244. package/src/tests/handlers/article_revisions/VisualHandler.test.test/update.test.js +0 -146
  245. package/src/tests/handlers/article_revisions/WidgetHandler.test/show.test.js +0 -46
  246. package/src/tests/handlers/article_revisions/WidgetHandler.test/update.test.js +0 -103
  247. package/src/tests/handlers/articles/ArticlesAPIHandler.test/index.test.js +0 -43
  248. package/src/tests/handlers/articles/ArticlesHandler.test/create.test.js +0 -172
  249. package/src/tests/handlers/articles/ArticlesHandler.test/create_form.test.js +0 -44
  250. package/src/tests/handlers/articles/ArticlesHandler.test/index.test.js +0 -73
  251. package/src/tests/handlers/articles/ArticlesHandler.test/show.test.js +0 -120
  252. package/src/tests/handlers/articles/ChangeHandler.test/show.test.js +0 -59
  253. package/src/tests/handlers/articles/ClonesHandler.test/create.test.js +0 -57
  254. package/src/tests/handlers/articles/DeletesHandler.test/create_form.test.js +0 -60
  255. package/src/tests/handlers/articles/TranslationHandler.test/create.test.js +0 -297
  256. package/src/tests/handlers/articles/TranslationHandler.test/create_form.test.js +0 -71
  257. package/src/tests/handlers/articles/TranslationHandler.test/index.test.js +0 -91
  258. package/src/tests/handlers/articles/URLsHandler.test/create_form.test.js +0 -55
  259. package/src/tests/handlers/event_revisions/CancelScheduledHandler.test/create.test.js +0 -90
  260. package/src/tests/handlers/event_revisions/CodesHandler.test/edit_form.test.js +0 -60
  261. package/src/tests/handlers/event_revisions/CodesHandler.test/update.test.js +0 -171
  262. package/src/tests/handlers/event_revisions/EventRevisionsHandler.test/create.test.js +0 -87
  263. package/src/tests/handlers/event_revisions/EventRevisionsHandler.test/destroy.test.js +0 -57
  264. package/src/tests/handlers/event_revisions/GeneralHandler.test/edit_form.test.js +0 -63
  265. package/src/tests/handlers/event_revisions/GeneralHandler.test/update.test.js +0 -172
  266. package/src/tests/handlers/event_revisions/MetaHandler.test/edit_form.test.js +0 -60
  267. package/src/tests/handlers/event_revisions/MetaHandler.test/update.test.js +0 -173
  268. package/src/tests/handlers/event_revisions/PublishesHandler.test/create.test.js +0 -333
  269. package/src/tests/handlers/event_revisions/PublishesHandler.test/create_form.test.js +0 -48
  270. package/src/tests/handlers/event_revisions/RevertsHandler.test/create.test.js +0 -83
  271. package/src/tests/handlers/event_revisions/TagHandler.test/update.test.js +0 -163
  272. package/src/tests/handlers/event_revisions/UnlocksHandler.test/create.test.js +0 -84
  273. package/src/tests/handlers/event_revisions/VisualHandler.test.test/edit_form.test.js +0 -60
  274. package/src/tests/handlers/event_revisions/VisualHandler.test.test/update.test.js +0 -156
  275. package/src/tests/handlers/events/ChangeHandler.test/show.test.js +0 -59
  276. package/src/tests/handlers/events/ClonesHandler.test/create.test.js +0 -57
  277. package/src/tests/handlers/events/DeletesHandler.test/create.test.js +0 -115
  278. package/src/tests/handlers/events/DeletesHandler.test/create_form.test.js +0 -60
  279. package/src/tests/handlers/events/EventsAPIHandler.test/index.test.js +0 -39
  280. package/src/tests/handlers/events/EventsHandler.test/create.test.js +0 -172
  281. package/src/tests/handlers/events/EventsHandler.test/show.test.js +0 -120
  282. package/src/tests/handlers/events/EventsHistoryHandler.test/index.test.js +0 -87
  283. package/src/tests/handlers/events/ExportsHandler.test/index.test.js +0 -212
  284. package/src/tests/handlers/events/TranslationHandler.test/create.test.js +0 -303
  285. package/src/tests/handlers/events/TranslationHandler.test/create_form.test.js +0 -71
  286. package/src/tests/handlers/events/TranslationHandler.test/index.test.js +0 -91
  287. package/src/tests/handlers/events/URLsHandler.test/create.test.js +0 -160
  288. package/src/tests/handlers/events/URLsHandler.test/create_form.test.js +0 -55
  289. package/src/tests/handlers/page_revisions/CancelScheduledHandler.test/create.test.js +0 -86
  290. package/src/tests/handlers/page_revisions/CodesHandler.test/update.test.js +0 -204
  291. package/src/tests/handlers/page_revisions/GeneralHandler.test/edit_form.test.js +0 -54
  292. package/src/tests/handlers/page_revisions/GeneralHandler.test/update.test.js +0 -219
  293. package/src/tests/handlers/page_revisions/LocksHandler.test/create.test.js +0 -138
  294. package/src/tests/handlers/page_revisions/LocksHandler.test/create_form.test.js +0 -55
  295. package/src/tests/handlers/page_revisions/MetaHandler.test/update.test.js +0 -211
  296. package/src/tests/handlers/page_revisions/PageRevisionsHandler.test/create.test.js +0 -85
  297. package/src/tests/handlers/page_revisions/PageRevisionsHandler.test/destroy.test.js +0 -57
  298. package/src/tests/handlers/page_revisions/PublishesHandler.test/create.test.js +0 -333
  299. package/src/tests/handlers/page_revisions/RevertsHandler.test/create.test.js +0 -83
  300. package/src/tests/handlers/page_revisions/TagHandler.test/edit_form.test.js +0 -100
  301. package/src/tests/handlers/page_revisions/TagHandler.test/update.test.js +0 -223
  302. package/src/tests/handlers/page_revisions/UnlocksHandler.test/create.test.js +0 -80
  303. package/src/tests/handlers/page_revisions/VisualHandler.test.test/update.test.js +0 -183
  304. package/src/tests/handlers/page_revisions/WidgetHandler.test/show.test.js +0 -46
  305. package/src/tests/handlers/page_revisions/WidgetHandler.test/update.test.js +0 -103
  306. package/src/tests/handlers/pages/ChangeHandler.test/show.test.js +0 -59
  307. package/src/tests/handlers/pages/ConesHandler.test/create.test.js +0 -57
  308. package/src/tests/handlers/pages/DeletesHandler.test/create.test.js +0 -115
  309. package/src/tests/handlers/pages/DeletesHandler.test/create_form.test.js +0 -60
  310. package/src/tests/handlers/pages/ExportsHandler.test/index.test.js +0 -212
  311. package/src/tests/handlers/pages/PagesAPIHandler.test/index.test.js +0 -39
  312. package/src/tests/handlers/pages/PagesHandler.test/create_form.test.js +0 -41
  313. package/src/tests/handlers/pages/PagesHandler.test/index.test.js +0 -69
  314. package/src/tests/handlers/pages/PagesHandler.test/show.test.js +0 -118
  315. package/src/tests/handlers/pages/PagesHistoryHandler.test/index.test.js +0 -87
  316. package/src/tests/handlers/pages/TranslationHandler.test/create.test.js +0 -290
  317. package/src/tests/handlers/pages/TranslationHandler.test/create_form.test.js +0 -71
  318. package/src/tests/handlers/pages/TranslationHandler.test/index.test.js +0 -87
  319. package/src/tests/handlers/pages/URLsHandler.test/create.test.js +0 -160
  320. package/src/tests/handlers/pages/URLsHandler.test/create_form.test.js +0 -58
@@ -1,28 +1,28 @@
1
- import PublishesHandler from "../../../../handlers/article_revisions/PublishesHandler";
2
- import ArticleRevisions from "../../../../cloud/ArticleRevisions";
3
- import Articles from "../../../../cloud/Articles";
1
+ import PublishesHandler from "../../../../handlers/resource_revisions/PublishesHandler";
2
+ import ResourceRevisions from "../../../../cloud/ResourceRevisions";
3
+ import Resources from "../../../../cloud/Resources";
4
4
 
5
5
  import Factory from "../../../support/factory";
6
6
 
7
7
  function buildCtx(revision, resourceParams) {
8
8
  return {
9
9
  client: {
10
- articleRevisions: new ArticleRevisions(() => ({}), "token"),
11
- articles: new Articles(() => ({}), "token"),
10
+ resourceRevisions: new ResourceRevisions(() => ({}), "token"),
11
+ resources: new Resources(() => ({}), "token"),
12
12
  },
13
13
  params: { parent_id: revision.id },
14
14
  resourceParams,
15
15
  locale: "en",
16
16
  resourceConfig: {
17
- articleType: "article",
18
- articleTypePlural: "articles",
17
+ resourceType: "article",
18
+ resourceTypePlural: "articles",
19
19
  },
20
20
  };
21
21
  }
22
22
 
23
- describe("Publish article revision", () => {
23
+ describe("Publish resource revision", () => {
24
24
  test("create successful for publishing", async () => {
25
- const revision = Factory.build("article_revision");
25
+ const revision = Factory.build("resource_revision");
26
26
  const publishing = {
27
27
  title: "A new revision!",
28
28
  description: "Nice!",
@@ -32,11 +32,9 @@ describe("Publish article revision", () => {
32
32
  type: "now",
33
33
  };
34
34
 
35
- const ctx = buildCtx(revision, {
36
- publishing,
37
- });
35
+ const ctx = buildCtx(revision, { publishing });
38
36
 
39
- const updatedArticle = Factory.build("article", {
37
+ const updatedResource = Factory.build("resource", {
40
38
  id: revision.originalId,
41
39
  settings: {
42
40
  credentials: {
@@ -47,16 +45,16 @@ describe("Publish article revision", () => {
47
45
  });
48
46
 
49
47
  const mockFind = jest
50
- .spyOn(ctx.client.articleRevisions, "find")
48
+ .spyOn(ctx.client.resourceRevisions, "find")
51
49
  .mockImplementation(() => revision);
52
50
 
53
51
  const mockPublish = jest
54
- .spyOn(ctx.client.articleRevisions, "publish")
55
- .mockImplementation(() => ({ article: updatedArticle, errors: null }));
52
+ .spyOn(ctx.client.resourceRevisions, "publish")
53
+ .mockImplementation(() => ({ resource: updatedResource, errors: null }));
56
54
 
57
55
  const result = await PublishesHandler.create(ctx);
58
56
 
59
- expect(mockFind).toHaveBeenCalledWith(revision.id, "en");
57
+ expect(mockFind).toHaveBeenCalledWith(revision.id, "en", "article");
60
58
  expect(mockPublish).toHaveBeenCalledWith(
61
59
  revision.id,
62
60
  "en",
@@ -73,16 +71,17 @@ describe("Publish article revision", () => {
73
71
  password: publishing.password,
74
72
  },
75
73
  }),
76
- }
74
+ },
75
+ "article"
77
76
  );
78
77
 
79
78
  expect(result).toEqual({
80
- redirect: `/en/articles/${updatedArticle.id}`,
79
+ redirect: `/en/articles/${revision.originalId}`,
81
80
  });
82
81
  });
83
82
 
84
83
  test("create failed for publishing", async () => {
85
- const revision = Factory.build("article_revision");
84
+ const revision = Factory.build("resource_revision");
86
85
  const publishing = {
87
86
  title: "A new revision!",
88
87
  description: "Nice!",
@@ -90,24 +89,22 @@ describe("Publish article revision", () => {
90
89
  type: "now",
91
90
  };
92
91
 
93
- const ctx = buildCtx(revision, {
94
- publishing,
95
- });
92
+ const ctx = buildCtx(revision, { publishing });
96
93
 
97
94
  const mockFind = jest
98
- .spyOn(ctx.client.articleRevisions, "find")
95
+ .spyOn(ctx.client.resourceRevisions, "find")
99
96
  .mockImplementation(() => revision);
100
97
 
101
98
  const mockPublish = jest
102
- .spyOn(ctx.client.articleRevisions, "publish")
99
+ .spyOn(ctx.client.resourceRevisions, "publish")
103
100
  .mockImplementation(() => ({
104
- article: null,
101
+ resource: null,
105
102
  errors: [{ key: "url", message: "Oops" }],
106
103
  }));
107
104
 
108
105
  const result = await PublishesHandler.create(ctx);
109
106
 
110
- expect(mockFind).toHaveBeenCalledWith(revision.id, "en");
107
+ expect(mockFind).toHaveBeenCalledWith(revision.id, "en", "article");
111
108
  expect(mockPublish).toHaveBeenCalledWith(
112
109
  revision.id,
113
110
  "en",
@@ -117,7 +114,8 @@ describe("Publish article revision", () => {
117
114
  },
118
115
  {
119
116
  visibility: publishing.visibility,
120
- }
117
+ },
118
+ "article"
121
119
  );
122
120
 
123
121
  expect(result).toEqual({
@@ -132,19 +130,16 @@ describe("Publish article revision", () => {
132
130
  password: publishing.password,
133
131
  type: publishing.type,
134
132
  },
135
- visibilityOptions: ctx.client.articles.visibilityOptions(),
136
- errors: {
137
- url: "Oops",
138
- },
139
- articleErrors: null,
133
+ visibilityOptions: ctx.client.resources.visibilityOptions(),
134
+ errors: { url: "Oops" },
135
+ resourceErrors: null,
140
136
  _translations: [],
141
137
  },
142
138
  });
143
139
  });
144
140
 
145
141
  test("create successful for scheduling", async () => {
146
- const revision = Factory.build("article_revision");
147
- const schedule = Factory.build("revision_schedule");
142
+ const revision = Factory.build("resource_revision");
148
143
  const publishing = {
149
144
  mergeAt: "2024-12-20T20:20",
150
145
  title: "A new revision!",
@@ -155,27 +150,25 @@ describe("Publish article revision", () => {
155
150
  type: "later",
156
151
  };
157
152
 
158
- const ctx = buildCtx(revision, {
159
- publishing,
160
- });
153
+ const ctx = buildCtx(revision, { publishing });
161
154
 
162
- const updatedRevision = { ...revision, schedule: { ...schedule } };
155
+ const updatedRevision = { ...revision };
163
156
 
164
157
  const mockFind = jest
165
- .spyOn(ctx.client.articleRevisions, "find")
158
+ .spyOn(ctx.client.resourceRevisions, "find")
166
159
  .mockImplementation(() => revision);
167
160
 
168
161
  const mockSchedule = jest
169
- .spyOn(ctx.client.articleRevisions, "schedule")
162
+ .spyOn(ctx.client.resourceRevisions, "schedule")
170
163
  .mockImplementation(() => ({
171
164
  revision: updatedRevision,
172
165
  errors: null,
173
- articleErrors: null,
166
+ resourceErrors: null,
174
167
  }));
175
168
 
176
169
  const result = await PublishesHandler.create(ctx);
177
170
 
178
- expect(mockFind).toHaveBeenCalledWith(revision.id, "en");
171
+ expect(mockFind).toHaveBeenCalledWith(revision.id, "en", "article");
179
172
  expect(mockSchedule).toHaveBeenCalledWith(
180
173
  revision.id,
181
174
  "en",
@@ -193,7 +186,8 @@ describe("Publish article revision", () => {
193
186
  password: publishing.password,
194
187
  },
195
188
  }),
196
- }
189
+ },
190
+ "article"
197
191
  );
198
192
 
199
193
  expect(result).toEqual({
@@ -201,8 +195,8 @@ describe("Publish article revision", () => {
201
195
  });
202
196
  });
203
197
 
204
- test("create failed for scheduling - articleErrors", async () => {
205
- const revision = Factory.build("article_revision");
198
+ test("create failed for scheduling - resourceErrors", async () => {
199
+ const revision = Factory.build("resource_revision");
206
200
  const publishing = {
207
201
  mergeAt: "2024-12-20T20:20",
208
202
  title: "A new revision!",
@@ -211,25 +205,23 @@ describe("Publish article revision", () => {
211
205
  type: "later",
212
206
  };
213
207
 
214
- const ctx = buildCtx(revision, {
215
- publishing,
216
- });
208
+ const ctx = buildCtx(revision, { publishing });
217
209
 
218
210
  const mockFind = jest
219
- .spyOn(ctx.client.articleRevisions, "find")
211
+ .spyOn(ctx.client.resourceRevisions, "find")
220
212
  .mockImplementation(() => revision);
221
213
 
222
214
  const mockSchedule = jest
223
- .spyOn(ctx.client.articleRevisions, "schedule")
215
+ .spyOn(ctx.client.resourceRevisions, "schedule")
224
216
  .mockImplementation(() => ({
225
217
  revision: null,
226
- articleErrors: [{ key: "slug", message: "Oops" }],
218
+ resourceErrors: [{ key: "slug", message: "Oops" }],
227
219
  errors: null,
228
220
  }));
229
221
 
230
222
  const result = await PublishesHandler.create(ctx);
231
223
 
232
- expect(mockFind).toHaveBeenCalledWith(revision.id, "en");
224
+ expect(mockFind).toHaveBeenCalledWith(revision.id, "en", "article");
233
225
  expect(mockSchedule).toHaveBeenCalledWith(
234
226
  revision.id,
235
227
  "en",
@@ -240,7 +232,8 @@ describe("Publish article revision", () => {
240
232
  },
241
233
  {
242
234
  visibility: publishing.visibility,
243
- }
235
+ },
236
+ "article"
244
237
  );
245
238
 
246
239
  expect(result).toEqual({
@@ -256,10 +249,8 @@ describe("Publish article revision", () => {
256
249
  password: publishing.password,
257
250
  type: publishing.type,
258
251
  },
259
- visibilityOptions: ctx.client.articles.visibilityOptions(),
260
- articleErrors: {
261
- slug: "Oops",
262
- },
252
+ visibilityOptions: ctx.client.resources.visibilityOptions(),
253
+ resourceErrors: { slug: "Oops" },
263
254
  errors: null,
264
255
  _translations: [],
265
256
  },
@@ -267,7 +258,7 @@ describe("Publish article revision", () => {
267
258
  });
268
259
 
269
260
  test("create failed for scheduling - errors", async () => {
270
- const revision = Factory.build("article_revision");
261
+ const revision = Factory.build("resource_revision");
271
262
  const publishing = {
272
263
  mergeAt: "2024-12-20T20:20",
273
264
  title: "A new revision!",
@@ -276,25 +267,23 @@ describe("Publish article revision", () => {
276
267
  type: "later",
277
268
  };
278
269
 
279
- const ctx = buildCtx(revision, {
280
- publishing,
281
- });
270
+ const ctx = buildCtx(revision, { publishing });
282
271
 
283
272
  const mockFind = jest
284
- .spyOn(ctx.client.articleRevisions, "find")
273
+ .spyOn(ctx.client.resourceRevisions, "find")
285
274
  .mockImplementation(() => revision);
286
275
 
287
276
  const mockSchedule = jest
288
- .spyOn(ctx.client.articleRevisions, "schedule")
277
+ .spyOn(ctx.client.resourceRevisions, "schedule")
289
278
  .mockImplementation(() => ({
290
279
  revision: null,
291
280
  errors: [{ key: "slug", message: "Oops" }],
292
- articleErrors: null,
281
+ resourceErrors: null,
293
282
  }));
294
283
 
295
284
  const result = await PublishesHandler.create(ctx);
296
285
 
297
- expect(mockFind).toHaveBeenCalledWith(revision.id, "en");
286
+ expect(mockFind).toHaveBeenCalledWith(revision.id, "en", "article");
298
287
  expect(mockSchedule).toHaveBeenCalledWith(
299
288
  revision.id,
300
289
  "en",
@@ -305,7 +294,8 @@ describe("Publish article revision", () => {
305
294
  },
306
295
  {
307
296
  visibility: publishing.visibility,
308
- }
297
+ },
298
+ "article"
309
299
  );
310
300
 
311
301
  expect(result).toEqual({
@@ -321,11 +311,9 @@ describe("Publish article revision", () => {
321
311
  password: publishing.password,
322
312
  type: publishing.type,
323
313
  },
324
- visibilityOptions: ctx.client.articles.visibilityOptions(),
325
- errors: {
326
- slug: "Oops",
327
- },
328
- articleErrors: null,
314
+ visibilityOptions: ctx.client.resources.visibilityOptions(),
315
+ errors: { slug: "Oops" },
316
+ resourceErrors: null,
329
317
  _translations: [],
330
318
  },
331
319
  });
@@ -1,31 +1,35 @@
1
- import PublishesHandler from "../../../../handlers/page_revisions/PublishesHandler";
2
- import PageRevisions from "../../../../cloud/PageRevisions";
3
- import Pages from "../../../../cloud/Pages";
1
+ import PublishesHandler from "../../../../handlers/resource_revisions/PublishesHandler";
2
+ import ResourceRevisions from "../../../../cloud/ResourceRevisions";
3
+ import Resources from "../../../../cloud/Resources";
4
4
 
5
5
  import Factory from "../../../support/factory";
6
6
 
7
7
  function buildCtx(revision) {
8
8
  return {
9
9
  client: {
10
- pageRevisions: new PageRevisions(() => ({}), "token"),
11
- pages: new Pages(() => ({}), "token"),
10
+ resourceRevisions: new ResourceRevisions(() => ({}), "token"),
11
+ resources: new Resources(() => ({}), "token"),
12
12
  },
13
13
  params: { parent_id: revision.id },
14
14
  locale: "en",
15
+ resourceConfig: {
16
+ resourceType: "article",
17
+ resourceTypePlural: "articles",
18
+ },
15
19
  };
16
20
  }
17
21
 
18
- describe("Publish page revision", () => {
22
+ describe("Publish resource revision", () => {
19
23
  test("create_form", async () => {
20
- const revision = Factory.build("page_revision");
24
+ const revision = Factory.build("resource_revision");
21
25
  const ctx = buildCtx(revision);
22
26
  const mockFind = jest
23
- .spyOn(ctx.client.pageRevisions, "find")
27
+ .spyOn(ctx.client.resourceRevisions, "find")
24
28
  .mockImplementation(() => revision);
25
29
 
26
30
  const result = await PublishesHandler.create_form(ctx);
27
31
 
28
- expect(mockFind).toHaveBeenCalledWith(revision.id, "en");
32
+ expect(mockFind).toHaveBeenCalledWith(revision.id, "en", "article");
29
33
 
30
34
  expect(result).toEqual({
31
35
  assigns: {
@@ -39,7 +43,7 @@ describe("Publish page revision", () => {
39
43
  password: revision.settings?.credentials?.password,
40
44
  type: "now",
41
45
  },
42
- visibilityOptions: ctx.client.pages.visibilityOptions(),
46
+ visibilityOptions: ctx.client.resources.visibilityOptions(),
43
47
  errors: {},
44
48
  _translations: [],
45
49
  },
@@ -0,0 +1,87 @@
1
+ import ResourceRevisions from "../../../../cloud/ResourceRevisions";
2
+ import Resources from "../../../../cloud/Resources";
3
+ import ResourceRevisionsHandler from "../../../../handlers/resource_revisions/ResourceRevisionsHandler";
4
+ import Factory from "../../../support/factory";
5
+
6
+ function buildCtx(resourceID) {
7
+ return {
8
+ client: {
9
+ resourceRevisions: new ResourceRevisions(() => ({}), "token"),
10
+ resources: new Resources(() => ({}), "token"),
11
+ },
12
+ params: { parent_id: resourceID },
13
+ locale: "en",
14
+ resourceConfig: {
15
+ resourceType: "article",
16
+ resourceTypePlural: "articles",
17
+ },
18
+ maxOpenRevisions: 1,
19
+ };
20
+ }
21
+
22
+ describe("Resource revisions", () => {
23
+ test("create successful", async () => {
24
+ const resource = Factory.build("resource", { id: 1, revisionsCount: 0 });
25
+ const revision = Factory.build("resource_revision", { originalId: 1 });
26
+ const ctx = buildCtx(resource.id);
27
+
28
+ jest.spyOn(ctx.client.resources, "find").mockResolvedValue(resource);
29
+
30
+ jest
31
+ .spyOn(ctx.client.resourceRevisions, "create")
32
+ .mockResolvedValue({ revision, errors: null, resourceErrors: null });
33
+
34
+ const result = await ResourceRevisionsHandler.create(ctx);
35
+
36
+ expect(result).toEqual({
37
+ redirect: `/en/articles/${resource.id}`,
38
+ });
39
+ });
40
+
41
+ test("create failed when there is an opened revision for the resource", async () => {
42
+ const resource = Factory.build("resource", { id: 1, revisionsCount: 2 });
43
+ const ctx = buildCtx(resource.id);
44
+
45
+ jest.spyOn(ctx.client.resources, "find").mockResolvedValue(resource);
46
+
47
+ const result = await ResourceRevisionsHandler.create(ctx);
48
+
49
+ expect(result).toEqual({
50
+ redirect: `/en/articles/${resource.id}?revisions_count_error=1`,
51
+ });
52
+ });
53
+
54
+ test("create failed with errors", async () => {
55
+ const resource = Factory.build("resource", { id: 1, revisionsCount: 0 });
56
+ const errors = [{ key: "generalError", message: "something went wrong" }];
57
+ const ctx = buildCtx(resource.id);
58
+
59
+ jest.spyOn(ctx.client.resources, "find").mockResolvedValue(resource);
60
+
61
+ jest
62
+ .spyOn(ctx.client.resourceRevisions, "create")
63
+ .mockResolvedValue({ revision: null, errors, resourceErrors: null });
64
+
65
+ await expect(ResourceRevisionsHandler.create(ctx)).rejects.toThrow(
66
+ `Failed to start revision: ${JSON.stringify(errors)}`
67
+ );
68
+ });
69
+
70
+ test("create failed with resource errors", async () => {
71
+ const resource = Factory.build("resource", { id: 1, revisionsCount: 0 });
72
+ const errors = [{ key: "generalError", message: "something went wrong" }];
73
+ const ctx = buildCtx(resource.id);
74
+
75
+ jest.spyOn(ctx.client.resources, "find").mockResolvedValue(resource);
76
+
77
+ jest.spyOn(ctx.client.resourceRevisions, "create").mockResolvedValue({
78
+ revision: null,
79
+ errors: null,
80
+ resourceErrors: errors,
81
+ });
82
+
83
+ await expect(ResourceRevisionsHandler.create(ctx)).rejects.toThrow(
84
+ `Failed to start revision: ${JSON.stringify(errors)}`
85
+ );
86
+ });
87
+ });
@@ -1,34 +1,34 @@
1
- import ArticleRevisionsHandler from "../../../../handlers/article_revisions/ArticleRevisionsHandler";
2
- import ArticleRevisions from "../../../../cloud/ArticleRevisions";
1
+ import ResourceRevisionsHandler from "../../../../handlers/resource_revisions/ResourceRevisionsHandler";
2
+ import ResourceRevisions from "../../../../cloud/ResourceRevisions";
3
3
 
4
4
  import Factory from "../../../support/factory";
5
5
 
6
6
  function buildCtx(revisionID) {
7
7
  return {
8
8
  client: {
9
- articleRevisions: new ArticleRevisions(() => ({}), "token"),
9
+ resourceRevisions: new ResourceRevisions(() => ({}), "token"),
10
10
  },
11
11
  params: { id: revisionID },
12
12
  locale: "en",
13
13
  resourceConfig: {
14
- articleType: "article",
15
- articleTypePlural: "articles",
14
+ resourceType: "article",
15
+ resourceTypePlural: "articles",
16
16
  },
17
17
  };
18
18
  }
19
19
 
20
- describe("Article revisions", () => {
20
+ describe("Resource revisions", () => {
21
21
  test("destroy successful", async () => {
22
- const revision = Factory.build("article_revision");
22
+ const revision = Factory.build("resource_revision");
23
23
  const ctx = buildCtx(1);
24
24
 
25
25
  const mockDelete = jest
26
- .spyOn(ctx.client.articleRevisions, "delete")
26
+ .spyOn(ctx.client.resourceRevisions, "delete")
27
27
  .mockImplementation(() => ({ revision, errors: null }));
28
28
 
29
- const result = await ArticleRevisionsHandler.destroy(ctx);
29
+ const result = await ResourceRevisionsHandler.destroy(ctx);
30
30
 
31
- expect(mockDelete).toHaveBeenCalledWith(1, "en");
31
+ expect(mockDelete).toHaveBeenCalledWith(1, "en", "article");
32
32
 
33
33
  expect(result).toEqual({
34
34
  headers: {
@@ -43,15 +43,15 @@ describe("Article revisions", () => {
43
43
  const errors = [{ key: "generalError", message: "something went wrong" }];
44
44
 
45
45
  const mockDelete = jest
46
- .spyOn(ctx.client.articleRevisions, "delete")
46
+ .spyOn(ctx.client.resourceRevisions, "delete")
47
47
  .mockImplementation(() => ({ revision: null, errors }));
48
48
 
49
49
  expect(async () => {
50
- await ArticleRevisionsHandler.destroy(ctx);
50
+ await ResourceRevisionsHandler.destroy(ctx);
51
51
  }).rejects.toThrow(
52
52
  `Failed to delete revision#${1}: ${JSON.stringify(errors)}`
53
53
  );
54
54
 
55
- expect(mockDelete).toHaveBeenCalledWith(1, "en");
55
+ expect(mockDelete).toHaveBeenCalledWith(1, "en", "article");
56
56
  });
57
57
  });
@@ -0,0 +1,83 @@
1
+ import RevertsHandler from "../../../../handlers/resource_revisions/RevertsHandler";
2
+ import ResourceRevisions from "../../../../cloud/ResourceRevisions";
3
+
4
+ function buildCtx(resourceID, version) {
5
+ return {
6
+ client: {
7
+ resourceRevisions: new ResourceRevisions(() => ({}), "token"),
8
+ },
9
+ params: { parent_id: resourceID },
10
+ resourceParams: { version },
11
+ locale: "en",
12
+ resourceConfig: {
13
+ resourceType: "article",
14
+ resourceTypePlural: "articles",
15
+ },
16
+ };
17
+ }
18
+
19
+ describe("Resource revision revert", () => {
20
+ test("create successful", async () => {
21
+ const resourceId = 42;
22
+ const version = 2;
23
+ const ctx = buildCtx(resourceId, version);
24
+
25
+ const mockRevert = jest
26
+ .spyOn(ctx.client.resourceRevisions, "revert")
27
+ .mockImplementation(() => ({
28
+ revision: {},
29
+ errors: null,
30
+ resourceErrors: null,
31
+ }));
32
+
33
+ const result = await RevertsHandler.create(ctx);
34
+
35
+ expect(mockRevert).toHaveBeenCalledWith(resourceId, version, "en", "article");
36
+
37
+ expect(result).toEqual({
38
+ redirect: `/en/articles/${resourceId}`,
39
+ });
40
+ });
41
+
42
+ test("create failed with errors", async () => {
43
+ const resourceId = 42;
44
+ const version = 2;
45
+ const ctx = buildCtx(resourceId, version);
46
+ const errors = [{ key: "generalError", message: "Some error" }];
47
+
48
+ const mockRevert = jest
49
+ .spyOn(ctx.client.resourceRevisions, "revert")
50
+ .mockImplementation(() => ({
51
+ revision: null,
52
+ errors,
53
+ resourceErrors: null,
54
+ }));
55
+
56
+ expect(async () => {
57
+ await RevertsHandler.create(ctx);
58
+ }).rejects.toThrow(`Failed to start revision: ${JSON.stringify(errors)}`);
59
+
60
+ expect(mockRevert).toHaveBeenCalledWith(resourceId, version, "en", "article");
61
+ });
62
+
63
+ test("create failed with resource errors", async () => {
64
+ const resourceId = 42;
65
+ const version = 2;
66
+ const ctx = buildCtx(resourceId, version);
67
+ const errors = [{ key: "generalError", message: "Some error" }];
68
+
69
+ const mockRevert = jest
70
+ .spyOn(ctx.client.resourceRevisions, "revert")
71
+ .mockImplementation(() => ({
72
+ revision: null,
73
+ errors: null,
74
+ resourceErrors: errors,
75
+ }));
76
+
77
+ expect(async () => {
78
+ await RevertsHandler.create(ctx);
79
+ }).rejects.toThrow(`Failed to start revision: ${JSON.stringify(errors)}`);
80
+
81
+ expect(mockRevert).toHaveBeenCalledWith(resourceId, version, "en", "article");
82
+ });
83
+ });