@raketa-cloud/admin 0.0.59 → 0.0.64

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 (75) hide show
  1. package/package.json +1 -1
  2. package/src/cloud/Articles.js +3 -42
  3. package/src/cloud/Events.js +3 -29
  4. package/src/cloud/Pages.js +3 -29
  5. package/src/cloud/documents/articlesDocuments.js +11 -14
  6. package/src/cloud/documents/common.js +14 -0
  7. package/src/cloud/documents/eventsDocuments.js +13 -14
  8. package/src/cloud/documents/pagesDocuments.js +10 -14
  9. package/src/handlers/articles/DeletesHandler.js +1 -0
  10. package/src/handlers/articles/URLsHandler.js +1 -0
  11. package/src/handlers/events/DeletesHandler.js +1 -0
  12. package/src/handlers/events/URLsHandler.js +1 -0
  13. package/src/handlers/page_revisions/TagHandler.js +40 -0
  14. package/src/handlers/pages/DeletesHandler.js +1 -0
  15. package/src/handlers/pages/URLsHandler.js +1 -0
  16. package/src/helpers/FormBuilder.js +2 -2
  17. package/src/styles/application.css +4 -0
  18. package/src/tests/handlers/articles/DeletesHandler.test/create_form.test.js +2 -1
  19. package/src/tests/handlers/articles/URLsHandler.test/create_form.test.js +2 -1
  20. package/src/tests/handlers/events/DeletesHandler.test/create_form.test.js +2 -1
  21. package/src/tests/handlers/events/URLsHandler.test/create_form.test.js +2 -1
  22. package/src/tests/handlers/page_revisions/TagHandler.test/edit_form.test.js +38 -3
  23. package/src/tests/handlers/page_revisions/TagHandler.test/update.test.js +39 -3
  24. package/src/tests/handlers/pages/DeletesHandler.test/create.test.js +1 -1
  25. package/src/tests/handlers/pages/DeletesHandler.test/create_form.test.js +1 -0
  26. package/src/tests/handlers/pages/URLsHandler.test/create_form.test.js +1 -0
  27. package/src/views/article_revisions/codes/edit_form.ejs +5 -16
  28. package/src/views/article_revisions/general/_form.ejs +2 -2
  29. package/src/views/article_revisions/general/edit_form.ejs +5 -16
  30. package/src/views/article_revisions/locks/create_form.ejs +5 -3
  31. package/src/views/article_revisions/meta/edit_form.ejs +8 -19
  32. package/src/views/article_revisions/publishes/_form.ejs +19 -36
  33. package/src/views/article_revisions/tags/edit_form.ejs +5 -16
  34. package/src/views/article_revisions/visuals/edit_form.ejs +5 -16
  35. package/src/views/articles/_form.ejs +14 -19
  36. package/src/views/articles/deletes/create_form.ejs +18 -5
  37. package/src/views/articles/index.ejs +1 -19
  38. package/src/views/articles/show.ejs +1 -1
  39. package/src/views/articles/translations/_form.ejs +1 -15
  40. package/src/views/articles/urls/create_form.ejs +10 -5
  41. package/src/views/categories/_form.ejs +1 -15
  42. package/src/views/event_revisions/_nav.ejs +1 -1
  43. package/src/views/event_revisions/codes/edit_form.ejs +5 -16
  44. package/src/views/event_revisions/general/_form.ejs +2 -2
  45. package/src/views/event_revisions/general/edit_form.ejs +5 -16
  46. package/src/views/event_revisions/locks/create_form.ejs +5 -3
  47. package/src/views/event_revisions/meta/edit_form.ejs +8 -19
  48. package/src/views/event_revisions/publishes/_form.ejs +19 -36
  49. package/src/views/event_revisions/tags/edit_form.ejs +5 -16
  50. package/src/views/event_revisions/visuals/edit_form.ejs +5 -16
  51. package/src/views/events/_form.ejs +14 -19
  52. package/src/views/events/deletes/create_form.ejs +18 -5
  53. package/src/views/events/index.ejs +1 -19
  54. package/src/views/events/show.ejs +1 -1
  55. package/src/views/events/translations/_form.ejs +1 -15
  56. package/src/views/events/urls/create_form.ejs +10 -5
  57. package/src/views/page_revisions/_nav.ejs +1 -1
  58. package/src/views/page_revisions/codes/edit_form.ejs +4 -15
  59. package/src/views/page_revisions/general/_form.ejs +1 -1
  60. package/src/views/page_revisions/general/edit_form.ejs +4 -15
  61. package/src/views/page_revisions/locks/create_form.ejs +5 -3
  62. package/src/views/page_revisions/meta/edit_form.ejs +7 -18
  63. package/src/views/page_revisions/publishes/_form.ejs +19 -36
  64. package/src/views/page_revisions/tags/edit_form.ejs +9 -15
  65. package/src/views/page_revisions/visuals/edit_form.ejs +4 -15
  66. package/src/views/pages/_form.ejs +13 -18
  67. package/src/views/pages/deletes/create_form.ejs +17 -4
  68. package/src/views/pages/index.ejs +1 -19
  69. package/src/views/pages/show.ejs +3 -3
  70. package/src/views/pages/translations/create_form.ejs +13 -5
  71. package/src/views/pages/translations/index.ejs +6 -4
  72. package/src/views/pages/urls/create_form.ejs +9 -4
  73. package/src/views/redirects/_form.ejs +5 -19
  74. package/src/views/settings/meta/edit_form.ejs +4 -18
  75. package/src/views/tags/_form.ejs +2 -16
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@raketa-cloud/admin",
3
- "version": "0.0.59",
3
+ "version": "0.0.64",
4
4
  "main": "src/index.js",
