@raketa-cloud/admin 0.0.15 → 0.0.16
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/cloud/EventChanges.js +15 -0
- package/src/cloud/EventRevisions.js +149 -0
- package/src/cloud/Events.js +135 -0
- package/src/cloud/documents/common.js +10 -0
- package/src/cloud/documents/eventsDocuments.js +254 -0
- 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 +93 -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 +17 -0
- package/src/handlers/events/DeletesHandler.js +68 -0
- package/src/handlers/events/EventsHandler.js +121 -0
- package/src/handlers/events/TranslationsHandler.js +99 -0
- package/src/handlers/events/URLsHandler.js +71 -0
- package/src/index.js +22 -0
- package/src/routeEvents.js +55 -0
- package/src/routeStandard.js +2 -0
- package/src/setupCloud.js +12 -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 +139 -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 +150 -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 +143 -0
- package/src/tests/handlers/article_revisions/PageRevisionsHandler.test/create.test.js +75 -0
- package/src/tests/handlers/article_revisions/PageRevisionsHandler.test/destroy.test.js +53 -0
- package/src/tests/handlers/article_revisions/PublishesHandler.test/create.test.js +136 -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 +80 -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 +143 -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 +131 -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/event_revisions/CodesHandler.test/edit_form.test.js +56 -0
- package/src/tests/handlers/event_revisions/CodesHandler.test/update.test.js +143 -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 +158 -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 +147 -0
- package/src/tests/handlers/event_revisions/PageRevisionsHandler.test/create.test.js +75 -0
- package/src/tests/handlers/event_revisions/PageRevisionsHandler.test/destroy.test.js +53 -0
- package/src/tests/handlers/event_revisions/PublishesHandler.test/create.test.js +136 -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 +80 -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 +147 -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 +135 -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/ConesHandler.test/create.test.js +54 -0
- package/src/tests/handlers/events/DeletesHandler.test/create.test.js +110 -0
- package/src/tests/handlers/events/DeletesHandler.test/create_form.test.js +54 -0
- package/src/tests/handlers/events/EventsHandler.test/create.test.js +152 -0
- package/src/tests/handlers/events/EventsHandler.test/create_form.test.js +41 -0
- package/src/tests/handlers/events/EventsHandler.test/index.test.js +49 -0
- package/src/tests/handlers/events/EventsHandler.test/show.test.js +105 -0
- package/src/tests/handlers/events/URLsHandler.test/create.test.js +155 -0
- package/src/tests/handlers/events/URLsHandler.test/create_form.test.js +51 -0
- package/src/views/articles/translations/create_form.ejs +2 -2
- 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 +11 -0
- package/src/views/events/urls/create_form.ejs +31 -0
- package/test/factory.js +42 -3
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import WidgetHandler from "../../../../handlers/event_revisions/WidgetHandler";
|
|
2
|
+
import EventRevisions from "../../../../cloud/EventRevisions";
|
|
3
|
+
import Settings from "../../../../cloud/Settings";
|
|
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
|
+
settings: new Settings(testConfig, "token"),
|
|
12
|
+
},
|
|
13
|
+
params: { parent_id: revision.id },
|
|
14
|
+
locale: "en",
|
|
15
|
+
};
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
describe("WidgetHandler", () => {
|
|
19
|
+
test("show", async () => {
|
|
20
|
+
const revision = Factory.build("event_revision");
|
|
21
|
+
const settings = Factory.build("settings");
|
|
22
|
+
const ctx = buildCtx(revision);
|
|
23
|
+
|
|
24
|
+
const mockFind = jest
|
|
25
|
+
.spyOn(ctx.client.eventRevisions, "find")
|
|
26
|
+
.mockImplementation(() => revision);
|
|
27
|
+
|
|
28
|
+
const mockSettings = jest
|
|
29
|
+
.spyOn(ctx.client.settings, "find")
|
|
30
|
+
.mockImplementation(() => settings);
|
|
31
|
+
|
|
32
|
+
const result = await WidgetHandler.show(ctx);
|
|
33
|
+
|
|
34
|
+
expect(mockFind).toHaveBeenCalledWith(revision.id, "en");
|
|
35
|
+
expect(mockSettings).toHaveBeenCalledWith("en");
|
|
36
|
+
|
|
37
|
+
expect(result).toEqual({
|
|
38
|
+
json: {
|
|
39
|
+
revision: {
|
|
40
|
+
...revision,
|
|
41
|
+
websiteSettings: { ...settings },
|
|
42
|
+
},
|
|
43
|
+
},
|
|
44
|
+
});
|
|
45
|
+
});
|
|
46
|
+
});
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
import WidgetHandler from "../../../../handlers/event_revisions/WidgetHandler";
|
|
2
|
+
import EventRevisions from "../../../../cloud/EventRevisions";
|
|
3
|
+
import Settings from "../../../../cloud/Settings";
|
|
4
|
+
import { testConfig } from "../../../../../test/handlersHelper";
|
|
5
|
+
import Factory from "../../../../../test/factory";
|
|
6
|
+
|
|
7
|
+
function buildCtx(revision, newWidgets) {
|
|
8
|
+
return {
|
|
9
|
+
client: {
|
|
10
|
+
eventRevisions: new EventRevisions(testConfig, "token"),
|
|
11
|
+
settings: new Settings(testConfig, "token"),
|
|
12
|
+
},
|
|
13
|
+
params: { parent_id: revision.id },
|
|
14
|
+
resourceParams: {
|
|
15
|
+
widgets: newWidgets,
|
|
16
|
+
},
|
|
17
|
+
locale: "en",
|
|
18
|
+
};
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
describe("WidgetHandler", () => {
|
|
22
|
+
test("update successful", async () => {
|
|
23
|
+
const revision = Factory.build("event_revision");
|
|
24
|
+
const settings = Factory.build("settings");
|
|
25
|
+
const newWidgets = [
|
|
26
|
+
{
|
|
27
|
+
component: "SectionTitle",
|
|
28
|
+
settings: {},
|
|
29
|
+
id: "d2adwadw",
|
|
30
|
+
},
|
|
31
|
+
];
|
|
32
|
+
|
|
33
|
+
const ctx = buildCtx(revision, newWidgets);
|
|
34
|
+
|
|
35
|
+
const mockFind = jest
|
|
36
|
+
.spyOn(ctx.client.eventRevisions, "find")
|
|
37
|
+
.mockImplementation(() => revision);
|
|
38
|
+
|
|
39
|
+
const mockSettings = jest
|
|
40
|
+
.spyOn(ctx.client.settings, "find")
|
|
41
|
+
.mockImplementation(() => settings);
|
|
42
|
+
|
|
43
|
+
const mockUpdate = jest
|
|
44
|
+
.spyOn(ctx.client.eventRevisions, "updateWidgets")
|
|
45
|
+
.mockImplementation(() => ({
|
|
46
|
+
revision: { ...revision, widgets: newWidgets },
|
|
47
|
+
errors: [],
|
|
48
|
+
}));
|
|
49
|
+
|
|
50
|
+
const result = await WidgetHandler.update(ctx);
|
|
51
|
+
|
|
52
|
+
expect(mockUpdate).toHaveBeenCalledWith(revision.id, "en", newWidgets);
|
|
53
|
+
expect(mockFind).toHaveBeenCalledWith(revision.id, "en");
|
|
54
|
+
expect(mockSettings).toHaveBeenCalledWith("en");
|
|
55
|
+
|
|
56
|
+
expect(result).toEqual({
|
|
57
|
+
json: {
|
|
58
|
+
revision: {
|
|
59
|
+
...revision,
|
|
60
|
+
websiteSettings: { ...settings },
|
|
61
|
+
widgets: newWidgets,
|
|
62
|
+
},
|
|
63
|
+
errors: [],
|
|
64
|
+
},
|
|
65
|
+
});
|
|
66
|
+
});
|
|
67
|
+
|
|
68
|
+
test("update failed", async () => {
|
|
69
|
+
const revision = Factory.build("event_revision");
|
|
70
|
+
const newWidgets = [
|
|
71
|
+
{
|
|
72
|
+
component: "SectionTitle",
|
|
73
|
+
settings: {},
|
|
74
|
+
id: "d2adwadw",
|
|
75
|
+
},
|
|
76
|
+
];
|
|
77
|
+
|
|
78
|
+
const ctx = buildCtx(revision, newWidgets);
|
|
79
|
+
|
|
80
|
+
const mockFind = jest
|
|
81
|
+
.spyOn(ctx.client.eventRevisions, "find")
|
|
82
|
+
.mockImplementation(() => revision);
|
|
83
|
+
|
|
84
|
+
const mockUpdate = jest
|
|
85
|
+
.spyOn(ctx.client.eventRevisions, "updateWidgets")
|
|
86
|
+
.mockImplementation(() => ({
|
|
87
|
+
revision: null,
|
|
88
|
+
errors: [{ key: "widgets", message: "Wrong format" }],
|
|
89
|
+
}));
|
|
90
|
+
|
|
91
|
+
const result = await WidgetHandler.update(ctx);
|
|
92
|
+
|
|
93
|
+
expect(mockUpdate).toHaveBeenCalledWith(revision.id, "en", newWidgets);
|
|
94
|
+
expect(mockFind).toHaveBeenCalledWith(revision.id, "en");
|
|
95
|
+
|
|
96
|
+
expect(result).toEqual({
|
|
97
|
+
json: {
|
|
98
|
+
revision: null,
|
|
99
|
+
errors: [{ key: "widgets", message: "Wrong format" }],
|
|
100
|
+
},
|
|
101
|
+
});
|
|
102
|
+
});
|
|
103
|
+
});
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import Events from "../../../../cloud/Events";
|
|
2
|
+
import ClonesHandler from "../../../../handlers/events/ClonesHandler";
|
|
3
|
+
import Factory from "../../../../../test/factory";
|
|
4
|
+
import { testConfig } from "../../../../../test/handlersHelper";
|
|
5
|
+
|
|
6
|
+
function buildCtx(event) {
|
|
7
|
+
return {
|
|
8
|
+
client: {
|
|
9
|
+
events: new Events(testConfig, "token"),
|
|
10
|
+
},
|
|
11
|
+
params: { parent_id: event.id },
|
|
12
|
+
locale: "en",
|
|
13
|
+
};
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
describe("Clone event", () => {
|
|
17
|
+
test("clone successful", async () => {
|
|
18
|
+
const event = Factory.build("event");
|
|
19
|
+
const ctx = buildCtx(event);
|
|
20
|
+
|
|
21
|
+
const mockClone = jest
|
|
22
|
+
.spyOn(ctx.client.events, "clone")
|
|
23
|
+
.mockImplementation(() => event);
|
|
24
|
+
|
|
25
|
+
const result = await ClonesHandler.create(ctx);
|
|
26
|
+
|
|
27
|
+
expect(mockClone).toHaveBeenCalledWith(event.id, "en");
|
|
28
|
+
|
|
29
|
+
expect(result).toEqual({
|
|
30
|
+
redirect: "/en/events",
|
|
31
|
+
});
|
|
32
|
+
});
|
|
33
|
+
|
|
34
|
+
test("clone failed", async () => {
|
|
35
|
+
const event = Factory.build("event");
|
|
36
|
+
|
|
37
|
+
const ctx = buildCtx(event);
|
|
38
|
+
|
|
39
|
+
const mockClone = jest
|
|
40
|
+
.spyOn(ctx.client.events, "clone")
|
|
41
|
+
.mockImplementation(() => ({
|
|
42
|
+
event: null,
|
|
43
|
+
errors: [{ key: "generalError", message: "some error" }],
|
|
44
|
+
}));
|
|
45
|
+
|
|
46
|
+
expect(async () => {
|
|
47
|
+
await ClonesHandler.create(ctx);
|
|
48
|
+
}).rejects.toThrow(
|
|
49
|
+
`Error cloning event: ${JSON.stringify([{ key: "generalError", message: "some error" }])}`
|
|
50
|
+
);
|
|
51
|
+
|
|
52
|
+
expect(mockClone).toHaveBeenCalledWith(event.id, "en");
|
|
53
|
+
});
|
|
54
|
+
});
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
import DeletesHandler from "../../../../handlers/events/DeletesHandler";
|
|
2
|
+
import Events from "../../../../cloud/Events";
|
|
3
|
+
import Factory from "../../../../../test/factory";
|
|
4
|
+
import { testConfig } from "../../../../../test//handlersHelper";
|
|
5
|
+
|
|
6
|
+
function buildCtx(event, updateSettings) {
|
|
7
|
+
return {
|
|
8
|
+
client: {
|
|
9
|
+
events: new Events(testConfig, "token"),
|
|
10
|
+
},
|
|
11
|
+
params: { parent_id: event.id },
|
|
12
|
+
resourceParams: {
|
|
13
|
+
deleteAction: updateSettings,
|
|
14
|
+
},
|
|
15
|
+
locale: "en",
|
|
16
|
+
};
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
describe("Event delete", () => {
|
|
20
|
+
test("create successful", async () => {
|
|
21
|
+
const event = Factory.build("event");
|
|
22
|
+
const updateSettings = {
|
|
23
|
+
redirect: "301",
|
|
24
|
+
destination: "/test-dest",
|
|
25
|
+
};
|
|
26
|
+
const ctx = buildCtx(event, updateSettings);
|
|
27
|
+
|
|
28
|
+
const mockFind = jest
|
|
29
|
+
.spyOn(ctx.client.events, "find")
|
|
30
|
+
.mockImplementation(() => event);
|
|
31
|
+
|
|
32
|
+
const mockDelete = jest
|
|
33
|
+
.spyOn(ctx.client.events, "delete")
|
|
34
|
+
.mockImplementation(() => ({ event, errors: null }));
|
|
35
|
+
|
|
36
|
+
const result = await DeletesHandler.create(ctx);
|
|
37
|
+
|
|
38
|
+
expect(mockFind).toHaveBeenCalledWith(event.id, "en");
|
|
39
|
+
expect(mockDelete).toHaveBeenCalledWith(event.id, "en", {
|
|
40
|
+
url: `/${event.slug}`,
|
|
41
|
+
destination: updateSettings.destination,
|
|
42
|
+
httpResponseCode: 301,
|
|
43
|
+
note: "Created via event deletion process",
|
|
44
|
+
});
|
|
45
|
+
|
|
46
|
+
expect(result).toEqual({
|
|
47
|
+
redirect: "/en/events",
|
|
48
|
+
});
|
|
49
|
+
});
|
|
50
|
+
|
|
51
|
+
test("create failed due to redirect create", async () => {
|
|
52
|
+
const event = Factory.build("event");
|
|
53
|
+
const updateSettings = {
|
|
54
|
+
redirect: "410",
|
|
55
|
+
destination: "/test-dest",
|
|
56
|
+
};
|
|
57
|
+
const ctx = buildCtx(event, updateSettings);
|
|
58
|
+
|
|
59
|
+
const mockFind = jest
|
|
60
|
+
.spyOn(ctx.client.events, "find")
|
|
61
|
+
.mockImplementation(() => event);
|
|
62
|
+
|
|
63
|
+
const mockDelete = jest
|
|
64
|
+
.spyOn(ctx.client.events, "delete")
|
|
65
|
+
.mockImplementation(() => ({
|
|
66
|
+
event: null,
|
|
67
|
+
errors: [
|
|
68
|
+
{
|
|
69
|
+
codes: [],
|
|
70
|
+
key: "generalError",
|
|
71
|
+
message: "url: has already been taken",
|
|
72
|
+
},
|
|
73
|
+
],
|
|
74
|
+
}));
|
|
75
|
+
|
|
76
|
+
const result = await DeletesHandler.create(ctx);
|
|
77
|
+
|
|
78
|
+
expect(mockFind).toHaveBeenCalledWith(event.id, "en");
|
|
79
|
+
expect(mockDelete).toHaveBeenCalledWith(event.id, "en", {
|
|
80
|
+
url: `/${event.slug}`,
|
|
81
|
+
destination: "/",
|
|
82
|
+
httpResponseCode: 410,
|
|
83
|
+
note: "Created via event deletion process",
|
|
84
|
+
});
|
|
85
|
+
|
|
86
|
+
expect(result).toEqual({
|
|
87
|
+
assigns: {
|
|
88
|
+
deleteAction: { ...updateSettings, id: event.id },
|
|
89
|
+
errors: {
|
|
90
|
+
deleteAction: { redirect: "url: has already been taken" },
|
|
91
|
+
},
|
|
92
|
+
_translations: [],
|
|
93
|
+
},
|
|
94
|
+
});
|
|
95
|
+
});
|
|
96
|
+
|
|
97
|
+
test("create for non existing event", async () => {
|
|
98
|
+
const ctx = buildCtx({ id: "42" }, {});
|
|
99
|
+
|
|
100
|
+
const mockFind = jest
|
|
101
|
+
.spyOn(ctx.client.events, "find")
|
|
102
|
+
.mockImplementation(() => null);
|
|
103
|
+
|
|
104
|
+
expect(async () => {
|
|
105
|
+
await DeletesHandler.create(ctx);
|
|
106
|
+
}).rejects.toThrow("Missing event #42");
|
|
107
|
+
|
|
108
|
+
expect(mockFind).toHaveBeenCalledWith("42", "en");
|
|
109
|
+
});
|
|
110
|
+
});
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import DeletesHandler from "../../../../handlers/events/DeletesHandler";
|
|
2
|
+
import Events from "../../../../cloud/Events";
|
|
3
|
+
import Factory from "../../../../../test/factory";
|
|
4
|
+
import { testConfig } from "../../../../../test//handlersHelper";
|
|
5
|
+
|
|
6
|
+
function buildCtx(event) {
|
|
7
|
+
return {
|
|
8
|
+
client: {
|
|
9
|
+
events: new Events(testConfig, "token"),
|
|
10
|
+
},
|
|
11
|
+
params: { parent_id: event.id },
|
|
12
|
+
locale: "en",
|
|
13
|
+
};
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
describe("Event delete", () => {
|
|
17
|
+
test("create_form for existing event", async () => {
|
|
18
|
+
const event = Factory.build("event");
|
|
19
|
+
const ctx = buildCtx(event);
|
|
20
|
+
|
|
21
|
+
const mockFind = jest
|
|
22
|
+
.spyOn(ctx.client.events, "find")
|
|
23
|
+
.mockImplementation(() => event);
|
|
24
|
+
|
|
25
|
+
const result = await DeletesHandler.create_form(ctx);
|
|
26
|
+
|
|
27
|
+
expect(mockFind).toHaveBeenCalledWith(event.id, "en");
|
|
28
|
+
|
|
29
|
+
expect(result).toEqual({
|
|
30
|
+
assigns: {
|
|
31
|
+
deleteAction: {
|
|
32
|
+
id: event.id,
|
|
33
|
+
redirect: "",
|
|
34
|
+
},
|
|
35
|
+
errors: {},
|
|
36
|
+
_translations: [],
|
|
37
|
+
},
|
|
38
|
+
});
|
|
39
|
+
});
|
|
40
|
+
|
|
41
|
+
test("create_form for non existing event", async () => {
|
|
42
|
+
const ctx = buildCtx({ id: "42" });
|
|
43
|
+
|
|
44
|
+
const mockFind = jest
|
|
45
|
+
.spyOn(ctx.client.events, "find")
|
|
46
|
+
.mockImplementation(() => null);
|
|
47
|
+
|
|
48
|
+
expect(async () => {
|
|
49
|
+
await DeletesHandler.create_form(ctx);
|
|
50
|
+
}).rejects.toThrow("Missing event #42");
|
|
51
|
+
|
|
52
|
+
expect(mockFind).toHaveBeenCalledWith("42", "en");
|
|
53
|
+
});
|
|
54
|
+
});
|
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
import EventsHandler from "../../../../handlers/events/EventsHandler";
|
|
2
|
+
import Events from "../../../../cloud/Events";
|
|
3
|
+
import Tags from "../../../../cloud/Tags";
|
|
4
|
+
import { testConfig } from "../../../../../test/handlersHelper";
|
|
5
|
+
import Factory from "../../../../../test/factory";
|
|
6
|
+
|
|
7
|
+
describe("Events Handler", () => {
|
|
8
|
+
function buildCtx(params) {
|
|
9
|
+
return {
|
|
10
|
+
client: {
|
|
11
|
+
events: new Events(testConfig, "token"),
|
|
12
|
+
tags: new Tags(testConfig, "token"),
|
|
13
|
+
},
|
|
14
|
+
resourceParams: {
|
|
15
|
+
event: params,
|
|
16
|
+
},
|
|
17
|
+
locale: "en",
|
|
18
|
+
};
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
test("create successfull", async () => {
|
|
22
|
+
const tag = Factory.build("tag");
|
|
23
|
+
const params = {
|
|
24
|
+
title: "event title",
|
|
25
|
+
slug: "url",
|
|
26
|
+
visibility: "public",
|
|
27
|
+
publish_at: "2024-10-10T06:40",
|
|
28
|
+
starts_at: "2024-10-10T06:50",
|
|
29
|
+
ends_at: "2024-10-10T06:59",
|
|
30
|
+
layout: "default",
|
|
31
|
+
meta_title: "Meta title",
|
|
32
|
+
meta_description: "Meta description",
|
|
33
|
+
meta_image: JSON.stringify({ id: 42 }),
|
|
34
|
+
username: "admin",
|
|
35
|
+
password: "admin123!@#",
|
|
36
|
+
tags: [tag.id],
|
|
37
|
+
};
|
|
38
|
+
|
|
39
|
+
const ctx = buildCtx(params);
|
|
40
|
+
|
|
41
|
+
const mockedCreate = jest
|
|
42
|
+
.spyOn(ctx.client.events, "create")
|
|
43
|
+
.mockImplementation(() => ({ event: {}, errors: null }));
|
|
44
|
+
|
|
45
|
+
const result = await EventsHandler.create(ctx);
|
|
46
|
+
|
|
47
|
+
expect(mockedCreate).toHaveBeenCalledWith(
|
|
48
|
+
{
|
|
49
|
+
title: params.title,
|
|
50
|
+
slug: params.slug,
|
|
51
|
+
visibility: params.visibility,
|
|
52
|
+
publishAt: "2024-10-10T03:40:00Z",
|
|
53
|
+
startsAt: "2024-10-10T03:50:00Z",
|
|
54
|
+
endsAt: "2024-10-10T03:59:00Z",
|
|
55
|
+
settings: {
|
|
56
|
+
layout: params.layout,
|
|
57
|
+
meta: {
|
|
58
|
+
title: params.meta_title,
|
|
59
|
+
description: params.meta_description,
|
|
60
|
+
image: JSON.parse(params.meta_image || "{}"),
|
|
61
|
+
},
|
|
62
|
+
credentials: {
|
|
63
|
+
user: params.username,
|
|
64
|
+
password: params.password,
|
|
65
|
+
},
|
|
66
|
+
},
|
|
67
|
+
widgets: [],
|
|
68
|
+
tags: params.tags,
|
|
69
|
+
categories: [],
|
|
70
|
+
},
|
|
71
|
+
"en",
|
|
72
|
+
"event"
|
|
73
|
+
);
|
|
74
|
+
|
|
75
|
+
expect(result).toEqual({
|
|
76
|
+
redirect: "/en/events",
|
|
77
|
+
});
|
|
78
|
+
});
|
|
79
|
+
|
|
80
|
+
test("create failed", async () => {
|
|
81
|
+
const tag = Factory.build("tag");
|
|
82
|
+
const params = {
|
|
83
|
+
title: "event title",
|
|
84
|
+
slug: "",
|
|
85
|
+
publish_at: "2024-10-10T06:40",
|
|
86
|
+
starts_at: "2024-10-10T06:50",
|
|
87
|
+
ends_at: "2024-10-10T06:59",
|
|
88
|
+
visibility: "public",
|
|
89
|
+
layout: "default",
|
|
90
|
+
meta_title: "Meta title",
|
|
91
|
+
meta_description: "Meta description",
|
|
92
|
+
meta_image: JSON.stringify({ id: 42 }),
|
|
93
|
+
username: "admin",
|
|
94
|
+
password: "admin123!@#",
|
|
95
|
+
tags: [tag.id],
|
|
96
|
+
};
|
|
97
|
+
|
|
98
|
+
const ctx = buildCtx(params);
|
|
99
|
+
|
|
100
|
+
const mockedTagsList = jest
|
|
101
|
+
.spyOn(ctx.client.tags, "all")
|
|
102
|
+
.mockImplementation(() => ({ list: [tag] }));
|
|
103
|
+
|
|
104
|
+
const mockedCreate = jest
|
|
105
|
+
.spyOn(ctx.client.events, "create")
|
|
106
|
+
.mockImplementation(() => ({
|
|
107
|
+
event: {},
|
|
108
|
+
errors: [{ key: "slug", message: "cannot be blank" }],
|
|
109
|
+
}));
|
|
110
|
+
|
|
111
|
+
const result = await EventsHandler.create(ctx);
|
|
112
|
+
|
|
113
|
+
expect(mockedTagsList).toHaveBeenCalledWith("en");
|
|
114
|
+
expect(mockedCreate).toHaveBeenCalledWith(
|
|
115
|
+
{
|
|
116
|
+
title: params.title,
|
|
117
|
+
slug: "",
|
|
118
|
+
visibility: params.visibility,
|
|
119
|
+
publishAt: "2024-10-10T03:40:00Z",
|
|
120
|
+
startsAt: "2024-10-10T03:50:00Z",
|
|
121
|
+
endsAt: "2024-10-10T03:59:00Z",
|
|
122
|
+
settings: {
|
|
123
|
+
layout: params.layout,
|
|
124
|
+
meta: {
|
|
125
|
+
title: params.meta_title,
|
|
126
|
+
description: params.meta_description,
|
|
127
|
+
image: JSON.parse(params.meta_image || "{}"),
|
|
128
|
+
},
|
|
129
|
+
credentials: {
|
|
130
|
+
user: params.username,
|
|
131
|
+
password: params.password,
|
|
132
|
+
},
|
|
133
|
+
},
|
|
134
|
+
widgets: [],
|
|
135
|
+
tags: params.tags,
|
|
136
|
+
categories: [],
|
|
137
|
+
},
|
|
138
|
+
"en",
|
|
139
|
+
"event"
|
|
140
|
+
);
|
|
141
|
+
|
|
142
|
+
expect(result).toEqual({
|
|
143
|
+
assigns: {
|
|
144
|
+
event: { ...params, meta_image: JSON.parse(params.meta_image) },
|
|
145
|
+
tags: [tag],
|
|
146
|
+
errors: { event: { slug: "cannot be blank" } },
|
|
147
|
+
visibilityOptions: ctx.client.events.visibilityOptions(),
|
|
148
|
+
_translations: [],
|
|
149
|
+
},
|
|
150
|
+
});
|
|
151
|
+
});
|
|
152
|
+
});
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import EventsHandler from "../../../../handlers/events/EventsHandler";
|
|
2
|
+
import Events from "../../../../cloud/Events";
|
|
3
|
+
import Tags from "../../../../cloud/Tags";
|
|
4
|
+
import { testConfig } from "../../../../../test/handlersHelper";
|
|
5
|
+
import Factory from "../../../../../test/factory";
|
|
6
|
+
|
|
7
|
+
describe("Events Handler", () => {
|
|
8
|
+
function buildCtx() {
|
|
9
|
+
return {
|
|
10
|
+
client: {
|
|
11
|
+
events: new Events(testConfig, "token"),
|
|
12
|
+
tags: new Tags(testConfig, "token"),
|
|
13
|
+
},
|
|
14
|
+
query: { foo: "bar" },
|
|
15
|
+
locale: "en",
|
|
16
|
+
};
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
test("index", async () => {
|
|
20
|
+
const tags = [Factory.build("tag")];
|
|
21
|
+
const ctx = buildCtx();
|
|
22
|
+
|
|
23
|
+
const mockedTagList = jest
|
|
24
|
+
.spyOn(ctx.client.tags, "all")
|
|
25
|
+
.mockImplementation(() => ({ list: tags, pagination: null }));
|
|
26
|
+
|
|
27
|
+
const result = await EventsHandler.create_form(ctx);
|
|
28
|
+
|
|
29
|
+
expect(mockedTagList).toHaveBeenCalledWith("en");
|
|
30
|
+
|
|
31
|
+
expect(result).toEqual({
|
|
32
|
+
assigns: {
|
|
33
|
+
event: { ...ctx.client.events.defaults(), meta_image: {} },
|
|
34
|
+
tags: tags,
|
|
35
|
+
errors: {},
|
|
36
|
+
visibilityOptions: ctx.client.events.visibilityOptions(),
|
|
37
|
+
_translations: [],
|
|
38
|
+
},
|
|
39
|
+
});
|
|
40
|
+
});
|
|
41
|
+
});
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import EventsHandler from "../../../../handlers/events/EventsHandler";
|
|
2
|
+
import Events from "../../../../cloud/Events";
|
|
3
|
+
import Tags from "../../../../cloud/Tags";
|
|
4
|
+
import { testConfig } from "../../../../../test/handlersHelper";
|
|
5
|
+
import Factory from "../../../../../test/factory";
|
|
6
|
+
|
|
7
|
+
describe("Events Handler", () => {
|
|
8
|
+
function buildCtx() {
|
|
9
|
+
return {
|
|
10
|
+
client: {
|
|
11
|
+
events: new Events(testConfig, "token"),
|
|
12
|
+
tags: new Tags(testConfig, "token"),
|
|
13
|
+
},
|
|
14
|
+
query: { foo: "bar" },
|
|
15
|
+
locale: "en",
|
|
16
|
+
};
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
test("index", async () => {
|
|
20
|
+
const event = Factory.build("event");
|
|
21
|
+
const pagination = Factory.build("pagination");
|
|
22
|
+
const tags = [Factory.build("tag")];
|
|
23
|
+
const ctx = buildCtx();
|
|
24
|
+
|
|
25
|
+
const mockedEventList = jest
|
|
26
|
+
.spyOn(ctx.client.events, "list")
|
|
27
|
+
.mockImplementation(() => ({ list: [event], pagination }));
|
|
28
|
+
|
|
29
|
+
const mockedTagList = jest
|
|
30
|
+
.spyOn(ctx.client.tags, "all")
|
|
31
|
+
.mockImplementation(() => ({ list: tags, pagination: null }));
|
|
32
|
+
|
|
33
|
+
const result = await EventsHandler.index(ctx);
|
|
34
|
+
|
|
35
|
+
expect(mockedEventList).toHaveBeenCalledWith({ foo: "bar" }, "en");
|
|
36
|
+
expect(mockedTagList).toHaveBeenCalledWith("en");
|
|
37
|
+
|
|
38
|
+
expect(result).toEqual({
|
|
39
|
+
assigns: {
|
|
40
|
+
items: {
|
|
41
|
+
list: [event],
|
|
42
|
+
pagination: pagination,
|
|
43
|
+
},
|
|
44
|
+
tags: tags,
|
|
45
|
+
visibilityOptions: ctx.client.events.visibilityOptions(),
|
|
46
|
+
},
|
|
47
|
+
});
|
|
48
|
+
});
|
|
49
|
+
});
|