@raketa-cloud/admin 0.0.30 → 0.0.33

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 (173) hide show
  1. package/package.json +1 -1
  2. package/src/Adapter.js +3 -6
  3. package/src/HonoAdapter.js +3 -3
  4. package/src/Logger.js +21 -0
  5. package/src/cloud/ArticleRevisions.js +30 -1
  6. package/src/cloud/Articles.js +22 -9
  7. package/src/cloud/EventRevisions.js +40 -1
  8. package/src/cloud/Events.js +32 -11
  9. package/src/cloud/PageRevisions.js +20 -1
  10. package/src/cloud/Pages.js +13 -7
  11. package/src/cloud/RaketaClient.js +76 -0
  12. package/src/handlers/article_revisions/CodeHandler.js +18 -34
  13. package/src/handlers/article_revisions/GeneralHandler.js +19 -38
  14. package/src/handlers/article_revisions/LocksHandler.js +11 -6
  15. package/src/handlers/article_revisions/MetaHandler.js +18 -34
  16. package/src/handlers/article_revisions/TagHandler.js +23 -29
  17. package/src/handlers/article_revisions/UnlocksHandler.js +1 -1
  18. package/src/handlers/article_revisions/VisualHandler.js +18 -28
  19. package/src/handlers/articles/ArticlesHandler.js +11 -25
  20. package/src/handlers/articles/DeletesHandler.js +4 -4
  21. package/src/handlers/articles/TranslationsHandler.js +30 -56
  22. package/src/handlers/articles/URLsHandler.js +7 -7
  23. package/src/handlers/event_revisions/CodeHandler.js +22 -36
  24. package/src/handlers/event_revisions/GeneralHandler.js +22 -42
  25. package/src/handlers/event_revisions/LocksHandler.js +7 -6
  26. package/src/handlers/event_revisions/MetaHandler.js +22 -36
  27. package/src/handlers/event_revisions/TagHandler.js +25 -29
  28. package/src/handlers/event_revisions/VisualHandler.js +22 -30
  29. package/src/handlers/events/DeletesHandler.js +4 -4
  30. package/src/handlers/events/EventsHandler.js +13 -27
  31. package/src/handlers/events/TranslationsHandler.js +35 -58
  32. package/src/handlers/events/URLsHandler.js +7 -7
  33. package/src/handlers/page_revisions/CodeHandler.js +8 -34
  34. package/src/handlers/page_revisions/GeneralHandler.js +10 -37
  35. package/src/handlers/page_revisions/LocksHandler.js +11 -6
  36. package/src/handlers/page_revisions/MetaHandler.js +8 -34
  37. package/src/handlers/page_revisions/TagHandler.js +16 -27
  38. package/src/handlers/page_revisions/VisualHandler.js +8 -28
  39. package/src/handlers/pages/DeletesHandler.js +4 -4
  40. package/src/handlers/pages/PagesHandler.js +7 -24
  41. package/src/handlers/pages/TranslationsHandler.js +23 -45
  42. package/src/handlers/pages/URLsHandler.js +7 -7
  43. package/src/helpers/FormBuilder.js +1 -2
  44. package/src/helpers/Inflector.js +6 -0
  45. package/src/index.js +2 -0
  46. package/src/styles/application.css +7 -7
  47. package/src/tests/handlers/RedirectsHandler.test/create.test.js +1 -1
  48. package/src/tests/handlers/RedirectsHandler.test/create_form.test.js +1 -1
  49. package/src/tests/handlers/RedirectsHandler.test/destroy.test.js +1 -1
  50. package/src/tests/handlers/RedirectsHandler.test/edit_form.test.js +1 -1
  51. package/src/tests/handlers/RedirectsHandler.test/index.test.js +1 -1
  52. package/src/tests/handlers/RedirectsHandler.test/show.test.js +1 -1
  53. package/src/tests/handlers/RedirectsHandler.test/update.test.js +1 -1
  54. package/src/tests/handlers/article_revisions/ArticleRevisionsHandler.test/create.test.js +1 -1
  55. package/src/tests/handlers/article_revisions/ArticleRevisionsHandler.test/destroy.test.js +1 -1
  56. package/src/tests/handlers/article_revisions/CodesHandler.test/edit_form.test.js +7 -7
  57. package/src/tests/handlers/article_revisions/CodesHandler.test/update.test.js +37 -19
  58. package/src/tests/handlers/article_revisions/GeneralHandler.test/edit_form.test.js +5 -11
  59. package/src/tests/handlers/article_revisions/GeneralHandler.test/update.test.js +36 -28
  60. package/src/tests/handlers/article_revisions/MetaHandler.test/edit_form.test.js +7 -8
  61. package/src/tests/handlers/article_revisions/MetaHandler.test/update.test.js +41 -25
  62. package/src/tests/handlers/article_revisions/PublishesHandler.test/create.test.js +2 -2
  63. package/src/tests/handlers/article_revisions/PublishesHandler.test/create_form.test.js +2 -2
  64. package/src/tests/handlers/article_revisions/RevertsHandler.test/create.test.js +1 -1
  65. package/src/tests/handlers/article_revisions/TagHandler.test/edit_form.test.js +10 -7
  66. package/src/tests/handlers/article_revisions/TagHandler.test/update.test.js +20 -14
  67. package/src/tests/handlers/article_revisions/VisualHandler.test.test/edit_form.test.js +7 -6
  68. package/src/tests/handlers/article_revisions/VisualHandler.test.test/update.test.js +30 -19
  69. package/src/tests/handlers/article_revisions/WidgetHandler.test/show.test.js +2 -2
  70. package/src/tests/handlers/article_revisions/WidgetHandler.test/update.test.js +2 -2
  71. package/src/tests/handlers/articles/ArticlesHandler.test/create.test.js +53 -29
  72. package/src/tests/handlers/articles/ArticlesHandler.test/create_form.test.js +3 -3
  73. package/src/tests/handlers/articles/ArticlesHandler.test/index.test.js +2 -2
  74. package/src/tests/handlers/articles/ArticlesHandler.test/show.test.js +3 -3
  75. package/src/tests/handlers/articles/ClonesHandler.test/create.test.js +1 -1
  76. package/src/tests/handlers/articles/DeletesHandler.test/create.test.js +4 -4
  77. package/src/tests/handlers/articles/DeletesHandler.test/create_form.test.js +2 -2
  78. package/src/tests/handlers/articles/URLsHandler.test/create.test.js +6 -6
  79. package/src/tests/handlers/articles/URLsHandler.test/create_form.test.js +2 -2
  80. package/src/tests/handlers/event_revisions/CodesHandler.test/edit_form.test.js +11 -7
  81. package/src/tests/handlers/event_revisions/CodesHandler.test/update.test.js +43 -19
  82. package/src/tests/handlers/event_revisions/EventRevisionsHandler.test/create.test.js +1 -1
  83. package/src/tests/handlers/event_revisions/EventRevisionsHandler.test/destroy.test.js +1 -1
  84. package/src/tests/handlers/event_revisions/GeneralHandler.test/edit_form.test.js +7 -13
  85. package/src/tests/handlers/event_revisions/GeneralHandler.test/update.test.js +42 -32
  86. package/src/tests/handlers/event_revisions/MetaHandler.test/edit_form.test.js +11 -8
  87. package/src/tests/handlers/event_revisions/MetaHandler.test/update.test.js +47 -25
  88. package/src/tests/handlers/event_revisions/PublishesHandler.test/create.test.js +2 -2
  89. package/src/tests/handlers/event_revisions/PublishesHandler.test/create_form.test.js +2 -2
  90. package/src/tests/handlers/event_revisions/RevertsHandler.test/create.test.js +1 -1
  91. package/src/tests/handlers/event_revisions/TagHandler.test/edit_form.test.js +14 -7
  92. package/src/tests/handlers/event_revisions/TagHandler.test/update.test.js +26 -14
  93. package/src/tests/handlers/event_revisions/VisualHandler.test.test/edit_form.test.js +11 -6
  94. package/src/tests/handlers/event_revisions/VisualHandler.test.test/update.test.js +36 -19
  95. package/src/tests/handlers/event_revisions/WidgetHandler.test/show.test.js +2 -2
  96. package/src/tests/handlers/event_revisions/WidgetHandler.test/update.test.js +2 -2
  97. package/src/tests/handlers/events/ClonesHandler.test/create.test.js +1 -1
  98. package/src/tests/handlers/events/DeletesHandler.test/create.test.js +4 -4
  99. package/src/tests/handlers/events/DeletesHandler.test/create_form.test.js +2 -2
  100. package/src/tests/handlers/events/EventsHandler.test/create.test.js +53 -37
  101. package/src/tests/handlers/events/EventsHandler.test/create_form.test.js +3 -3
  102. package/src/tests/handlers/events/EventsHandler.test/index.test.js +2 -2
  103. package/src/tests/handlers/events/EventsHandler.test/show.test.js +3 -3
  104. package/src/tests/handlers/events/URLsHandler.test/create.test.js +6 -6
  105. package/src/tests/handlers/events/URLsHandler.test/create_form.test.js +2 -2
  106. package/src/tests/handlers/page_revisions/CodesHandler.test/edit_form.test.js +10 -8
  107. package/src/tests/handlers/page_revisions/CodesHandler.test/update.test.js +30 -17
  108. package/src/tests/handlers/page_revisions/GeneralHandler.test/edit_form.test.js +3 -11
  109. package/src/tests/handlers/page_revisions/GeneralHandler.test/update.test.js +38 -22
  110. package/src/tests/handlers/page_revisions/MetaHandler.test/edit_form.test.js +2 -8
  111. package/src/tests/handlers/page_revisions/MetaHandler.test/update.test.js +37 -23
  112. package/src/tests/handlers/page_revisions/PageRevisionsHandler.test/create.test.js +1 -1
  113. package/src/tests/handlers/page_revisions/PageRevisionsHandler.test/destroy.test.js +1 -1
  114. package/src/tests/handlers/page_revisions/PublishesHandler.test/create.test.js +2 -2
  115. package/src/tests/handlers/page_revisions/PublishesHandler.test/create_form.test.js +2 -2
  116. package/src/tests/handlers/page_revisions/RevertsHandler.test/create.test.js +1 -1
  117. package/src/tests/handlers/page_revisions/TagHandler.test/edit_form.test.js +3 -7
  118. package/src/tests/handlers/page_revisions/TagHandler.test/update.test.js +11 -12
  119. package/src/tests/handlers/page_revisions/VisualHandler.test.test/edit_form.test.js +10 -7
  120. package/src/tests/handlers/page_revisions/VisualHandler.test.test/update.test.js +23 -17
  121. package/src/tests/handlers/page_revisions/WidgetHandler.test/show.test.js +2 -2
  122. package/src/tests/handlers/page_revisions/WidgetHandler.test/update.test.js +2 -2
  123. package/src/tests/handlers/pages/ConesHandler.test/create.test.js +1 -1
  124. package/src/tests/handlers/pages/DeletesHandler.test/create.test.js +4 -4
  125. package/src/tests/handlers/pages/DeletesHandler.test/create_form.test.js +2 -2
  126. package/src/tests/handlers/pages/PagesHandler.test/create.test.js +50 -27
  127. package/src/tests/handlers/pages/PagesHandler.test/create_form.test.js +3 -3
  128. package/src/tests/handlers/pages/PagesHandler.test/index.test.js +2 -2
  129. package/src/tests/handlers/pages/PagesHandler.test/show.test.js +3 -3
  130. package/src/tests/handlers/pages/URLsHandler.test/create.test.js +6 -6
  131. package/src/tests/handlers/pages/URLsHandler.test/create_form.test.js +2 -2
  132. package/src/utils.js +12 -0
  133. package/src/views/_shared/_credentials_input.ejs +31 -0
  134. package/src/views/_shared/_layout_input.ejs +5 -0
  135. package/src/views/article_revisions/_nav.ejs +5 -5
  136. package/src/views/article_revisions/codes/edit_form.ejs +17 -6
  137. package/src/views/article_revisions/general/edit_form.ejs +10 -36
  138. package/src/views/article_revisions/locks/create_form.ejs +4 -4
  139. package/src/views/article_revisions/meta/edit_form.ejs +7 -7
  140. package/src/views/article_revisions/tags/edit_form.ejs +5 -5
  141. package/src/views/article_revisions/visuals/edit_form.ejs +5 -9
  142. package/src/views/articles/_form.ejs +6 -37
  143. package/src/views/articles/deletes/create_form.ejs +9 -9
  144. package/src/views/articles/index.ejs +1 -1
  145. package/src/views/articles/translations/_form.ejs +14 -46
  146. package/src/views/articles/urls/create_form.ejs +5 -5
  147. package/src/views/event_revisions/_nav.ejs +5 -5
  148. package/src/views/event_revisions/codes/edit_form.ejs +17 -6
  149. package/src/views/event_revisions/general/edit_form.ejs +12 -38
  150. package/src/views/event_revisions/locks/create_form.ejs +4 -4
  151. package/src/views/event_revisions/meta/edit_form.ejs +7 -7
  152. package/src/views/event_revisions/tags/edit_form.ejs +5 -5
  153. package/src/views/event_revisions/visuals/edit_form.ejs +5 -9
  154. package/src/views/events/_form.ejs +8 -39
  155. package/src/views/events/deletes/create_form.ejs +9 -9
  156. package/src/views/events/index.ejs +1 -1
  157. package/src/views/events/translations/_form.ejs +16 -47
  158. package/src/views/events/urls/create_form.ejs +5 -5
  159. package/src/views/layouts/application.ejs +57 -35
  160. package/src/views/page_revisions/_nav.ejs +5 -5
  161. package/src/views/page_revisions/codes/edit_form.ejs +17 -6
  162. package/src/views/page_revisions/general/edit_form.ejs +8 -35
  163. package/src/views/page_revisions/locks/create_form.ejs +4 -4
  164. package/src/views/page_revisions/meta/edit_form.ejs +7 -7
  165. package/src/views/page_revisions/publishes/_form.ejs +9 -9
  166. package/src/views/page_revisions/tags/edit_form.ejs +5 -5
  167. package/src/views/page_revisions/visuals/edit_form.ejs +5 -9
  168. package/src/views/pages/_form.ejs +5 -36
  169. package/src/views/pages/deletes/create_form.ejs +9 -9
  170. package/src/views/pages/index.ejs +1 -1
  171. package/src/views/pages/translations/_form.ejs +13 -45
  172. package/src/views/pages/urls/create_form.ejs +5 -5
  173. package/tailwind.config.js +1 -0