5
5
  "scripts": {
6
6
  "dev": "npx tailwindcss -i ./src/styles/application.css -o ../../apps/admin/static/application.css --watch",
@@ -7,7 +7,7 @@ import {
7
7
  DeleteArticleDocument,
8
8
  TranslateArticleDocument,
9
9
  ChangeArticleSlugDocument,
10
- MinimalArticlesDocument,
10
+ MiniArticlesDocument,
11
11
  } from "./documents/articlesDocuments";
12
12
  import { toDateTimeInput, toUTCISO8601String } from "../utils";
13
13
 
@@ -42,19 +42,6 @@ export default class Articles extends RaketaClient {
42
42
  ];
43
43
  }
44
44
 
45
- async minimal(query, locale, articleTypeSlug) {
46
- const vars = this.buildListInput(query, locale);
47
-
48
- const { articles: items } = await this.query(MinimalArticlesDocument, {
49
- input: {
50
- ...vars.input,
51
- filters: { ...vars.input.filters, articleTypeSlug },
52
- },
53
- });
54
-
55
- return items;
56
- }
57
-
58
45
  async find(id, locale) {
59
46
  const { article: item } = await this.query(ArticleByIdDocument, {
60
47
  input: {
@@ -66,36 +53,10 @@ export default class Articles extends RaketaClient {
66
53
  return item;
67
54
  }
68
55
 
69
- async minimalAll(query, locale, articleTypeSlug) {
70
- const vars = this.buildAllInput(query, locale);
71
-
72
- const { articles: items } = await this.query(MinimalArticlesDocument, {
73
- input: {
74
- ...vars.input,
75
- filters: { ...vars.input.filters, articleTypeSlug },
76
- },
77
- });
78
-
79
- return items;
80
- }
81
-
82
- async minimalList(query, locale, articleTypeSlug) {
83
- const vars = this.buildListInput(query, locale);
84
-
85
- const { articles: items } = await this.query(MinimalArticlesDocument, {
86
- input: {
87
- ...vars.input,
88
- filters: { ...vars.input.filters, articleTypeSlug },
89
- },
90
- });
91
-
92
- return items;
93
- }
94
-
95
- async all(query, locale, articleTypeSlug) {
56
+ async listAll(query, locale, articleTypeSlug) {
96
57
  const vars = this.buildAllInput(query, locale);
97
58
 
98
- const { articles: items } = await this.query(ArticlesDocument, {
59
+ const { miniArticles: items } = await this.query(MiniArticlesDocument, {
99
60
  input: {
100
61
  ...vars.input,
101
62
  filters: { ...vars.input.filters, articleTypeSlug },
@@ -7,7 +7,7 @@ import {
7
7
  DeleteEventDocument,
8
8
  TranslateEventDocument,
9
9
  ChangeEventSlugDocument,
10
- MinimalEventsDocument,
10
+ MiniEventsDocument,
11
11
  } from "./documents/eventsDocuments";
12
12
  import { toDateTimeInput, toUTCISO8601String } from "../utils";
13
13
 
@@ -63,36 +63,10 @@ export default class Events extends RaketaClient {
63
63
  return item;
64
64
  }
65
65
 
66
- async minimalAll(query, locale, eventTypeSlug) {
66
+ async listAll(query, locale, eventTypeSlug) {
67
67
  const vars = this.buildAllInput(query, locale);
68
68
 
69
- const { events: items } = await this.query(MinimalEventsDocument, {
70
- input: {
71
- ...vars.input,
72
- filters: { ...vars.input.filters, eventTypeSlug },
73
- },
74
- });
75
-
76
- return items;
77
- }
78
-
79
- async minimalList(query, locale, eventTypeSlug) {
80
- const vars = this.buildListInput(query, locale);
81
-
82
- const { events: items } = await this.query(MinimalEventsDocument, {
83
- input: {
84
- ...vars.input,
85
- filters: { ...vars.input.filters, eventTypeSlug },
86
- },
87
- });
88
-
89
- return items;
90
- }
91
-
92
- async all(query, locale, eventTypeSlug) {
93
- const vars = this.buildAllInput(query, locale);
94
-
95
- const { events: items } = await this.query(EventsDocument, {
69
+ const { miniEvents: items } = await this.query(MiniEventsDocument, {
96
70
  input: {
97
71
  ...vars.input,
98
72
  filters: { ...vars.input.filters, eventTypeSlug },
@@ -7,7 +7,7 @@ import {
7
7
  DeletePageDocument,
8
8
  TranslatePageDocument,
9
9
  ChangePageSlugDocument,
10
- MinimalPagesDocument,
10
+ MiniPagesDocument,
11
11
  } from "./documents/pagesDocuments";
12
12
 
13
13
  export default class Pages extends RaketaClient {
@@ -43,36 +43,10 @@ export default class Pages extends RaketaClient {
43
43
  return item;
44
44
  }
45
45
 
46
- async minimalAll(query, locale, pageTypeSlug) {
46
+ async listAll(query, locale, pageTypeSlug) {
47
47
  const vars = this.buildAllInput(query, locale);
48
48
 
49
- const { pages: items } = await this.query(MinimalPagesDocument, {
50
- input: {
51
- ...vars.input,
52
- filters: { ...vars.input.filters, pageTypeSlug },
53
- },
54
- });
55
-
56
- return items;
57
- }
58
-
59
- async minimalList(query, locale, pageTypeSlug) {
60
- const vars = this.buildListInput(query, locale);
61
-
62
- const { pages: items } = await this.query(MinimalPagesDocument, {
63
- input: {
64
- ...vars.input,
65
- filters: { ...vars.input.filters, pageTypeSlug },
66
- },
67
- });
68
-
69
- return items;
70
- }
71
-
72
- async all(query, locale, pageTypeSlug) {
73
- const vars = this.buildAllInput(query, locale);
74
-
75
- const { pages: items } = await this.query(PagesDocument, {
49
+ const { miniPages: items } = await this.query(MiniPagesDocument, {
76
50
  input: {
77
51
  ...vars.input,
78
52
  filters: { ...vars.input.filters, pageTypeSlug },
@@ -6,6 +6,7 @@ import {
6
6
  paginationFragment,
7
7
  revisionMetaFragment,
8
8
  tagFragment,
9
+ summaryChangeFragment,
9
10
  } from "./common";
10
11
 
11
12
  function minimalArticleFragment() {
@@ -14,6 +15,8 @@ function minimalArticleFragment() {
14
15
  id
15
16
  slug
16
17
  title
18
+ visibility
19
+ publishAt
17
20
  }
18
21
  `;
19
22
  }
@@ -31,6 +34,9 @@ function articleFragment() {
31
34
  originalId
32
35
  translations
33
36
  revisionsCount
37
+ insertedAt
38
+ updatedAt
39
+ changes ${summaryChangeFragment()}
34
40
  tags ${tagFragment()}
35
41
  articleType ${articleTypeFragment()}
36
42
  categories ${categoryFragment()}
@@ -67,24 +73,15 @@ const ArticleByIdDocument = gql`
67
73
  const ArticleChangesDocument = gql`
68
74
  query ArticleChanges($input: IdInput!) {
69
75
  articleChanges(input: $input) {
70
- list {
71
- version
72
- title
73
- description
74
- operator
75
- operatorMeta
76
- source
77
- insertedAt
78
- }
76
+ list ${summaryChangeFragment()}
79
77
  }
80
78
  }
81
79
  `;
82
80
 
83
- const MinimalArticlesDocument = gql`
84
- query Articles($input: ArticlesInput!) {
85
- articles(input: $input) {
81
+ const MiniArticlesDocument = gql`
82
+ query MiniArticles($input: ArticlesInput!) {
83
+ miniArticles(input: $input) {
86
84
  list ${minimalArticleFragment()}
87
- pagination ${paginationFragment()}
88
85
  }
89
86
  }
90
87
  `;
@@ -248,7 +245,7 @@ const UnlockArticleRevisionDocument = gql`
248
245
  export {
249
246
  ArticleByIdDocument,
250
247
  ArticlesDocument,
251
- MinimalArticlesDocument,
248
+ MiniArticlesDocument,
252
249
  CreateArticleDocument,
253
250
  UpdateArticleDocument,
254
251
  UpdateArticleWidgetsDocument,
@@ -102,3 +102,17 @@ export function categoryFragment() {
102
102
  }
103
103
  `;
104
104
  }
105
+
106
+ export function summaryChangeFragment() {
107
+ return gql`
108
+ {
109
+ version
110
+ title
111
+ description
112
+ operator
113
+ operatorMeta
114
+ source
115
+ insertedAt
116
+ }
117
+ `;
118
+ }
@@ -6,6 +6,7 @@ import {
6
6
  paginationFragment,
7
7
  revisionMetaFragment,
8
8
  tagFragment,
9
+ summaryChangeFragment,
9
10
  } from "./common";
10
11
 
11
12
  function minimalEventFragment() {
@@ -14,6 +15,10 @@ function minimalEventFragment() {
14
15
  id
15
16
  slug
16
17
  title
18
+ visibility
19
+ publishAt
20
+ startsAt
21
+ endsAt
17
22
  }
18
23
  `;
19
24
  }
@@ -33,6 +38,9 @@ function eventFragment() {
33
38
  originalId
34
39
  translations
35
40
  revisionsCount
41
+ insertedAt
42
+ updatedAt
43
+ changes ${summaryChangeFragment()}
36
44
  tags ${tagFragment()}
37
45
  eventType ${eventTypeFragment()}
38
46
  categories ${categoryFragment()}
@@ -71,24 +79,15 @@ const EventByIdDocument = gql`
71
79
  const EventChangesDocument = gql`
72
80
  query EventChanges($input: IdInput!) {
73
81
  eventChanges(input: $input) {
74
- list {
75
- version
76
- title
77
- description
78
- operator
79
- operatorMeta
80
- source
81
- insertedAt
82
- }
82
+ list ${summaryChangeFragment()}
83
83
  }
84
84
  }
85
85
  `;
86
86
 
87
- const MinimalEventsDocument = gql`
88
- query MinimalEvents($input: EventsInput!) {
89
- events(input: $input) {
87
+ const MiniEventsDocument = gql`
88
+ query MiniEvents($input: EventsInput!) {
89
+ miniEvents(input: $input) {
90
90
  list ${minimalEventFragment()}
91
- pagination ${paginationFragment()}
92
91
  }
93
92
  }
94
93
  `;
@@ -254,7 +253,7 @@ const UnlockEventRevisionDocument = gql`
254
253
  export {
255
254
  EventByIdDocument,
256
255
  EventsDocument,
257
- MinimalEventsDocument,
256
+ MiniEventsDocument,
258
257
  CreateEventDocument,
259
258
  UpdateEventDocument,
260
259
  UpdateEventWidgetsDocument,
@@ -6,6 +6,7 @@ import {
6
6
  paginationFragment,
7
7
  revisionMetaFragment,
8
8
  tagFragment,
9
+ summaryChangeFragment,
9
10
  } from "./common";
10
11
 
11
12
  function minimalPageFragment() {
@@ -14,6 +15,7 @@ function minimalPageFragment() {
14
15
  id
15
16
  slug
16
17
  title
18
+ visibility
17
19
  }
18
20
  `;
19
21
  }
@@ -30,9 +32,12 @@ function pageFragment() {
30
32
  originalId
31
33
  translations
32
34
  revisionsCount
35
+ insertedAt
36
+ updatedAt
33
37
  tags ${tagFragment()}
34
38
  pageType ${pageTypeFragment()}
35
39
  categories ${categoryFragment()}
40
+ changes ${summaryChangeFragment()}
36
41
  }
37
42
  `;
38
43
  }
@@ -65,24 +70,15 @@ const PageByIdDocument = gql`
65
70
  const PageChangesDocument = gql`
66
71
  query PageChanges($input: IdInput!) {
67
72
  pageChanges(input: $input) {
68
- list {
69
- version
70
- title
71
- description
72
- operator
73
- operatorMeta
74
- source
75
- insertedAt
76
- }
73
+ list ${summaryChangeFragment()}
77
74
  }
78
75
  }
79
76
  `;
80
77
 
81
- const MinimalPagesDocument = gql`
82
- query Pages($input: PagesInput!) {
83
- pages(input: $input) {
78
+ const MiniPagesDocument = gql`
79
+ query MiniPages($input: PagesInput!) {
80
+ miniPages(input: $input) {
84
81
  list ${minimalPageFragment()}
85
- pagination ${paginationFragment()}
86
82
  }
87
83
  }
88
84
  `;
@@ -245,7 +241,7 @@ const UnlockPageRevisionDocument = gql`
245
241
  export {
246
242
  PageByIdDocument,
247
243
  PagesDocument,
248
- MinimalPagesDocument,
244
+ MiniPagesDocument,
249
245
  CreatePageDocument,
250
246
  UpdatePageDocument,
251
247
  UpdatePageWidgetsDocument,
@@ -8,6 +8,7 @@ const create_form = async (ctx) => {
8
8
 
9
9
  return {
10
10
  assigns: {
11
+ article,
11
12
  resource: {
12
13
  id: article.id,
13
14
  redirect: "",
@@ -10,6 +10,7 @@ const create_form = async (ctx) => {
10
10
 
11
11
  return {
12
12
  assigns: {
13
+ article,
13
14
  resource: {
14
15
  id: article.id,
15
16
  slug: article.slug,
@@ -8,6 +8,7 @@ const create_form = async (ctx) => {
8
8
 
9
9
  return {
10
10
  assigns: {
11
+ event,
11
12
  resource: {
12
13
  id: event.id,
13
14
  redirect: "",
@@ -10,6 +10,7 @@ const create_form = async (ctx) => {
10
10
 
11
11
  return {
12
12
  assigns: {
13
+ event,
13
14
  resource: {
14
15
  id: event.id,
15
16
  slug: event.slug,
@@ -1,5 +1,33 @@
1
1
  import { checkboxesToArray } from "../../utils";
2
2
 
3
+ const fetchDefaultLocaleTags = async (ctx, resource) => {
4
+ if (ctx.locale === ctx.defaultLocale) {
5
+ return { defaultLocaleName: "", defaultLocaleTags: [] };
6
+ }
7
+
8
+ const originalPage = await ctx.client.pages.find(
9
+ resource.originalId,
10
+ ctx.locale
11
+ );
12
+
13
+ if (
14
+ Object.keys(originalPage.translations).length === 0 ||
15
+ !originalPage.translations[ctx.defaultLocale]
16
+ ) {
17
+ return { defaultLocaleName: "", defaultLocaleTags: [] };
18
+ }
19
+
20
+ const defaultLocale = ctx.locales[ctx.defaultLocale];
21
+ const defaultLocalePage = await ctx.client.pages.find(
22
+ originalPage.translations[ctx.defaultLocale].id,
23
+ ctx.defaultLocale
24
+ );
25
+
26
+ const defaultLocaleTags = defaultLocalePage?.tags || [];
27
+
28
+ return { defaultLocaleName: defaultLocale.name, defaultLocaleTags };
29
+ };
30
+
3
31
  const edit_form = async (ctx) => {
4
32
  const { parent_id } = ctx.params;
5
33
 
@@ -13,12 +41,19 @@ const edit_form = async (ctx) => {
13
41
 
14
42
  resource.tags = resource.tags.map((t) => t.id);
15
43
 
44
+ const { defaultLocaleName, defaultLocaleTags } = await fetchDefaultLocaleTags(
45
+ ctx,
46
+ resource
47
+ );
48
+
16
49
  return {
17
50
  assigns: {
18
51
  resource,
19
52
  tags: tags.list,
20
53
  errors: {},
21
54
  _translations: [],
55
+ defaultLocaleTags,
56
+ defaultLocaleName,
22
57
  },
23
58
  };
24
59
  };
@@ -46,6 +81,9 @@ const update = async (ctx) => {
46
81
  if (errors) {
47
82
  const tags = await ctx.client.tags.all(ctx.locale);
48
83
 
84
+ const { defaultLocaleName, defaultLocaleTags } =
85
+ await fetchDefaultLocaleTags(ctx, resource);
86
+
49
87
  return {
50
88
  assigns: {
51
89
  resource,
@@ -54,6 +92,8 @@ const update = async (ctx) => {
54
92
  resource: ctx.client.pageRevisions.formatErrors(errors),
55
93
  },
56
94
  _translations: [],
95
+ defaultLocaleTags,
96
+ defaultLocaleName,
57
97
  },
58
98
  };
59
99
  }
@@ -8,6 +8,7 @@ const create_form = async (ctx) => {
8
8
 
9
9
  return {
10
10
  assigns: {
11
+ page,
11
12
  resource: {
12
13
  id: page.id,
13
14
  redirect: "",
@@ -10,6 +10,7 @@ const create_form = async (ctx) => {
10
10
 
11
11
  return {
12
12
  assigns: {
13
+ page,
13
14
  resource: {
14
15
  id: page.id,
15
16
  slug: page.slug,
@@ -234,8 +234,8 @@ export default class FormBuilder extends HTMLBuilder {
234
234
  renderedOpts.length
235
235
  ? renderedOpts.join("")
236
236
  : this.tag("div", "No items available.", {
237
- class: "italic opacity-50",
238
- }),
237
+ class: "italic opacity-50",
238
+ }),
239
239
 
240
240
  {
241
241
  ...rest,
@@ -25,6 +25,10 @@ body {
25
25
  @apply text-raketa-foreground bg-raketa-background;
26
26
  }
27
27
 
28
+ .markdown {
29
+ @apply prose text-raketa-foreground text-sm;
30
+ }
31
+
28
32
  @layer components {
29
33
 
30
34
  /* Utils */
@@ -1,5 +1,5 @@
1
- import DeletesHandler from "../../../../handlers/articles/DeletesHandler";
2
1
  import Articles from "../../../../cloud/Articles";
2
+ import DeletesHandler from "../../../../handlers/articles/DeletesHandler";
3
3
  import Factory from "../../../support/factory";
4
4
  import { remoteConfig } from "../../../support/handlersHelper";
5
5
 
@@ -33,6 +33,7 @@ describe("Article delete", () => {
33
33
 
34
34
  expect(result).toEqual({
35
35
  assigns: {
36
+ article,
36
37
  resource: {
37
38
  id: article.id,
38
39
  redirect: "",
@@ -1,5 +1,5 @@
1
- import URLsHandler from "../../../../handlers/articles/URLsHandler";
2
1
  import Articles from "../../../../cloud/Articles";
2
+ import URLsHandler from "../../../../handlers/articles/URLsHandler";
3
3
  import Factory from "../../../support/factory";
4
4
 
5
5
  function buildCtx(article) {
@@ -31,6 +31,7 @@ describe("Article change url", () => {
31
31
 
32
32
  expect(result).toEqual({
33
33
  assigns: {
34
+ article,
34
35
  resource: { slug: article.slug, id: article.id, redirect: null },
35
36
  errors: {},
36
37
  _translations: [],
@@ -1,5 +1,5 @@
1
- import DeletesHandler from "../../../../handlers/events/DeletesHandler";
2
1
  import Events from "../../../../cloud/Events";
2
+ import DeletesHandler from "../../../../handlers/events/DeletesHandler";
3
3
  import Factory from "../../../support/factory";
4
4
  import { remoteConfig } from "../../../support/handlersHelper";
5
5
 
@@ -33,6 +33,7 @@ describe("Event delete", () => {
33
33
 
34
34
  expect(result).toEqual({
35
35
  assigns: {
36
+ event,
36
37
  resource: {
37
38
  id: event.id,
38
39
  redirect: "",
@@ -1,5 +1,5 @@
1
- import URLsHandler from "../../../../handlers/events/URLsHandler";
2
1
  import Events from "../../../../cloud/Events";
2
+ import URLsHandler from "../../../../handlers/events/URLsHandler";
3
3
  import Factory from "../../../support/factory";
4
4
 
5
5
  function buildCtx(event) {
@@ -31,6 +31,7 @@ describe("Event change url", () => {
31
31
 
32
32
  expect(result).toEqual({
33
33
  assigns: {
34
+ event,
34
35
  resource: { slug: event.slug, id: event.id, redirect: null },
35
36
  errors: {},
36
37
  _translations: [],
@@ -1,6 +1,7 @@
1
- import TagHandler from "../../../../handlers/page_revisions/TagHandler";
2
1
  import PageRevisions from "../../../../cloud/PageRevisions";
2
+ import Pages from "../../../../cloud/Pages";
3
3
  import Tags from "../../../../cloud/Tags";
4
+ import TagHandler from "../../../../handlers/page_revisions/TagHandler";
4
5
 
5
6
  import Factory from "../../../support/factory";
6
7
 
@@ -9,9 +10,17 @@ function buildCtx(revision) {
9
10
  client: {
10
11
  pageRevisions: new PageRevisions(() => ({}), "token"),
11
12
  tags: new Tags(() => ({}), "token"),
13
+ pages: new Pages(() => ({}), "token"),
12
14
  },
13
15
  params: { parent_id: revision.id },
14
16
  locale: "en",
17
+ defaultLocale: "es",
18
+ locales: {
19
+ es: {
20
+ name: "Spanish",
21
+ code: "es",
22
+ },
23
+ },
15
24
  };
16
25
  }
17
26
 
@@ -21,23 +30,47 @@ describe("Page revision tags settings", () => {
21
30
  Factory.build("tag", { id: 42 }),
22
31
  Factory.build("tag", { id: 69 }),
23
32
  ];
33
+ const spanishTags = [Factory.build("tag", { id: 100 })];
24
34
  const revision = Factory.build("page_revision", { tags: [tags[0]] });
35
+ const originalPage = Factory.build("page", {
36
+ id: "original-123",
37
+ translations: {
38
+ en: { id: "translated-123" },
39
+ es: { id: "es-translated-123" },
40
+ },
41
+ });
42
+ const spanishPage = Factory.build("page", {
43
+ id: "es-translated-123",
44
+ tags: spanishTags,
45
+ });
46
+
25
47
  const ctx = buildCtx(revision);
26
48
 
27
49
  const mockFind = jest
28
50
  .spyOn(ctx.client.pageRevisions, "find")
29
51
  .mockImplementation(() => revision);
30
52
 
53
+ const mockPageFind = jest
54
+ .spyOn(ctx.client.pages, "find")
55
+ .mockImplementation((id, locale) => {
56
+ if (locale === "es") {
57
+ return spanishPage;
58
+ }
59
+ return originalPage;
60
+ });
61
+
31
62
  const mockTags = jest
32
63
  .spyOn(ctx.client.tags, "all")
33
- .mockImplementation(() => ({
34
- list: tags,
64
+ .mockImplementation((locale) => ({
65
+ list: locale === "es" ? spanishTags : tags,
35
66
  }));
36
67
 
37
68
  const result = await TagHandler.edit_form(ctx);
38
69
 
39
70
  expect(mockFind).toHaveBeenCalledWith(revision.id, "en");
40
71
  expect(mockTags).toHaveBeenCalledWith("en");
72
+ expect(mockPageFind).toHaveBeenCalledWith(revision.originalId, "en");
73
+ expect(mockPageFind).toHaveBeenCalledWith("es-translated-123", "es");
41
74
 
42
75
  expect(result).toEqual({
43
76
  assigns: {
@@ -45,6 +78,8 @@ describe("Page revision tags settings", () => {
45
78
  tags: tags,
46
79
  errors: {},
47
80
  _translations: [],
81
+ defaultLocaleTags: spanishTags,
82
+ defaultLocaleName: "Spanish",
48
83
  },
49
84
  });
50
85
  });