@raketa-cloud/admin 0.0.15 → 0.0.17
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.
- package/package.json +1 -1
- package/src/Adapter.js +4 -4
- package/src/HonoAdapter.js +13 -19
- package/src/cloud/Articles.js +9 -5
- package/src/cloud/EventChanges.js +15 -0
- package/src/cloud/EventRevisions.js +149 -0
- package/src/cloud/Events.js +139 -0
- package/src/cloud/Pages.js +9 -5
- package/src/cloud/documents/common.js +10 -0
- package/src/cloud/documents/eventsDocuments.js +254 -0
- package/src/handlers/article_revisions/ArticleRevisionsHandler.js +4 -4
- package/src/handlers/article_revisions/CodeHandler.js +2 -2
- package/src/handlers/article_revisions/GeneralHandler.js +2 -2
- package/src/handlers/article_revisions/LocksHandler.js +2 -2
- package/src/handlers/article_revisions/MetaHandler.js +2 -2
- package/src/handlers/article_revisions/PublishesHandler.js +2 -2
- package/src/handlers/article_revisions/RevertsHandler.js +2 -2
- package/src/handlers/article_revisions/TagHandler.js +2 -2
- package/src/handlers/article_revisions/UnlocksHandler.js +2 -2
- package/src/handlers/article_revisions/VisualHandler.js +2 -2
- package/src/handlers/articles/ArticlesHandler.js +20 -16
- package/src/handlers/articles/ClonesHandler.js +5 -3
- package/src/handlers/articles/DeletesHandler.js +5 -5
- package/src/handlers/articles/TranslationsHandler.js +25 -22
- package/src/handlers/articles/URLsHandler.js +6 -6
- package/src/handlers/event_revisions/CodeHandler.js +86 -0
- package/src/handlers/event_revisions/EventRevisionsHandler.js +47 -0
- package/src/handlers/event_revisions/GeneralHandler.js +94 -0
- package/src/handlers/event_revisions/LocksHandler.js +51 -0
- package/src/handlers/event_revisions/MetaHandler.js +86 -0
- package/src/handlers/event_revisions/PublishesHandler.js +84 -0
- package/src/handlers/event_revisions/RevertsHandler.js +26 -0
- package/src/handlers/event_revisions/TagHandler.js +85 -0
- package/src/handlers/event_revisions/UnlocksHandler.js +22 -0
- package/src/handlers/event_revisions/VisualHandler.js +80 -0
- package/src/handlers/event_revisions/WidgetHandler.js +41 -0
- package/src/handlers/events/ClonesHandler.js +19 -0
- package/src/handlers/events/DeletesHandler.js +68 -0
- package/src/handlers/events/EventsHandler.js +125 -0
- package/src/handlers/events/TranslationsHandler.js +107 -0
- package/src/handlers/events/URLsHandler.js +71 -0
- package/src/handlers/page_revisions/CodeHandler.js +2 -2
- package/src/handlers/page_revisions/GeneralHandler.js +2 -2
- package/src/handlers/page_revisions/LocksHandler.js +2 -2
- package/src/handlers/page_revisions/MetaHandler.js +2 -2
- package/src/handlers/page_revisions/PageRevisionsHandler.js +4 -4
- package/src/handlers/page_revisions/PublishesHandler.js +2 -2
- package/src/handlers/page_revisions/RevertsHandler.js +2 -2
- package/src/handlers/page_revisions/TagHandler.js +2 -2
- package/src/handlers/page_revisions/UnlocksHandler.js +2 -2
- package/src/handlers/page_revisions/VisualHandler.js +2 -2
- package/src/handlers/pages/ClonesHandler.js +5 -3
- package/src/handlers/pages/DeletesHandler.js +5 -5
- package/src/handlers/pages/PagesHandler.js +21 -16
- package/src/handlers/pages/TranslationsHandler.js +24 -22
- package/src/handlers/pages/URLsHandler.js +6 -6
- package/src/index.js +24 -2
- package/src/routeArticlesModule.js +142 -0
- package/src/routeCollection.js +2 -2
- package/src/routeEventsModule.js +142 -0
- package/src/routeMember.js +2 -2
- package/src/routeNestedCollection.js +8 -2
- package/src/routeNestedMember.js +8 -2
- package/src/routePagesModule.js +155 -0
- package/src/routeStandard.js +6 -4
- package/src/setupCloud.js +12 -0
- package/src/tests/handlers/article_revisions/ArticleRevisionsHandler.test/create.test.js +84 -0
- package/src/tests/handlers/article_revisions/ArticleRevisionsHandler.test/destroy.test.js +59 -0
- package/src/tests/handlers/article_revisions/CodesHandler.test/edit_form.test.js +56 -0
- package/src/tests/handlers/article_revisions/CodesHandler.test/update.test.js +148 -0
- package/src/tests/handlers/article_revisions/GeneralHandler.test/edit_form.test.js +65 -0
- package/src/tests/handlers/article_revisions/GeneralHandler.test/update.test.js +159 -0
- package/src/tests/handlers/article_revisions/MetaHandler.test/edit_form.test.js +57 -0
- package/src/tests/handlers/article_revisions/MetaHandler.test/update.test.js +152 -0
- package/src/tests/handlers/article_revisions/PublishesHandler.test/create.test.js +142 -0
- package/src/tests/handlers/article_revisions/PublishesHandler.test/create_form.test.js +47 -0
- package/src/tests/handlers/article_revisions/RevertsHandler.test/create.test.js +89 -0
- package/src/tests/handlers/article_revisions/TagHandler.test/edit_form.test.js +69 -0
- package/src/tests/handlers/article_revisions/TagHandler.test/update.test.js +152 -0
- package/src/tests/handlers/article_revisions/VisualHandler.test.test/edit_form.test.js +55 -0
- package/src/tests/handlers/article_revisions/VisualHandler.test.test/update.test.js +140 -0
- package/src/tests/handlers/article_revisions/WidgetHandler.test/show.test.js +46 -0
- package/src/tests/handlers/article_revisions/WidgetHandler.test/update.test.js +103 -0
- package/src/tests/handlers/articles/ArticlesHandler.test/create.test.js +11 -5
- package/src/tests/handlers/articles/ArticlesHandler.test/create_form.test.js +5 -2
- package/src/tests/handlers/articles/ArticlesHandler.test/index.test.js +9 -2
- package/src/tests/handlers/articles/ArticlesHandler.test/show.test.js +9 -3
- package/src/tests/handlers/articles/{ConesHandler.test → ClonesHandler.test}/create.test.js +8 -2
- package/src/tests/handlers/articles/DeletesHandler.test/create.test.js +12 -3
- package/src/tests/handlers/articles/DeletesHandler.test/create_form.test.js +8 -2
- package/src/tests/handlers/articles/URLsHandler.test/create.test.js +18 -6
- package/src/tests/handlers/articles/URLsHandler.test/create_form.test.js +8 -2
- package/src/tests/handlers/event_revisions/CodesHandler.test/edit_form.test.js +56 -0
- package/src/tests/handlers/event_revisions/CodesHandler.test/update.test.js +152 -0
- package/src/tests/handlers/event_revisions/EventRevisionsHandler.test/create.test.js +84 -0
- package/src/tests/handlers/event_revisions/EventRevisionsHandler.test/destroy.test.js +59 -0
- package/src/tests/handlers/event_revisions/GeneralHandler.test/edit_form.test.js +69 -0
- package/src/tests/handlers/event_revisions/GeneralHandler.test/update.test.js +167 -0
- package/src/tests/handlers/event_revisions/MetaHandler.test/edit_form.test.js +57 -0
- package/src/tests/handlers/event_revisions/MetaHandler.test/update.test.js +156 -0
- package/src/tests/handlers/event_revisions/PublishesHandler.test/create.test.js +142 -0
- package/src/tests/handlers/event_revisions/PublishesHandler.test/create_form.test.js +47 -0
- package/src/tests/handlers/event_revisions/RevertsHandler.test/create.test.js +89 -0
- package/src/tests/handlers/event_revisions/TagHandler.test/edit_form.test.js +69 -0
- package/src/tests/handlers/event_revisions/TagHandler.test/update.test.js +156 -0
- package/src/tests/handlers/event_revisions/VisualHandler.test.test/edit_form.test.js +55 -0
- package/src/tests/handlers/event_revisions/VisualHandler.test.test/update.test.js +144 -0
- package/src/tests/handlers/event_revisions/WidgetHandler.test/show.test.js +46 -0
- package/src/tests/handlers/event_revisions/WidgetHandler.test/update.test.js +103 -0
- package/src/tests/handlers/events/ClonesHandler.test/create.test.js +60 -0
- package/src/tests/handlers/events/DeletesHandler.test/create.test.js +119 -0
- package/src/tests/handlers/events/DeletesHandler.test/create_form.test.js +60 -0
- package/src/tests/handlers/events/EventsHandler.test/create.test.js +158 -0
- package/src/tests/handlers/events/EventsHandler.test/create_form.test.js +44 -0
- package/src/tests/handlers/events/EventsHandler.test/index.test.js +52 -0
- package/src/tests/handlers/events/EventsHandler.test/show.test.js +111 -0
- package/src/tests/handlers/events/URLsHandler.test/create.test.js +167 -0
- package/src/tests/handlers/events/URLsHandler.test/create_form.test.js +57 -0
- package/src/tests/handlers/page_revisions/CodesHandler.test/update.test.js +12 -3
- package/src/tests/handlers/page_revisions/GeneralHandler.test/update.test.js +12 -3
- package/src/tests/handlers/page_revisions/MetaHandler.test/update.test.js +12 -3
- package/src/tests/handlers/page_revisions/PageRevisionsHandler.test/create.test.js +12 -3
- package/src/tests/handlers/page_revisions/PageRevisionsHandler.test/destroy.test.js +8 -2
- package/src/tests/handlers/page_revisions/PublishesHandler.test/create.test.js +8 -2
- package/src/tests/handlers/page_revisions/RevertsHandler.test/create.test.js +12 -3
- package/src/tests/handlers/page_revisions/TagHandler.test/update.test.js +8 -2
- package/src/tests/handlers/page_revisions/VisualHandler.test.test/update.test.js +12 -3
- package/src/tests/handlers/pages/ConesHandler.test/create.test.js +8 -2
- package/src/tests/handlers/pages/DeletesHandler.test/create.test.js +12 -3
- package/src/tests/handlers/pages/DeletesHandler.test/create_form.test.js +8 -2
- package/src/tests/handlers/pages/PagesHandler.test/create.test.js +11 -5
- package/src/tests/handlers/pages/PagesHandler.test/create_form.test.js +1 -1
- package/src/tests/handlers/pages/PagesHandler.test/index.test.js +5 -2
- package/src/tests/handlers/pages/PagesHandler.test/show.test.js +9 -3
- package/src/tests/handlers/pages/URLsHandler.test/create.test.js +16 -4
- package/src/tests/handlers/pages/URLsHandler.test/create_form.test.js +8 -2
- package/src/tests/routeCollection.test.js +118 -105
- package/src/tests/routeMember.test.js +60 -54
- package/src/tests/routeNestedCollection.test.js +132 -126
- package/src/tests/routeNestedMember.test.js +60 -54
- package/src/views/articles/_form.ejs +17 -17
- package/src/views/articles/show.ejs +9 -9
- package/src/views/articles/translations/_form.ejs +3 -3
- package/src/views/articles/translations/create_form.ejs +7 -9
- package/src/views/event_revisions/_nav.ejs +40 -0
- package/src/views/event_revisions/codes/edit_form.ejs +39 -0
- package/src/views/event_revisions/general/edit_form.ejs +72 -0
- package/src/views/event_revisions/locks/create_form.ejs +35 -0
- package/src/views/event_revisions/meta/edit_form.ejs +41 -0
- package/src/views/event_revisions/publishes/_form.ejs +57 -0
- package/src/views/event_revisions/publishes/create_form.ejs +10 -0
- package/src/views/event_revisions/tags/edit_form.ejs +64 -0
- package/src/views/event_revisions/visuals/edit_form.ejs +42 -0
- package/src/views/events/_form.ejs +88 -0
- package/src/views/events/create_form.ejs +9 -0
- package/src/views/events/deletes/create_form.ejs +55 -0
- package/src/views/events/edit_form.ejs +3 -0
- package/src/views/events/index.ejs +161 -0
- package/src/views/events/show.ejs +281 -0
- package/src/views/events/translations/_form.ejs +79 -0
- package/src/views/events/translations/create_form.ejs +10 -0
- package/src/views/events/urls/create_form.ejs +31 -0
- package/src/views/pages/_form.ejs +16 -16
- package/src/views/pages/create_form.ejs +1 -1
- package/src/views/pages/show.ejs +9 -9
- package/src/views/pages/translations/_form.ejs +3 -3
- package/src/views/pages/translations/create_form.ejs +7 -9
- package/test/factory.js +42 -3
- package/src/routeArticles.js +0 -65
- package/src/routePages.js +0 -55
|
@@ -22,7 +22,10 @@ describe("Clone article", () => {
|
|
|
22
22
|
.spyOn(ctx.client.articles, "clone")
|
|
23
23
|
.mockImplementation(() => article);
|
|
24
24
|
|
|
25
|
-
const result = await ClonesHandler.create(ctx
|
|
25
|
+
const result = await ClonesHandler.create(ctx, {
|
|
26
|
+
articleType: "article",
|
|
27
|
+
articleTypePlural: "articles",
|
|
28
|
+
});
|
|
26
29
|
|
|
27
30
|
expect(mockClone).toHaveBeenCalledWith(article.id, "en");
|
|
28
31
|
|
|
@@ -44,7 +47,10 @@ describe("Clone article", () => {
|
|
|
44
47
|
}));
|
|
45
48
|
|
|
46
49
|
expect(async () => {
|
|
47
|
-
await ClonesHandler.create(ctx
|
|
50
|
+
await ClonesHandler.create(ctx, {
|
|
51
|
+
articleType: "article",
|
|
52
|
+
articleTypePlural: "articles",
|
|
53
|
+
});
|
|
48
54
|
}).rejects.toThrow(
|
|
49
55
|
`Error cloning article: ${JSON.stringify([{ key: "generalError", message: "some error" }])}`
|
|
50
56
|
);
|
|
@@ -33,7 +33,10 @@ describe("Article delete", () => {
|
|
|
33
33
|
.spyOn(ctx.client.articles, "delete")
|
|
34
34
|
.mockImplementation(() => ({ article, errors: null }));
|
|
35
35
|
|
|
36
|
-
const result = await DeletesHandler.create(ctx
|
|
36
|
+
const result = await DeletesHandler.create(ctx, {
|
|
37
|
+
articleType: "article",
|
|
38
|
+
articleTypePlural: "articles",
|
|
39
|
+
});
|
|
37
40
|
|
|
38
41
|
expect(mockFind).toHaveBeenCalledWith(article.id, "en");
|
|
39
42
|
expect(mockDelete).toHaveBeenCalledWith(article.id, "en", {
|
|
@@ -73,7 +76,10 @@ describe("Article delete", () => {
|
|
|
73
76
|
],
|
|
74
77
|
}));
|
|
75
78
|
|
|
76
|
-
const result = await DeletesHandler.create(ctx
|
|
79
|
+
const result = await DeletesHandler.create(ctx, {
|
|
80
|
+
articleType: "article",
|
|
81
|
+
articleTypePlural: "articles",
|
|
82
|
+
});
|
|
77
83
|
|
|
78
84
|
expect(mockFind).toHaveBeenCalledWith(article.id, "en");
|
|
79
85
|
expect(mockDelete).toHaveBeenCalledWith(article.id, "en", {
|
|
@@ -102,7 +108,10 @@ describe("Article delete", () => {
|
|
|
102
108
|
.mockImplementation(() => null);
|
|
103
109
|
|
|
104
110
|
expect(async () => {
|
|
105
|
-
await DeletesHandler.create(ctx
|
|
111
|
+
await DeletesHandler.create(ctx, {
|
|
112
|
+
articleType: "article",
|
|
113
|
+
articleTypePlural: "articles",
|
|
114
|
+
});
|
|
106
115
|
}).rejects.toThrow("Missing article #42");
|
|
107
116
|
|
|
108
117
|
expect(mockFind).toHaveBeenCalledWith("42", "en");
|
|
@@ -22,7 +22,10 @@ describe("Article delete", () => {
|
|
|
22
22
|
.spyOn(ctx.client.articles, "find")
|
|
23
23
|
.mockImplementation(() => article);
|
|
24
24
|
|
|
25
|
-
const result = await DeletesHandler.create_form(ctx
|
|
25
|
+
const result = await DeletesHandler.create_form(ctx, {
|
|
26
|
+
articleType: "article",
|
|
27
|
+
articleTypePlural: "articles",
|
|
28
|
+
});
|
|
26
29
|
|
|
27
30
|
expect(mockFind).toHaveBeenCalledWith(article.id, "en");
|
|
28
31
|
|
|
@@ -46,7 +49,10 @@ describe("Article delete", () => {
|
|
|
46
49
|
.mockImplementation(() => null);
|
|
47
50
|
|
|
48
51
|
expect(async () => {
|
|
49
|
-
await DeletesHandler.create_form(ctx
|
|
52
|
+
await DeletesHandler.create_form(ctx, {
|
|
53
|
+
articleType: "article",
|
|
54
|
+
articleTypePlural: "articles",
|
|
55
|
+
});
|
|
50
56
|
}).rejects.toThrow("Missing article #42");
|
|
51
57
|
|
|
52
58
|
expect(mockFind).toHaveBeenCalledWith("42", "en");
|
|
@@ -33,7 +33,10 @@ describe("Article change url", () => {
|
|
|
33
33
|
.spyOn(ctx.client.articles, "updateSlug")
|
|
34
34
|
.mockImplementation(() => ({ article, errors: null }));
|
|
35
35
|
|
|
36
|
-
const result = await URLsHandler.create(ctx
|
|
36
|
+
const result = await URLsHandler.create(ctx, {
|
|
37
|
+
articleType: "article",
|
|
38
|
+
articleTypePlural: "articles",
|
|
39
|
+
});
|
|
37
40
|
|
|
38
41
|
expect(mockFind).toHaveBeenCalledWith(article.id, "en");
|
|
39
42
|
expect(mockChange).toHaveBeenCalledWith(
|
|
@@ -44,7 +47,7 @@ describe("Article change url", () => {
|
|
|
44
47
|
url: `/${article.slug}`,
|
|
45
48
|
destination: updateSettings.slug,
|
|
46
49
|
httpResponseCode: 301,
|
|
47
|
-
note: "Created with changed URL for a article",
|
|
50
|
+
note: "Created with changed URL for a resource of type article",
|
|
48
51
|
}
|
|
49
52
|
);
|
|
50
53
|
|
|
@@ -71,7 +74,10 @@ describe("Article change url", () => {
|
|
|
71
74
|
errors: [{ codes: [], key: "slug", message: "has already been taken" }],
|
|
72
75
|
}));
|
|
73
76
|
|
|
74
|
-
const result = await URLsHandler.create(ctx
|
|
77
|
+
const result = await URLsHandler.create(ctx, {
|
|
78
|
+
articleType: "article",
|
|
79
|
+
articleTypePlural: "articles",
|
|
80
|
+
});
|
|
75
81
|
|
|
76
82
|
expect(mockFind).toHaveBeenCalledWith(article.id, "en");
|
|
77
83
|
expect(mockChange).toHaveBeenCalledWith(
|
|
@@ -115,7 +121,10 @@ describe("Article change url", () => {
|
|
|
115
121
|
],
|
|
116
122
|
}));
|
|
117
123
|
|
|
118
|
-
const result = await URLsHandler.create(ctx
|
|
124
|
+
const result = await URLsHandler.create(ctx, {
|
|
125
|
+
articleType: "article",
|
|
126
|
+
articleTypePlural: "articles",
|
|
127
|
+
});
|
|
119
128
|
|
|
120
129
|
expect(mockFind).toHaveBeenCalledWith(article.id, "en");
|
|
121
130
|
expect(mockChange).toHaveBeenCalledWith(
|
|
@@ -126,7 +135,7 @@ describe("Article change url", () => {
|
|
|
126
135
|
url: `/${article.slug}`,
|
|
127
136
|
destination: updateSettings.slug,
|
|
128
137
|
httpResponseCode: 301,
|
|
129
|
-
note: "Created with changed URL for a article",
|
|
138
|
+
note: "Created with changed URL for a resource of type article",
|
|
130
139
|
}
|
|
131
140
|
);
|
|
132
141
|
|
|
@@ -147,7 +156,10 @@ describe("Article change url", () => {
|
|
|
147
156
|
.mockImplementation(() => null);
|
|
148
157
|
|
|
149
158
|
expect(async () => {
|
|
150
|
-
await URLsHandler.create(ctx
|
|
159
|
+
await URLsHandler.create(ctx, {
|
|
160
|
+
articleType: "article",
|
|
161
|
+
articleTypePlural: "articles",
|
|
162
|
+
});
|
|
151
163
|
}).rejects.toThrow("Cannot find article with id 42");
|
|
152
164
|
|
|
153
165
|
expect(mockFind).toHaveBeenCalledWith("42", "en");
|
|
@@ -22,7 +22,10 @@ describe("Article change url", () => {
|
|
|
22
22
|
.spyOn(ctx.client.articles, "find")
|
|
23
23
|
.mockImplementation(() => article);
|
|
24
24
|
|
|
25
|
-
const result = await URLsHandler.create_form(ctx
|
|
25
|
+
const result = await URLsHandler.create_form(ctx, {
|
|
26
|
+
articleType: "article",
|
|
27
|
+
articleTypePlural: "articles",
|
|
28
|
+
});
|
|
26
29
|
|
|
27
30
|
expect(mockFind).toHaveBeenCalledWith(article.id, "en");
|
|
28
31
|
|
|
@@ -43,7 +46,10 @@ describe("Article change url", () => {
|
|
|
43
46
|
.mockImplementation(() => null);
|
|
44
47
|
|
|
45
48
|
expect(async () => {
|
|
46
|
-
await URLsHandler.create_form(ctx
|
|
49
|
+
await URLsHandler.create_form(ctx, {
|
|
50
|
+
articleType: "article",
|
|
51
|
+
articleTypePlural: "articles",
|
|
52
|
+
});
|
|
47
53
|
}).rejects.toThrow("Cannot find article with id 42");
|
|
48
54
|
|
|
49
55
|
expect(mockFind).toHaveBeenCalledWith("42", "en");
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import CodeHandler from "../../../../handlers/event_revisions/CodeHandler";
|
|
2
|
+
import EventRevisions from "../../../../cloud/EventRevisions";
|
|
3
|
+
import { testConfig } from "../../../../../test/handlersHelper";
|
|
4
|
+
import Factory from "../../../../../test/factory";
|
|
5
|
+
|
|
6
|
+
function buildCtx(revision) {
|
|
7
|
+
return {
|
|
8
|
+
client: {
|
|
9
|
+
eventRevisions: new EventRevisions(testConfig, "token"),
|
|
10
|
+
},
|
|
11
|
+
params: { parent_id: revision.id },
|
|
12
|
+
locale: "en",
|
|
13
|
+
};
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
describe("Event revision code settings", () => {
|
|
17
|
+
test("edit_form when a revision exists", async () => {
|
|
18
|
+
const revision = Factory.build("event_revision");
|
|
19
|
+
const ctx = buildCtx(revision);
|
|
20
|
+
|
|
21
|
+
const mockFind = jest
|
|
22
|
+
.spyOn(ctx.client.eventRevisions, "find")
|
|
23
|
+
.mockImplementation(() => revision);
|
|
24
|
+
|
|
25
|
+
const result = await CodeHandler.edit_form(ctx);
|
|
26
|
+
|
|
27
|
+
expect(mockFind).toHaveBeenCalledWith(revision.id, "en");
|
|
28
|
+
|
|
29
|
+
expect(result).toEqual({
|
|
30
|
+
assigns: {
|
|
31
|
+
code_settings: {
|
|
32
|
+
id: revision.id,
|
|
33
|
+
originalId: revision.originalId,
|
|
34
|
+
scripts: JSON.stringify([]),
|
|
35
|
+
structured_data: JSON.stringify({}),
|
|
36
|
+
},
|
|
37
|
+
errors: {},
|
|
38
|
+
_translations: [],
|
|
39
|
+
},
|
|
40
|
+
});
|
|
41
|
+
});
|
|
42
|
+
|
|
43
|
+
test("edit_form when a revision does not exist", async () => {
|
|
44
|
+
const ctx = buildCtx({ id: "42" });
|
|
45
|
+
|
|
46
|
+
const mockFind = jest
|
|
47
|
+
.spyOn(ctx.client.eventRevisions, "find")
|
|
48
|
+
.mockImplementation(() => null);
|
|
49
|
+
|
|
50
|
+
expect(async () => {
|
|
51
|
+
await CodeHandler.edit_form(ctx);
|
|
52
|
+
}).rejects.toThrow("Missing revision #42");
|
|
53
|
+
|
|
54
|
+
expect(mockFind).toHaveBeenCalledWith("42", "en");
|
|
55
|
+
});
|
|
56
|
+
});
|
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
import CodeHandler from "../../../../handlers/event_revisions/CodeHandler";
|
|
2
|
+
import EventRevisions from "../../../../cloud/EventRevisions";
|
|
3
|
+
import { testConfig } from "../../../../../test/handlersHelper";
|
|
4
|
+
import Factory from "../../../../../test/factory";
|
|
5
|
+
|
|
6
|
+
function buildCtx(revision, updateSettings) {
|
|
7
|
+
return {
|
|
8
|
+
client: {
|
|
9
|
+
eventRevisions: new EventRevisions(testConfig, "token"),
|
|
10
|
+
},
|
|
11
|
+
params: { parent_id: revision.id },
|
|
12
|
+
resourceParams: {
|
|
13
|
+
code_settings: updateSettings,
|
|
14
|
+
},
|
|
15
|
+
locale: "en",
|
|
16
|
+
};
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
describe("Event revision code settings", () => {
|
|
20
|
+
test("update successful", async () => {
|
|
21
|
+
const revision = Factory.build("event_revision");
|
|
22
|
+
|
|
23
|
+
const updateSettings = {
|
|
24
|
+
scripts: JSON.stringify([{ type: "bla" }]),
|
|
25
|
+
structured_data: JSON.stringify({ type: "event" }),
|
|
26
|
+
};
|
|
27
|
+
|
|
28
|
+
const ctx = buildCtx(revision, updateSettings);
|
|
29
|
+
|
|
30
|
+
const mockFind = jest
|
|
31
|
+
.spyOn(ctx.client.eventRevisions, "find")
|
|
32
|
+
.mockImplementation(() => revision);
|
|
33
|
+
|
|
34
|
+
const mockUpdate = jest
|
|
35
|
+
.spyOn(ctx.client.eventRevisions, "update")
|
|
36
|
+
.mockImplementation(() => ({
|
|
37
|
+
revision: {},
|
|
38
|
+
errors: null,
|
|
39
|
+
}));
|
|
40
|
+
|
|
41
|
+
const result = await CodeHandler.update(ctx, {
|
|
42
|
+
eventType: "event",
|
|
43
|
+
eventTypePlural: "events",
|
|
44
|
+
});
|
|
45
|
+
|
|
46
|
+
expect(mockFind).toHaveBeenCalledWith(revision.id, "en");
|
|
47
|
+
expect(mockUpdate).toHaveBeenCalledWith(revision.id, "en", {
|
|
48
|
+
slug: revision.slug,
|
|
49
|
+
title: revision.title,
|
|
50
|
+
visibility: revision.visibility,
|
|
51
|
+
publishAt: revision.publishAt,
|
|
52
|
+
startsAt: revision.startsAt,
|
|
53
|
+
endsAt: revision.endsAt,
|
|
54
|
+
widgets: JSON.stringify(revision.widgets),
|
|
55
|
+
tags: revision.tags.map((t) => t.id),
|
|
56
|
+
categories: revision.categories.map((c) => c.id),
|
|
57
|
+
settings: JSON.stringify({
|
|
58
|
+
...revision.settings,
|
|
59
|
+
codes: {
|
|
60
|
+
scripts: [{ type: "bla" }],
|
|
61
|
+
structured_data: { type: "event" },
|
|
62
|
+
},
|
|
63
|
+
}),
|
|
64
|
+
});
|
|
65
|
+
|
|
66
|
+
expect(result).toEqual({
|
|
67
|
+
redirect: `/en/event_revisions/${revision.id}/codes/edit`,
|
|
68
|
+
});
|
|
69
|
+
});
|
|
70
|
+
|
|
71
|
+
test("update failed", async () => {
|
|
72
|
+
const revision = Factory.build("event_revision");
|
|
73
|
+
|
|
74
|
+
const updateSettings = {
|
|
75
|
+
scripts: JSON.stringify([{ type: "bla" }]),
|
|
76
|
+
structured_data: JSON.stringify({ type: "event" }),
|
|
77
|
+
};
|
|
78
|
+
|
|
79
|
+
const ctx = buildCtx(revision, updateSettings);
|
|
80
|
+
|
|
81
|
+
const mockFind = jest
|
|
82
|
+
.spyOn(ctx.client.eventRevisions, "find")
|
|
83
|
+
.mockImplementation(() => revision);
|
|
84
|
+
|
|
85
|
+
const mockUpdate = jest
|
|
86
|
+
.spyOn(ctx.client.eventRevisions, "update")
|
|
87
|
+
.mockImplementation(() => ({
|
|
88
|
+
revision: {},
|
|
89
|
+
errors: [{ key: "generalError", message: "some error" }],
|
|
90
|
+
}));
|
|
91
|
+
|
|
92
|
+
const result = await CodeHandler.update(ctx, {
|
|
93
|
+
eventType: "event",
|
|
94
|
+
eventTypePlural: "events",
|
|
95
|
+
});
|
|
96
|
+
|
|
97
|
+
expect(mockFind).toHaveBeenCalledWith(revision.id, "en");
|
|
98
|
+
expect(mockUpdate).toHaveBeenCalledWith(revision.id, "en", {
|
|
99
|
+
slug: revision.slug,
|
|
100
|
+
title: revision.title,
|
|
101
|
+
visibility: revision.visibility,
|
|
102
|
+
publishAt: revision.publishAt,
|
|
103
|
+
startsAt: revision.startsAt,
|
|
104
|
+
endsAt: revision.endsAt,
|
|
105
|
+
widgets: JSON.stringify(revision.widgets),
|
|
106
|
+
tags: revision.tags.map((t) => t.id),
|
|
107
|
+
categories: revision.categories.map((c) => c.id),
|
|
108
|
+
settings: JSON.stringify({
|
|
109
|
+
...revision.settings,
|
|
110
|
+
codes: {
|
|
111
|
+
scripts: [{ type: "bla" }],
|
|
112
|
+
structured_data: { type: "event" },
|
|
113
|
+
},
|
|
114
|
+
}),
|
|
115
|
+
});
|
|
116
|
+
|
|
117
|
+
expect(result).toEqual({
|
|
118
|
+
assigns: {
|
|
119
|
+
code_settings: {
|
|
120
|
+
...updateSettings,
|
|
121
|
+
id: revision.id,
|
|
122
|
+
originalId: revision.originalId,
|
|
123
|
+
},
|
|
124
|
+
errors: {
|
|
125
|
+
code_settings: { generalError: "some error" },
|
|
126
|
+
},
|
|
127
|
+
_translations: [],
|
|
128
|
+
},
|
|
129
|
+
});
|
|
130
|
+
});
|
|
131
|
+
|
|
132
|
+
test("update when a revision does not exist", async () => {
|
|
133
|
+
const revision = Factory.build("event_revision");
|
|
134
|
+
|
|
135
|
+
const updateSettings = {};
|
|
136
|
+
|
|
137
|
+
const ctx = buildCtx(revision, updateSettings);
|
|
138
|
+
|
|
139
|
+
const mockFind = jest
|
|
140
|
+
.spyOn(ctx.client.eventRevisions, "find")
|
|
141
|
+
.mockImplementation(() => null);
|
|
142
|
+
|
|
143
|
+
expect(async () => {
|
|
144
|
+
await CodeHandler.update(ctx, {
|
|
145
|
+
eventType: "event",
|
|
146
|
+
eventTypePlural: "events",
|
|
147
|
+
});
|
|
148
|
+
}).rejects.toThrow(`Missing revision #${revision.id}`);
|
|
149
|
+
|
|
150
|
+
expect(mockFind).toHaveBeenCalledWith(revision.id, "en");
|
|
151
|
+
});
|
|
152
|
+
});
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
import EventRevisionsHandler from "../../../../handlers/event_revisions/EventRevisionsHandler";
|
|
2
|
+
import EventRevisions from "../../../../cloud/EventRevisions";
|
|
3
|
+
import { testConfig } from "../../../../../test/handlersHelper";
|
|
4
|
+
import Factory from "../../../../../test/factory";
|
|
5
|
+
|
|
6
|
+
function buildCtx(eventID) {
|
|
7
|
+
return {
|
|
8
|
+
client: {
|
|
9
|
+
eventRevisions: new EventRevisions(testConfig, "token"),
|
|
10
|
+
},
|
|
11
|
+
params: { parent_id: eventID },
|
|
12
|
+
locale: "en",
|
|
13
|
+
};
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
describe("Event revisions", () => {
|
|
17
|
+
test("create successful", async () => {
|
|
18
|
+
const revision = Factory.build("event_revision", { originalId: 1 });
|
|
19
|
+
const ctx = buildCtx(revision.originalId);
|
|
20
|
+
|
|
21
|
+
const mockCreate = jest
|
|
22
|
+
.spyOn(ctx.client.eventRevisions, "create")
|
|
23
|
+
.mockImplementation(() => ({
|
|
24
|
+
revision,
|
|
25
|
+
errors: null,
|
|
26
|
+
eventErrors: null,
|
|
27
|
+
}));
|
|
28
|
+
|
|
29
|
+
const result = await EventRevisionsHandler.create(ctx, {
|
|
30
|
+
eventType: "event",
|
|
31
|
+
eventTypePlural: "events",
|
|
32
|
+
});
|
|
33
|
+
|
|
34
|
+
expect(mockCreate).toHaveBeenCalledWith(revision.originalId, "en");
|
|
35
|
+
|
|
36
|
+
expect(result).toEqual({
|
|
37
|
+
redirect: `/en/events/${revision.originalId}`,
|
|
38
|
+
});
|
|
39
|
+
});
|
|
40
|
+
|
|
41
|
+
test("create failed with errors", async () => {
|
|
42
|
+
const ctx = buildCtx(1);
|
|
43
|
+
const errors = [{ key: "generalError", message: "something went wrong" }];
|
|
44
|
+
|
|
45
|
+
const mockCreate = jest
|
|
46
|
+
.spyOn(ctx.client.eventRevisions, "create")
|
|
47
|
+
.mockImplementation(() => ({
|
|
48
|
+
revision: null,
|
|
49
|
+
errors,
|
|
50
|
+
eventErrors: null,
|
|
51
|
+
}));
|
|
52
|
+
|
|
53
|
+
expect(async () => {
|
|
54
|
+
await EventRevisionsHandler.create(ctx, {
|
|
55
|
+
eventType: "event",
|
|
56
|
+
eventTypePlural: "events",
|
|
57
|
+
});
|
|
58
|
+
}).rejects.toThrow(`Failed to start revision: ${JSON.stringify(errors)}`);
|
|
59
|
+
|
|
60
|
+
expect(mockCreate).toHaveBeenCalledWith(1, "en");
|
|
61
|
+
});
|
|
62
|
+
|
|
63
|
+
test("create failed with event errors", async () => {
|
|
64
|
+
const ctx = buildCtx(1);
|
|
65
|
+
const errors = [{ key: "generalError", message: "something went wrong" }];
|
|
66
|
+
|
|
67
|
+
const mockCreate = jest
|
|
68
|
+
.spyOn(ctx.client.eventRevisions, "create")
|
|
69
|
+
.mockImplementation(() => ({
|
|
70
|
+
revision: null,
|
|
71
|
+
errors: null,
|
|
72
|
+
eventErrors: errors,
|
|
73
|
+
}));
|
|
74
|
+
|
|
75
|
+
expect(async () => {
|
|
76
|
+
await EventRevisionsHandler.create(ctx, {
|
|
77
|
+
eventType: "event",
|
|
78
|
+
eventTypePlural: "events",
|
|
79
|
+
});
|
|
80
|
+
}).rejects.toThrow(`Failed to start revision: ${JSON.stringify(errors)}`);
|
|
81
|
+
|
|
82
|
+
expect(mockCreate).toHaveBeenCalledWith(1, "en");
|
|
83
|
+
});
|
|
84
|
+
});
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import EventRevisionsHandler from "../../../../handlers/event_revisions/EventRevisionsHandler";
|
|
2
|
+
import EventRevisions from "../../../../cloud/EventRevisions";
|
|
3
|
+
import { testConfig } from "../../../../../test/handlersHelper";
|
|
4
|
+
import Factory from "../../../../../test/factory";
|
|
5
|
+
|
|
6
|
+
function buildCtx(revisionID) {
|
|
7
|
+
return {
|
|
8
|
+
client: {
|
|
9
|
+
eventRevisions: new EventRevisions(testConfig, "token"),
|
|
10
|
+
},
|
|
11
|
+
params: { id: revisionID },
|
|
12
|
+
locale: "en",
|
|
13
|
+
};
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
describe("Event revisions", () => {
|
|
17
|
+
test("destroy successful", async () => {
|
|
18
|
+
const revision = Factory.build("event_revision");
|
|
19
|
+
const ctx = buildCtx(1);
|
|
20
|
+
|
|
21
|
+
const mockDelete = jest
|
|
22
|
+
.spyOn(ctx.client.eventRevisions, "delete")
|
|
23
|
+
.mockImplementation(() => ({ revision, errors: null }));
|
|
24
|
+
|
|
25
|
+
const result = await EventRevisionsHandler.destroy(ctx, {
|
|
26
|
+
eventType: "event",
|
|
27
|
+
eventTypePlural: "events",
|
|
28
|
+
});
|
|
29
|
+
|
|
30
|
+
expect(mockDelete).toHaveBeenCalledWith(1, "en");
|
|
31
|
+
|
|
32
|
+
expect(result).toEqual({
|
|
33
|
+
headers: {
|
|
34
|
+
"HX-Redirect": `/en/events/${revision.originalId}`,
|
|
35
|
+
},
|
|
36
|
+
json: {},
|
|
37
|
+
});
|
|
38
|
+
});
|
|
39
|
+
|
|
40
|
+
test("destroy failed", async () => {
|
|
41
|
+
const ctx = buildCtx(1);
|
|
42
|
+
const errors = [{ key: "generalError", message: "something went wrong" }];
|
|
43
|
+
|
|
44
|
+
const mockDelete = jest
|
|
45
|
+
.spyOn(ctx.client.eventRevisions, "delete")
|
|
46
|
+
.mockImplementation(() => ({ revision: null, errors }));
|
|
47
|
+
|
|
48
|
+
expect(async () => {
|
|
49
|
+
await EventRevisionsHandler.destroy(ctx, {
|
|
50
|
+
eventType: "event",
|
|
51
|
+
eventTypePlural: "events",
|
|
52
|
+
});
|
|
53
|
+
}).rejects.toThrow(
|
|
54
|
+
`Failed to delete revision#${1}: ${JSON.stringify(errors)}`
|
|
55
|
+
);
|
|
56
|
+
|
|
57
|
+
expect(mockDelete).toHaveBeenCalledWith(1, "en");
|
|
58
|
+
});
|
|
59
|
+
});
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import GeneralHandler from "../../../../handlers/event_revisions/GeneralHandler";
|
|
2
|
+
import EventRevisions from "../../../../cloud/EventRevisions";
|
|
3
|
+
import Events from "../../../../cloud/Events";
|
|
4
|
+
import { testConfig } from "../../../../../test/handlersHelper";
|
|
5
|
+
import Factory from "../../../../../test/factory";
|
|
6
|
+
|
|
7
|
+
function buildCtx(revision) {
|
|
8
|
+
return {
|
|
9
|
+
client: {
|
|
10
|
+
eventRevisions: new EventRevisions(testConfig, "token"),
|
|
11
|
+
events: new Events(testConfig, "token"),
|
|
12
|
+
},
|
|
13
|
+
params: { parent_id: revision.id },
|
|
14
|
+
locale: "en",
|
|
15
|
+
};
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
describe("Event revision genereal settings", () => {
|
|
19
|
+
test("edit_form when a revision exists", async () => {
|
|
20
|
+
const revision = Factory.build("event_revision", {
|
|
21
|
+
publishAt: "2024-08-30T19:05:00Z",
|
|
22
|
+
startsAt: "2024-08-30T19:10:00Z",
|
|
23
|
+
endsAt: "2024-08-30T19:15:00Z",
|
|
24
|
+
});
|
|
25
|
+
const ctx = buildCtx(revision);
|
|
26
|
+
|
|
27
|
+
const mockFind = jest
|
|
28
|
+
.spyOn(ctx.client.eventRevisions, "find")
|
|
29
|
+
.mockImplementation(() => revision);
|
|
30
|
+
|
|
31
|
+
const result = await GeneralHandler.edit_form(ctx);
|
|
32
|
+
|
|
33
|
+
expect(mockFind).toHaveBeenCalledWith(revision.id, "en");
|
|
34
|
+
|
|
35
|
+
expect(result).toEqual({
|
|
36
|
+
assigns: {
|
|
37
|
+
general_settings: {
|
|
38
|
+
id: revision.id,
|
|
39
|
+
originalId: revision.originalId,
|
|
40
|
+
title: revision.title,
|
|
41
|
+
slug: revision.slug,
|
|
42
|
+
visibility: revision.visibility,
|
|
43
|
+
publish_at: "2024-08-30T22:05",
|
|
44
|
+
starts_at: "2024-08-30T22:10",
|
|
45
|
+
ends_at: "2024-08-30T22:15",
|
|
46
|
+
username: revision.settings?.credentials?.user || "",
|
|
47
|
+
password: revision.settings?.credentials?.password || "",
|
|
48
|
+
},
|
|
49
|
+
errors: {},
|
|
50
|
+
visibilityOptions: ctx.client.events.visibilityOptions(),
|
|
51
|
+
_translations: [],
|
|
52
|
+
},
|
|
53
|
+
});
|
|
54
|
+
});
|
|
55
|
+
|
|
56
|
+
test("edit_form when a revision does not exist", async () => {
|
|
57
|
+
const ctx = buildCtx({ id: "42" });
|
|
58
|
+
|
|
59
|
+
const mockFind = jest
|
|
60
|
+
.spyOn(ctx.client.eventRevisions, "find")
|
|
61
|
+
.mockImplementation(() => null);
|
|
62
|
+
|
|
63
|
+
expect(async () => {
|
|
64
|
+
await GeneralHandler.edit_form(ctx);
|
|
65
|
+
}).rejects.toThrow("Missing revision #42");
|
|
66
|
+
|
|
67
|
+
expect(mockFind).toHaveBeenCalledWith("42", "en");
|
|
68
|
+
});
|
|
69
|
+
});
|