@@ -3,29 +3,17 @@ const create_form = async (ctx) => {
3
3
  const target_locate_tags = await ctx.client.tags.all(target_locale);
4
4
 
5
5
  const { parent_id } = ctx.params;
6
- const blueprint_resource = await ctx.client.pages.find(parent_id, ctx.locale);
6
+ const blueprint = await ctx.client.pages.find(parent_id, ctx.locale);
7
7
 
8
- const translation = {
9
- title: blueprint_resource.title,
10
- slug: blueprint_resource.slug,
11
- visibility: blueprint_resource.visibility,
12
- layout: blueprint_resource.settings.layout,
13
- meta_title: blueprint_resource.settings.meta.title,
14
- meta_description: blueprint_resource.settings.meta.description,
15
- meta_image: blueprint_resource.settings.meta?.image || {},
16
- username: blueprint_resource.settings.credentials?.user || "",
17
- password: blueprint_resource.settings.credentials?.password || "",
18
- tags: [],
19
- // categories: blueprint_resource.categories, # TODO: this will be added later?
20
- };
8
+ const resource = structuredClone(blueprint);
9
+ resource.tags = [];
21
10
 
22
11
  return {
23
12
  assigns: {
24
- resource: blueprint_resource,
25
- translation: translation,
13
+ resource,
14
+ blueprint,
26
15
  targetLocale: target_locale,
27
16
  tags: target_locate_tags.list,
28
- blueprint_tags: blueprint_resource.tags,
29
17
  errors: {},
30
18
  visibilityOptions: ctx.client.pages.visibilityOptions(),
31
19
  _translations: [],
@@ -35,37 +23,27 @@ const create_form = async (ctx) => {
35
23
 
36
24
  const create = async (ctx) => {
37
25
  const { parent_id } = ctx.params;
38
- const blueprint_resource = await ctx.client.pages.find(parent_id, ctx.locale);
26
+ const blueprint = await ctx.client.pages.find(parent_id, ctx.locale);
39
27
 
40
28
  const { target_locale } = ctx.resourceParams;
41
- const translation = { ...ctx.resourceParams.translation };
29
+ const params = { ...ctx.resourceParams.resource };
42
30
 
43
- translation.meta_image = JSON.parse(translation.meta_image || "{}");
31
+ const resource = ctx.client.pages.deepMerge(
32
+ {
33
+ settings: {
34
+ ...blueprint.settings,
35
+ },
36
+ widgets: blueprint.widgets,
37
+ categories: blueprint.categories.map((category) => category.id),
38
+ tags: [],
39
+ },
40
+ params
41
+ );
44
42
 
45
43
  const { errors } = await ctx.client.pages.translate(
46
44
  parent_id,
47
45
  target_locale,
48
- {
49
- title: translation.title,
50
- slug: translation.slug,
51
- visibility: translation.visibility,
52
- settings: {
53
- ...blueprint_resource.settings,
54
- layout: translation.layout,
55
- meta: {
56
- title: translation.meta_title,
57
- description: translation.meta_description,
58
- image: translation.meta_image,
59
- },
60
- credentials: {
61
- user: translation.username || "",
62
- password: translation.password || "",
63
- },
64
- },
65
- widgets: blueprint_resource.widgets,
66
- tags: translation.tags || [],
67
- categories: blueprint_resource.categories.map((category) => category.id),
68
- }
46
+ resource
69
47
  );
70
48
 
71
49
  if (errors) {
@@ -73,11 +51,11 @@ const create = async (ctx) => {
73
51
 
74
52
  return {
75
53
  assigns: {
76
- resource: blueprint_resource,
77
- translation: translation,
78
- targetLocale: translation.target_locate,
54
+ resource,
55
+ blueprint,
56
+ targetLocale: target_locale,
79
57
  tags: tags.list,
80
- errors: {},
58
+ errors: { resource: ctx.client.pages.formatErrors(errors) },
81
59
  visibilityOptions: ctx.client.pages.visibilityOptions(),
82
60
  _translations: [],
83
61
  },
@@ -10,7 +10,7 @@ const create_form = async (ctx) => {
10
10
 
11
11
  return {
12
12
  assigns: {
13
- change: {
13
+ resource: {
14
14
  id: page.id,
15
15
  slug: page.slug,
16
16
  redirect: null,
@@ -23,7 +23,7 @@ const create_form = async (ctx) => {
23
23
 
24
24
  const create = async (ctx) => {
25
25
  const { parent_id } = ctx.params;
26
- const change = ctx.resourceParams.change;
26
+ const resource = ctx.resourceParams.resource;
27
27
 
28
28
  const page = await ctx.client.pages.find(parent_id, ctx.locale);
29
29
 
@@ -35,10 +35,10 @@ const create = async (ctx) => {
35
35
 
36
36
  let redirectParams = null;
37
37
 
38
- if (change.redirect) {
38
+ if (resource.redirect) {
39
39
  redirectParams = {
40
40
  url: ctx.remoteConfig.resourcePath(page, page.pageType.slug, ctx.locale),
41
- destination: change.slug,
41
+ destination: resource.slug,
42
42
  httpResponseCode: 301,
43
43
  note: `Created with changed URL for a ${ctx.resourceConfig.pageType}`,
44
44
  };
@@ -46,7 +46,7 @@ const create = async (ctx) => {
46
46
 
47
47
  const { errors } = await ctx.client.pages.updateSlug(
48
48
  parent_id,
49
- change.slug,
49
+ resource.slug,
50
50
  ctx.locale,
51
51
  redirectParams
52
52
  );
@@ -54,8 +54,8 @@ const create = async (ctx) => {
54
54
  if (errors) {
55
55
  return {
56
56
  assigns: {
57
- change: { ...change, id: page.id },
58
- errors: { change: ctx.client.pages.formatErrors(errors, "redirect") },
57
+ resource: { ...resource, id: page.id },
58
+ errors: { resource: ctx.client.pages.formatErrors(errors, "redirect") },
59
59
  _translations: [],
60
60
  },
61
61
  };
@@ -109,8 +109,7 @@ export default class FormBuilder extends HTMLBuilder {
109
109
  }
110
110
 
111
111
  __getID(name) {
112
- const field = this.__getFieldName(name);
113
- return `f_${field}`;
112
+ return `f_${name.replaceAll(".", "_")}`;
114
113
  }
115
114
 
116
115
  __getDefaultLabel(name) {
@@ -0,0 +1,6 @@
1
+ const Inflector = {
2
+ capitalize: (str) => str[0].toUpperCase() + str.slice(1),
3
+ };
4
+
5
+ export default Inflector;
6
+
package/src/index.js CHANGED
@@ -88,3 +88,5 @@ export { default as EventURLsHandler } from "./handlers/events/URLsHandler";
88
88
  export { default as EventsHandler } from "./handlers/events/EventsHandler";
89
89
 
90
90
  export { default as Factory } from "./tests/support/factory";
91
+ export { default as Logger } from "./Logger";
92
+
@@ -6,17 +6,12 @@
6
6
  --background: 255, 255, 255;
7
7
  --foreground: 0, 0, 0;
8
8
 
9
- /* --primary: 110, 110, 178; */
10
- /* --primary: 0, 0, 0; */
11
- /* --primary: 15, 82, 186; */
12
- /* --primary: 0, 67, 206; */
13
9
  --primary: 91, 95, 198;
14
10
 
15
- /* --primary-dark: 88, 88, 142; */
16
- /* --primary-dark: 0, 0, 0; */
17
11
  --primary-dark: var(--primary);
18
12
  }
19
13
 
14
+ /*
20
15
  @media (prefers-color-scheme: dark) {
21
16
  :root {
22
17
  --foreground: 255, 255, 255;
@@ -24,12 +19,14 @@
24
19
  --primary: 130, 133, 212;
25
20
  }
26
21
  }
22
+ */
27
23
 
28
24
  body {
29
25
  @apply text-raketa-foreground bg-raketa-background;
30
26
  }
31
27
 
32
28
  @layer components {
29
+
33
30
  /* Utils */
34
31
  .dbg {
35
32
  @apply outline-1 outline-dashed outline-red-500;
@@ -278,7 +275,7 @@ body {
278
275
  .pagination {
279
276
  @apply text-center py-8 text-raketa-foreground/50;
280
277
 
281
- & > div {
278
+ &>div {
282
279
  @apply inline-flex items-center gap-4;
283
280
  }
284
281
 
@@ -521,6 +518,7 @@ body {
521
518
  0% {
522
519
  transform: scale(1);
523
520
  }
521
+
524
522
  100% {
525
523
  transform: scale(1.5);
526
524
  }
@@ -534,9 +532,11 @@ body {
534
532
  0% {
535
533
  transform: translatey(0px);
536
534
  }
535
+
537
536
  50% {
538
537
  transform: translatey(-40px);
539
538
  }
539
+
540
540
  100% {
541
541
  transform: translatey(0px);
542
542
  }
@@ -6,7 +6,7 @@ import Factory from "../../support/factory";
6
6
  function buildCtx(redirect) {
7
7
  return {
8
8
  client: {
9
- redirects: new Redirects({}, "token"),
9
+ redirects: new Redirects(() => ({}), "token"),
10
10
  },
11
11
  resourceParams: {
12
12
  redirect: {
@@ -4,7 +4,7 @@ import Redirects from "../../../cloud/Redirects";
4
4
  function buildCtx() {
5
5
  return {
6
6
  client: {
7
- redirects: new Redirects({}, "token"),
7
+ redirects: new Redirects(() => ({}), "token"),
8
8
  },
9
9
  params: { id: 1 },
10
10
  };
@@ -6,7 +6,7 @@ import Factory from "../../support/factory";
6
6
  function buildCtx() {
7
7
  return {
8
8
  client: {
9
- redirects: new Redirects({}, "token"),
9
+ redirects: new Redirects(() => ({}), "token"),
10
10
  },
11
11
  params: { id: 1 },
12
12
  locale: "en",
@@ -6,7 +6,7 @@ import Factory from "../../support/factory";
6
6
  function buildCtx() {
7
7
  return {
8
8
  client: {
9
- redirects: new Redirects({}, "token"),
9
+ redirects: new Redirects(() => ({}), "token"),
10
10
  },
11
11
  params: { id: 1 },
12
12
  };
@@ -7,7 +7,7 @@ describe("Redirects", () => {
7
7
  function buildCtx() {
8
8
  return {
9
9
  client: {
10
- redirects: new Redirects({}, "token"),
10
+ redirects: new Redirects(() => ({}), "token"),
11
11
  },
12
12
  query: { foo: "bar" },
13
13
  req: {
@@ -6,7 +6,7 @@ import Factory from "../../support/factory";
6
6
  function buildCtx() {
7
7
  return {
8
8
  client: {
9
- redirects: new Redirects({}, "token"),
9
+ redirects: new Redirects(() => ({}), "token"),
10
10
  },
11
11
  params: { id: 1 },
12
12
  };
@@ -6,7 +6,7 @@ import Factory from "../../support/factory";
6
6
  function buildCtx(redirect) {
7
7
  return {
8
8
  client: {
9
- redirects: new Redirects({}, "token"),
9
+ redirects: new Redirects(() => ({}), "token"),
10
10
  },
11
11
  params: { id: redirect.id },
12
12
  resourceParams: {
@@ -6,7 +6,7 @@ import Factory from "../../../support/factory";
6
6
  function buildCtx(articleID) {
7
7
  return {
8
8
  client: {
9
- articleRevisions: new ArticleRevisions({}, "token"),
9
+ articleRevisions: new ArticleRevisions(() => ({}), "token"),
10
10
  },
11
11
  params: { parent_id: articleID },
12
12
  locale: "en",
@@ -6,7 +6,7 @@ import Factory from "../../../support/factory";
6
6
  function buildCtx(revisionID) {
7
7
  return {
8
8
  client: {
9
- articleRevisions: new ArticleRevisions({}, "token"),
9
+ articleRevisions: new ArticleRevisions(() => ({}), "token"),
10
10
  },
11
11
  params: { id: revisionID },
12
12
  locale: "en",
@@ -6,7 +6,7 @@ import Factory from "../../../support/factory";
6
6
  function buildCtx(revision) {
7
7
  return {
8
8
  client: {
9
- articleRevisions: new ArticleRevisions({}, "token"),
9
+ articleRevisions: new ArticleRevisions(() => ({}), "token"),
10
10
  },
11
11
  params: { parent_id: revision.id },
12
12
  locale: "en",
@@ -15,7 +15,9 @@ function buildCtx(revision) {
15
15
 
16
16
  describe("Article revision code settings", () => {
17
17
  test("edit_form when a revision exists", async () => {
18
- const revision = Factory.build("article_revision");
18
+ const revision = Factory.build("article_revision", {
19
+ publishAt: "2024-10-10T07:05:00Z",
20
+ });
19
21
  const ctx = buildCtx(revision);
20
22
 
21
23
  const mockFind = jest
@@ -28,11 +30,9 @@ describe("Article revision code settings", () => {
28
30
 
29
31
  expect(result).toEqual({
30
32
  assigns: {
31
- code_settings: {
32
- id: revision.id,
33
- originalId: revision.originalId,
34
- scripts: JSON.stringify([]),
35
- structured_data: JSON.stringify({}),
33
+ resource: {
34
+ ...revision,
35
+ publishAt: "2024-10-10T07:05:00",
36
36
  },
37
37
  errors: {},
38
38
  _translations: [],
@@ -6,11 +6,11 @@ import Factory from "../../../support/factory";
6
6
  function buildCtx(revision, updateSettings) {
7
7
  return {
8
8
  client: {
9
- articleRevisions: new ArticleRevisions({}, "token"),
9
+ articleRevisions: new ArticleRevisions(() => ({}), "token"),
10
10
  },
11
11
  params: { parent_id: revision.id },
12
12
  resourceParams: {
13
- code_settings: updateSettings,
13
+ resource: updateSettings,
14
14
  },
15
15
  locale: "en",
16
16
  resourceConfig: {
@@ -22,11 +22,17 @@ function buildCtx(revision, updateSettings) {
22
22
 
23
23
  describe("Article revision code settings", () => {
24
24
  test("update successful", async () => {
25
- const revision = Factory.build("article_revision");
25
+ const revision = Factory.build("article_revision", {
26
+ publishAt: "2024-10-10T07:05:00Z",
27
+ });
26
28
 
27
29
  const updateSettings = {
28
- scripts: JSON.stringify([{ type: "bla" }]),
29
- structured_data: JSON.stringify({ type: "article" }),
30
+ settings: {
31
+ codes: {
32
+ scripts: JSON.stringify([{ type: "bla" }]),
33
+ structured_data: JSON.stringify({ type: "article" }),
34
+ },
35
+ },
30
36
  };
31
37
 
32
38
  const ctx = buildCtx(revision, updateSettings);
@@ -50,16 +56,16 @@ describe("Article revision code settings", () => {
50
56
  title: revision.title,
51
57
  visibility: revision.visibility,
52
58
  publishAt: revision.publishAt,
53
- widgets: JSON.stringify(revision.widgets),
59
+ widgets: revision.widgets,
54
60
  tags: revision.tags.map((t) => t.id),
55
61
  categories: revision.categories.map((c) => c.id),
56
- settings: JSON.stringify({
62
+ settings: {
57
63
  ...revision.settings,
58
64
  codes: {
59
65
  scripts: [{ type: "bla" }],
60
66
  structured_data: { type: "article" },
61
67
  },
62
- }),
68
+ },
63
69
  });
64
70
 
65
71
  expect(result).toEqual({
@@ -68,11 +74,17 @@ describe("Article revision code settings", () => {
68
74
  });
69
75
 
70
76
  test("update failed", async () => {
71
- const revision = Factory.build("article_revision");
77
+ const revision = Factory.build("article_revision", {
78
+ publishAt: "2024-10-10T07:05:00Z",
79
+ });
72
80
 
73
81
  const updateSettings = {
74
- scripts: JSON.stringify([{ type: "bla" }]),
75
- structured_data: JSON.stringify({ type: "article" }),
82
+ settings: {
83
+ codes: {
84
+ scripts: JSON.stringify([{ type: "bla" }]),
85
+ structured_data: JSON.stringify({ type: "article" }),
86
+ },
87
+ },
76
88
  };
77
89
 
78
90
  const ctx = buildCtx(revision, updateSettings);
@@ -96,27 +108,33 @@ describe("Article revision code settings", () => {
96
108
  title: revision.title,
97
109
  visibility: revision.visibility,
98
110
  publishAt: revision.publishAt,
99
- widgets: JSON.stringify(revision.widgets),
111
+ widgets: revision.widgets,
100
112
  tags: revision.tags.map((t) => t.id),
101
113
  categories: revision.categories.map((c) => c.id),
102
- settings: JSON.stringify({
114
+ settings: {
103
115
  ...revision.settings,
104
116
  codes: {
105
117
  scripts: [{ type: "bla" }],
106
118
  structured_data: { type: "article" },
107
119
  },
108
- }),
120
+ },
109
121
  });
110
122
 
111
123
  expect(result).toEqual({
112
124
  assigns: {
113
- code_settings: {
114
- ...updateSettings,
115
- id: revision.id,
116
- originalId: revision.originalId,
125
+ resource: {
126
+ ...revision,
127
+ publishAt: "2024-10-10T07:05:00",
128
+ settings: {
129
+ ...revision.settings,
130
+ codes: {
131
+ scripts: [{ type: "bla" }],
132
+ structured_data: { type: "article" },
133
+ },
134
+ },
117
135
  },
118
136
  errors: {
119
- code_settings: { generalError: "some error" },
137
+ resource: { generalError: "some error" },
120
138
  },
121
139
  _translations: [],
122
140
  },
@@ -7,8 +7,8 @@ import Factory from "../../../support/factory";
7
7
  function buildCtx(revision) {
8
8
  return {
9
9
  client: {
10
- articleRevisions: new ArticleRevisions({}, "token"),
11
- articles: new Articles({}, "token"),
10
+ articleRevisions: new ArticleRevisions(() => ({}), "token"),
11
+ articles: new Articles(() => ({}), "token"),
12
12
  },
13
13
  params: { parent_id: revision.id },
14
14
  locale: "en",
@@ -32,15 +32,9 @@ describe("Article revision genereal settings", () => {
32
32
 
33
33
  expect(result).toEqual({
34
34
  assigns: {
35
- general_settings: {
36
- id: revision.id,
37
- originalId: revision.originalId,
38
- title: revision.title,
39
- slug: revision.slug,
40
- visibility: revision.visibility,
41
- publish_at: "2024-08-30T16:05:00",
42
- username: revision.settings?.credentials?.user || "",
43
- password: revision.settings?.credentials?.password || "",
35
+ resource: {
36
+ ...revision,
37
+ publishAt: "2024-08-30T16:05:00",
44
38
  },
45
39
  errors: {},
46
40
  visibilityOptions: ctx.client.articles.visibilityOptions(),
@@ -7,12 +7,12 @@ import Factory from "../../../support/factory";
7
7
  function buildCtx(revision, updateSettings) {
8
8
  return {
9
9
  client: {
10
- articleRevisions: new ArticleRevisions({}, "token"),
11
- articles: new Articles({}, "token"),
10
+ articleRevisions: new ArticleRevisions(() => ({}), "token"),
11
+ articles: new Articles(() => ({}), "token"),
12
12
  },
13
13
  params: { parent_id: revision.id },
14
14
  resourceParams: {
15
- general_settings: updateSettings,
15
+ resource: updateSettings,
16
16
  },
17
17
  locale: "en",
18
18
  resourceConfig: {
@@ -30,9 +30,13 @@ describe("Article revision general settings", () => {
30
30
  title: "Updated title",
31
31
  slug: "/updated-url",
32
32
  visibility: "protected",
33
- publish_at: "2024-08-30T19:05",
34
- username: "user",
35
- password: "admin123!@#",
33
+ publishAt: "2024-08-30T19:05",
34
+ settings: {
35
+ credentials: {
36
+ user: "user",
37
+ password: "admin123!@#",
38
+ },
39
+ },
36
40
  };
37
41
 
38
42
  const ctx = buildCtx(revision, updateSettings);
@@ -56,16 +60,13 @@ describe("Article revision general settings", () => {
56
60
  title: updateSettings.title,
57
61
  visibility: updateSettings.visibility,
58
62
  publishAt: "2024-08-30T19:05:00Z",
59
- widgets: JSON.stringify(revision.widgets),
63
+ widgets: revision.widgets,
60
64
  tags: revision.tags.map((t) => t.id),
61
65
  categories: revision.categories.map((c) => c.id),
62
- settings: JSON.stringify({
66
+ settings: {
63
67
  ...revision.settings,
64
- credentials: {
65
- user: updateSettings.username,
66
- password: updateSettings.password,
67
- },
68
- }),
68
+ ...updateSettings.settings,
69
+ },
69
70
  });
70
71
 
71
72
  expect(result).toEqual({
@@ -80,9 +81,13 @@ describe("Article revision general settings", () => {
80
81
  title: "Updated title",
81
82
  slug: "/updated-url",
82
83
  visibility: "protected",
83
- publish_at: "2024-08-30T19:05",
84
- username: "user",
85
- password: "admin123!@#",
84
+ publishAt: "2024-08-30T19:05",
85
+ settings: {
86
+ credentials: {
87
+ user: "user",
88
+ password: "admin123!@#",
89
+ },
90
+ },
86
91
  };
87
92
 
88
93
  const ctx = buildCtx(revision, updateSettings);
@@ -106,27 +111,30 @@ describe("Article revision general settings", () => {
106
111
  title: updateSettings.title,
107
112
  visibility: updateSettings.visibility,
108
113
  publishAt: "2024-08-30T19:05:00Z",
109
- widgets: JSON.stringify(revision.widgets),
114
+ widgets: revision.widgets,
110
115
  tags: revision.tags.map((t) => t.id),
111
116
  categories: revision.categories.map((c) => c.id),
112
- settings: JSON.stringify({
117
+ settings: {
113
118
  ...revision.settings,
114
- credentials: {
115
- user: updateSettings.username,
116
- password: updateSettings.password,
117
- },
118
- }),
119
+ ...updateSettings.settings,
120
+ },
119
121
  });
120
122
 
121
123
  expect(result).toEqual({
122
124
  assigns: {
123
- general_settings: {
124
- ...updateSettings,
125
- id: revision.id,
126
- originalId: revision.originalId,
125
+ resource: {
126
+ ...revision,
127
+ slug: updateSettings.slug,
128
+ title: updateSettings.title,
129
+ visibility: updateSettings.visibility,
130
+ publishAt: "2024-08-30T19:05:00",
131
+ settings: {
132
+ ...revision.settings,
133
+ ...updateSettings.settings,
134
+ },
127
135
  },
128
136
  errors: {
129
- general_settings: { slug: "has invalid format" },
137
+ resource: { slug: "has invalid format" },
130
138
  },
131
139
  visibilityOptions: ctx.client.articles.visibilityOptions(),
132
140
  _translations: [],
@@ -6,7 +6,7 @@ import Factory from "../../../support/factory";
6
6
  function buildCtx(revision) {
7
7
  return {
8
8
  client: {
9
- articleRevisions: new ArticleRevisions({}, "token"),
9
+ articleRevisions: new ArticleRevisions(() => ({}), "token"),
10
10
  },
11
11
  params: { parent_id: revision.id },
12
12
  locale: "en",
@@ -15,7 +15,9 @@ function buildCtx(revision) {
15
15
 
16
16
  describe("Article revision meta settings", () => {
17
17
  test("edit_form when a revision exists", async () => {
18
- const revision = Factory.build("article_revision");
18
+ const revision = Factory.build("article_revision", {
19
+ publishAt: "2024-10-10T07:05:00Z",
20
+ });
19
21
  const ctx = buildCtx(revision);
20
22
 
21
23
  const mockFind = jest
@@ -28,12 +30,9 @@ describe("Article revision meta settings", () => {
28
30
 
29
31
  expect(result).toEqual({
30
32
  assigns: {
31
- meta_settings: {
32
- id: revision.id,
33
- originalId: revision.originalId,
34
- title: revision.settings.meta.title,
35
- description: revision.settings.meta.description,
36
- image: revision.settings.meta.image,
33
+ resource: {
34
+ ...revision,
35
+ publishAt: "2024-10-10T07:05:00",
37
36
  },
38
37
  errors: {},
39
38
  _translations: [],