@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,136 @@
|
|
|
1
|
+
import PublishesHandler from "../../../../handlers/event_revisions/PublishesHandler";
|
|
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, resourceParams) {
|
|
8
|
+
return {
|
|
9
|
+
client: {
|
|
10
|
+
eventRevisions: new EventRevisions(testConfig, "token"),
|
|
11
|
+
events: new Events(testConfig, "token"),
|
|
12
|
+
},
|
|
13
|
+
params: { parent_id: revision.id },
|
|
14
|
+
resourceParams,
|
|
15
|
+
locale: "en",
|
|
16
|
+
};
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
describe("Publish event revision", () => {
|
|
20
|
+
test("create successful", async () => {
|
|
21
|
+
const revision = Factory.build("event_revision");
|
|
22
|
+
const publishing = {
|
|
23
|
+
title: "A new revision!",
|
|
24
|
+
description: "Nice!",
|
|
25
|
+
visibility: "protected",
|
|
26
|
+
username: "admin",
|
|
27
|
+
password: "admin123!@#",
|
|
28
|
+
};
|
|
29
|
+
|
|
30
|
+
const ctx = buildCtx(revision, {
|
|
31
|
+
publishing,
|
|
32
|
+
});
|
|
33
|
+
|
|
34
|
+
const updatedEvent = Factory.build("event", {
|
|
35
|
+
id: revision.originalId,
|
|
36
|
+
settings: {
|
|
37
|
+
credentials: {
|
|
38
|
+
user: "admin",
|
|
39
|
+
password: "admin123!@#",
|
|
40
|
+
},
|
|
41
|
+
},
|
|
42
|
+
});
|
|
43
|
+
|
|
44
|
+
const mockFind = jest
|
|
45
|
+
.spyOn(ctx.client.eventRevisions, "find")
|
|
46
|
+
.mockImplementation(() => revision);
|
|
47
|
+
|
|
48
|
+
const mockPublish = jest
|
|
49
|
+
.spyOn(ctx.client.eventRevisions, "publish")
|
|
50
|
+
.mockImplementation(() => ({ event: updatedEvent, errors: null }));
|
|
51
|
+
|
|
52
|
+
const result = await PublishesHandler.create(ctx);
|
|
53
|
+
|
|
54
|
+
expect(mockFind).toHaveBeenCalledWith(revision.id, "en");
|
|
55
|
+
expect(mockPublish).toHaveBeenCalledWith(
|
|
56
|
+
revision.id,
|
|
57
|
+
"en",
|
|
58
|
+
{
|
|
59
|
+
title: publishing.title,
|
|
60
|
+
description: publishing.description,
|
|
61
|
+
},
|
|
62
|
+
{
|
|
63
|
+
visibility: publishing.visibility,
|
|
64
|
+
settings: JSON.stringify({
|
|
65
|
+
...revision.settings,
|
|
66
|
+
credentials: {
|
|
67
|
+
user: publishing.username,
|
|
68
|
+
password: publishing.password,
|
|
69
|
+
},
|
|
70
|
+
}),
|
|
71
|
+
}
|
|
72
|
+
);
|
|
73
|
+
|
|
74
|
+
expect(result).toEqual({
|
|
75
|
+
redirect: `/en/events/${updatedEvent.id}`,
|
|
76
|
+
});
|
|
77
|
+
});
|
|
78
|
+
|
|
79
|
+
test("create failed", async () => {
|
|
80
|
+
const revision = Factory.build("event_revision");
|
|
81
|
+
const publishing = {
|
|
82
|
+
title: "A new revision!",
|
|
83
|
+
description: "Nice!",
|
|
84
|
+
visibility: "public",
|
|
85
|
+
};
|
|
86
|
+
|
|
87
|
+
const ctx = buildCtx(revision, {
|
|
88
|
+
publishing,
|
|
89
|
+
});
|
|
90
|
+
|
|
91
|
+
const mockFind = jest
|
|
92
|
+
.spyOn(ctx.client.eventRevisions, "find")
|
|
93
|
+
.mockImplementation(() => revision);
|
|
94
|
+
|
|
95
|
+
const mockPublish = jest
|
|
96
|
+
.spyOn(ctx.client.eventRevisions, "publish")
|
|
97
|
+
.mockImplementation(() => ({
|
|
98
|
+
event: null,
|
|
99
|
+
errors: [{ key: "url", message: "Oops" }],
|
|
100
|
+
}));
|
|
101
|
+
|
|
102
|
+
const result = await PublishesHandler.create(ctx);
|
|
103
|
+
|
|
104
|
+
expect(mockFind).toHaveBeenCalledWith(revision.id, "en");
|
|
105
|
+
expect(mockPublish).toHaveBeenCalledWith(
|
|
106
|
+
revision.id,
|
|
107
|
+
"en",
|
|
108
|
+
{
|
|
109
|
+
title: publishing.title,
|
|
110
|
+
description: publishing.description,
|
|
111
|
+
},
|
|
112
|
+
{
|
|
113
|
+
visibility: publishing.visibility,
|
|
114
|
+
}
|
|
115
|
+
);
|
|
116
|
+
|
|
117
|
+
expect(result).toEqual({
|
|
118
|
+
assigns: {
|
|
119
|
+
publishing: {
|
|
120
|
+
id: revision.id,
|
|
121
|
+
originalId: revision.originalId,
|
|
122
|
+
title: publishing.title,
|
|
123
|
+
description: publishing.description,
|
|
124
|
+
visibility: publishing.visibility,
|
|
125
|
+
username: publishing.username,
|
|
126
|
+
password: publishing.password,
|
|
127
|
+
},
|
|
128
|
+
visibilityOptions: ctx.client.events.visibilityOptions(),
|
|
129
|
+
errors: {
|
|
130
|
+
url: "Oops",
|
|
131
|
+
},
|
|
132
|
+
_translations: [],
|
|
133
|
+
},
|
|
134
|
+
});
|
|
135
|
+
});
|
|
136
|
+
});
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import PublishesHandler from "../../../../handlers/event_revisions/PublishesHandler";
|
|
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("Publish event revision", () => {
|
|
19
|
+
test("create_form", async () => {
|
|
20
|
+
const revision = Factory.build("event_revision");
|
|
21
|
+
const ctx = buildCtx(revision);
|
|
22
|
+
const mockFind = jest
|
|
23
|
+
.spyOn(ctx.client.eventRevisions, "find")
|
|
24
|
+
.mockImplementation(() => revision);
|
|
25
|
+
|
|
26
|
+
const result = await PublishesHandler.create_form(ctx);
|
|
27
|
+
|
|
28
|
+
expect(mockFind).toHaveBeenCalledWith(revision.id, "en");
|
|
29
|
+
|
|
30
|
+
expect(result).toEqual({
|
|
31
|
+
assigns: {
|
|
32
|
+
publishing: {
|
|
33
|
+
id: revision.id,
|
|
34
|
+
originalId: revision.originalId,
|
|
35
|
+
title: revision.meta.title,
|
|
36
|
+
description: revision.meta.description,
|
|
37
|
+
visibility: revision.visibility,
|
|
38
|
+
username: revision.settings?.credentials?.user,
|
|
39
|
+
password: revision.settings?.credentials?.password,
|
|
40
|
+
},
|
|
41
|
+
visibilityOptions: ctx.client.events.visibilityOptions(),
|
|
42
|
+
errors: {},
|
|
43
|
+
_translations: [],
|
|
44
|
+
},
|
|
45
|
+
});
|
|
46
|
+
});
|
|
47
|
+
});
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
import RevertsHandler from "../../../../handlers/event_revisions/RevertsHandler";
|
|
2
|
+
import EventRevisions from "../../../../cloud/EventRevisions";
|
|
3
|
+
import { testConfig } from "../../../../../test/handlersHelper";
|
|
4
|
+
|
|
5
|
+
function buildCtx(eventID, version) {
|
|
6
|
+
return {
|
|
7
|
+
client: {
|
|
8
|
+
eventRevisions: new EventRevisions(testConfig, "token"),
|
|
9
|
+
},
|
|
10
|
+
params: { parent_id: eventID },
|
|
11
|
+
resourceParams: { version },
|
|
12
|
+
locale: "en",
|
|
13
|
+
};
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
describe("Event revision revert", () => {
|
|
17
|
+
test("create successful", async () => {
|
|
18
|
+
const eventId = 42;
|
|
19
|
+
const version = 2;
|
|
20
|
+
const ctx = buildCtx(eventId, version);
|
|
21
|
+
|
|
22
|
+
const mockRevert = jest
|
|
23
|
+
.spyOn(ctx.client.eventRevisions, "revert")
|
|
24
|
+
.mockImplementation(() => ({
|
|
25
|
+
revision: {},
|
|
26
|
+
errors: null,
|
|
27
|
+
eventErrors: null,
|
|
28
|
+
}));
|
|
29
|
+
|
|
30
|
+
const result = await RevertsHandler.create(ctx);
|
|
31
|
+
|
|
32
|
+
expect(mockRevert).toHaveBeenCalledWith(eventId, version, "en");
|
|
33
|
+
|
|
34
|
+
expect(result).toEqual({
|
|
35
|
+
redirect: `/en/events/${eventId}`,
|
|
36
|
+
});
|
|
37
|
+
});
|
|
38
|
+
|
|
39
|
+
test("create failed with errors", async () => {
|
|
40
|
+
const eventId = 42;
|
|
41
|
+
const version = 2;
|
|
42
|
+
const ctx = buildCtx(eventId, version);
|
|
43
|
+
const errors = [{ key: "generalError", message: "Some error" }];
|
|
44
|
+
|
|
45
|
+
const mockRevert = jest
|
|
46
|
+
.spyOn(ctx.client.eventRevisions, "revert")
|
|
47
|
+
.mockImplementation(() => ({
|
|
48
|
+
revision: null,
|
|
49
|
+
errors: errors,
|
|
50
|
+
eventErrors: null,
|
|
51
|
+
}));
|
|
52
|
+
|
|
53
|
+
expect(async () => {
|
|
54
|
+
await RevertsHandler.create(ctx);
|
|
55
|
+
}).rejects.toThrow(`Failed to start revision: ${JSON.stringify(errors)}`);
|
|
56
|
+
|
|
57
|
+
expect(mockRevert).toHaveBeenCalledWith(eventId, version, "en");
|
|
58
|
+
});
|
|
59
|
+
|
|
60
|
+
test("create failed with event errors", async () => {
|
|
61
|
+
const eventId = 42;
|
|
62
|
+
const version = 2;
|
|
63
|
+
const ctx = buildCtx(eventId, version);
|
|
64
|
+
const errors = [{ key: "generalError", message: "Some error" }];
|
|
65
|
+
|
|
66
|
+
const mockRevert = jest
|
|
67
|
+
.spyOn(ctx.client.eventRevisions, "revert")
|
|
68
|
+
.mockImplementation(() => ({
|
|
69
|
+
revision: null,
|
|
70
|
+
errors: null,
|
|
71
|
+
eventErrors: errors,
|
|
72
|
+
}));
|
|
73
|
+
|
|
74
|
+
expect(async () => {
|
|
75
|
+
await RevertsHandler.create(ctx);
|
|
76
|
+
}).rejects.toThrow(`Failed to start revision: ${JSON.stringify(errors)}`);
|
|
77
|
+
|
|
78
|
+
expect(mockRevert).toHaveBeenCalledWith(eventId, version, "en");
|
|
79
|
+
});
|
|
80
|
+
});
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import TagHandler from "../../../../handlers/event_revisions/TagHandler";
|
|
2
|
+
import EventRevisions from "../../../../cloud/EventRevisions";
|
|
3
|
+
import Tags from "../../../../cloud/Tags";
|
|
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
|
+
tags: new Tags(testConfig, "token"),
|
|
12
|
+
},
|
|
13
|
+
params: { parent_id: revision.id },
|
|
14
|
+
locale: "en",
|
|
15
|
+
};
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
describe("Event revision tags settings", () => {
|
|
19
|
+
test("edit_form when a revision exists", async () => {
|
|
20
|
+
const tags = [
|
|
21
|
+
Factory.build("tag", { id: 42 }),
|
|
22
|
+
Factory.build("tag", { id: 69 }),
|
|
23
|
+
];
|
|
24
|
+
const revision = Factory.build("event_revision", { tags: [tags[0]] });
|
|
25
|
+
const ctx = buildCtx(revision);
|
|
26
|
+
|
|
27
|
+
const mockFind = jest
|
|
28
|
+
.spyOn(ctx.client.eventRevisions, "find")
|
|
29
|
+
.mockImplementation(() => revision);
|
|
30
|
+
|
|
31
|
+
const mockTags = jest
|
|
32
|
+
.spyOn(ctx.client.tags, "all")
|
|
33
|
+
.mockImplementation(() => ({
|
|
34
|
+
list: tags,
|
|
35
|
+
}));
|
|
36
|
+
|
|
37
|
+
const result = await TagHandler.edit_form(ctx);
|
|
38
|
+
|
|
39
|
+
expect(mockFind).toHaveBeenCalledWith(revision.id, "en");
|
|
40
|
+
expect(mockTags).toHaveBeenCalledWith("en");
|
|
41
|
+
|
|
42
|
+
expect(result).toEqual({
|
|
43
|
+
assigns: {
|
|
44
|
+
tag_settings: {
|
|
45
|
+
id: revision.id,
|
|
46
|
+
originalId: revision.originalId,
|
|
47
|
+
tags: revision.tags.map((t) => t.id),
|
|
48
|
+
},
|
|
49
|
+
tags: tags,
|
|
50
|
+
errors: {},
|
|
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 TagHandler.edit_form(ctx);
|
|
65
|
+
}).rejects.toThrow("Missing revision #42");
|
|
66
|
+
|
|
67
|
+
expect(mockFind).toHaveBeenCalledWith("42", "en");
|
|
68
|
+
});
|
|
69
|
+
});
|
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
import TagHandler from "../../../../handlers/event_revisions/TagHandler";
|
|
2
|
+
import EventRevisions from "../../../../cloud/EventRevisions";
|
|
3
|
+
import Tags from "../../../../cloud/Tags";
|
|
4
|
+
import { testConfig } from "../../../../../test/handlersHelper";
|
|
5
|
+
import Factory from "../../../../../test/factory";
|
|
6
|
+
|
|
7
|
+
function buildCtx(revision, updateSettings) {
|
|
8
|
+
return {
|
|
9
|
+
client: {
|
|
10
|
+
eventRevisions: new EventRevisions(testConfig, "token"),
|
|
11
|
+
tags: new Tags(testConfig, "token"),
|
|
12
|
+
},
|
|
13
|
+
params: { parent_id: revision.id },
|
|
14
|
+
resourceParams: {
|
|
15
|
+
tag_settings: updateSettings,
|
|
16
|
+
},
|
|
17
|
+
locale: "en",
|
|
18
|
+
};
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
describe("Event revision tags settings", () => {
|
|
22
|
+
test("update successful", async () => {
|
|
23
|
+
const tags = [
|
|
24
|
+
Factory.build("tag", { id: 42 }),
|
|
25
|
+
Factory.build("tag", { id: 69 }),
|
|
26
|
+
];
|
|
27
|
+
const revision = Factory.build("event_revision", { tags: [tags[0]] });
|
|
28
|
+
|
|
29
|
+
const updateSettings = {
|
|
30
|
+
tags: [tags.map((t) => t.id)],
|
|
31
|
+
};
|
|
32
|
+
|
|
33
|
+
const ctx = buildCtx(revision, updateSettings);
|
|
34
|
+
|
|
35
|
+
const mockFind = jest
|
|
36
|
+
.spyOn(ctx.client.eventRevisions, "find")
|
|
37
|
+
.mockImplementation(() => revision);
|
|
38
|
+
|
|
39
|
+
const mockUpdate = jest
|
|
40
|
+
.spyOn(ctx.client.eventRevisions, "update")
|
|
41
|
+
.mockImplementation(() => ({
|
|
42
|
+
revision: {},
|
|
43
|
+
errors: null,
|
|
44
|
+
}));
|
|
45
|
+
|
|
46
|
+
const result = await TagHandler.update(ctx);
|
|
47
|
+
|
|
48
|
+
expect(mockFind).toHaveBeenCalledWith(revision.id, "en");
|
|
49
|
+
expect(mockUpdate).toHaveBeenCalledWith(revision.id, "en", {
|
|
50
|
+
slug: revision.slug,
|
|
51
|
+
title: revision.title,
|
|
52
|
+
visibility: revision.visibility,
|
|
53
|
+
publishAt: revision.publishAt,
|
|
54
|
+
startsAt: revision.startsAt,
|
|
55
|
+
endsAt: revision.endsAt,
|
|
56
|
+
widgets: JSON.stringify(revision.widgets),
|
|
57
|
+
tags: updateSettings.tags,
|
|
58
|
+
categories: revision.categories.map((c) => c.id),
|
|
59
|
+
settings: JSON.stringify(revision.settings),
|
|
60
|
+
});
|
|
61
|
+
|
|
62
|
+
expect(result).toEqual({
|
|
63
|
+
redirect: `/en/event_revisions/${revision.id}/tags/edit`,
|
|
64
|
+
});
|
|
65
|
+
});
|
|
66
|
+
|
|
67
|
+
test("update failed", async () => {
|
|
68
|
+
const tags = [
|
|
69
|
+
Factory.build("tag", { id: 42 }),
|
|
70
|
+
Factory.build("tag", { id: 69 }),
|
|
71
|
+
];
|
|
72
|
+
const revision = Factory.build("event_revision", { tags: [tags[0]] });
|
|
73
|
+
|
|
74
|
+
const updateSettings = {
|
|
75
|
+
tags: [tags.map((t) => t.id)],
|
|
76
|
+
};
|
|
77
|
+
|
|
78
|
+
const ctx = buildCtx(revision, updateSettings);
|
|
79
|
+
|
|
80
|
+
const mockFind = jest
|
|
81
|
+
.spyOn(ctx.client.eventRevisions, "find")
|
|
82
|
+
.mockImplementation(() => revision);
|
|
83
|
+
|
|
84
|
+
const mockUpdate = jest
|
|
85
|
+
.spyOn(ctx.client.eventRevisions, "update")
|
|
86
|
+
.mockImplementation(() => ({
|
|
87
|
+
revision: {},
|
|
88
|
+
errors: [{ key: "generalError", message: "some error" }],
|
|
89
|
+
}));
|
|
90
|
+
|
|
91
|
+
const mockTags = jest
|
|
92
|
+
.spyOn(ctx.client.tags, "all")
|
|
93
|
+
.mockImplementation(() => ({
|
|
94
|
+
list: tags,
|
|
95
|
+
}));
|
|
96
|
+
|
|
97
|
+
const result = await TagHandler.update(ctx);
|
|
98
|
+
|
|
99
|
+
expect(mockFind).toHaveBeenCalledWith(revision.id, "en");
|
|
100
|
+
expect(mockUpdate).toHaveBeenCalledWith(revision.id, "en", {
|
|
101
|
+
slug: revision.slug,
|
|
102
|
+
title: revision.title,
|
|
103
|
+
visibility: revision.visibility,
|
|
104
|
+
publishAt: revision.publishAt,
|
|
105
|
+
startsAt: revision.startsAt,
|
|
106
|
+
endsAt: revision.endsAt,
|
|
107
|
+
widgets: JSON.stringify(revision.widgets),
|
|
108
|
+
tags: updateSettings.tags,
|
|
109
|
+
categories: revision.categories.map((c) => c.id),
|
|
110
|
+
settings: JSON.stringify(revision.settings),
|
|
111
|
+
});
|
|
112
|
+
expect(mockTags).toHaveBeenCalledWith("en");
|
|
113
|
+
|
|
114
|
+
expect(result).toEqual({
|
|
115
|
+
assigns: {
|
|
116
|
+
tag_settings: {
|
|
117
|
+
...updateSettings,
|
|
118
|
+
id: revision.id,
|
|
119
|
+
originalId: revision.originalId,
|
|
120
|
+
},
|
|
121
|
+
errors: {
|
|
122
|
+
tag_settings: { generalError: "some error" },
|
|
123
|
+
},
|
|
124
|
+
tags: tags,
|
|
125
|
+
_translations: [],
|
|
126
|
+
},
|
|
127
|
+
});
|
|
128
|
+
});
|
|
129
|
+
|
|
130
|
+
test("update when a revision does not exist", async () => {
|
|
131
|
+
const revision = Factory.build("event_revision");
|
|
132
|
+
|
|
133
|
+
const updateSettings = {};
|
|
134
|
+
|
|
135
|
+
const ctx = buildCtx(revision, updateSettings);
|
|
136
|
+
|
|
137
|
+
const mockFind = jest
|
|
138
|
+
.spyOn(ctx.client.eventRevisions, "find")
|
|
139
|
+
.mockImplementation(() => null);
|
|
140
|
+
|
|
141
|
+
expect(async () => {
|
|
142
|
+
await TagHandler.update(ctx);
|
|
143
|
+
}).rejects.toThrow(`Missing revision #${revision.id}`);
|
|
144
|
+
|
|
145
|
+
expect(mockFind).toHaveBeenCalledWith(revision.id, "en");
|
|
146
|
+
});
|
|
147
|
+
});
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import VisualHandler from "../../../../handlers/event_revisions/VisualHandler";
|
|
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 visuals 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 VisualHandler.edit_form(ctx);
|
|
26
|
+
|
|
27
|
+
expect(mockFind).toHaveBeenCalledWith(revision.id, "en");
|
|
28
|
+
|
|
29
|
+
expect(result).toEqual({
|
|
30
|
+
assigns: {
|
|
31
|
+
visual_settings: {
|
|
32
|
+
id: revision.id,
|
|
33
|
+
originalId: revision.originalId,
|
|
34
|
+
layout: revision.settings.layout,
|
|
35
|
+
},
|
|
36
|
+
errors: {},
|
|
37
|
+
_translations: [],
|
|
38
|
+
},
|
|
39
|
+
});
|
|
40
|
+
});
|
|
41
|
+
|
|
42
|
+
test("edit_form when a revision does not exist", async () => {
|
|
43
|
+
const ctx = buildCtx({ id: "42" });
|
|
44
|
+
|
|
45
|
+
const mockFind = jest
|
|
46
|
+
.spyOn(ctx.client.eventRevisions, "find")
|
|
47
|
+
.mockImplementation(() => null);
|
|
48
|
+
|
|
49
|
+
expect(async () => {
|
|
50
|
+
await VisualHandler.edit_form(ctx);
|
|
51
|
+
}).rejects.toThrow("Missing revision #42");
|
|
52
|
+
|
|
53
|
+
expect(mockFind).toHaveBeenCalledWith("42", "en");
|
|
54
|
+
});
|
|
55
|
+
});
|
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
import VisualHandler from "../../../../handlers/event_revisions/VisualHandler";
|
|
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
|
+
visual_settings: updateSettings,
|
|
14
|
+
},
|
|
15
|
+
locale: "en",
|
|
16
|
+
};
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
describe("Event revision visuals settings", () => {
|
|
20
|
+
test("update successful", async () => {
|
|
21
|
+
const revision = Factory.build("event_revision");
|
|
22
|
+
|
|
23
|
+
const updateSettings = {
|
|
24
|
+
layout: "bla",
|
|
25
|
+
};
|
|
26
|
+
|
|
27
|
+
const ctx = buildCtx(revision, updateSettings);
|
|
28
|
+
|
|
29
|
+
const mockFind = jest
|
|
30
|
+
.spyOn(ctx.client.eventRevisions, "find")
|
|
31
|
+
.mockImplementation(() => revision);
|
|
32
|
+
|
|
33
|
+
const mockUpdate = jest
|
|
34
|
+
.spyOn(ctx.client.eventRevisions, "update")
|
|
35
|
+
.mockImplementation(() => ({
|
|
36
|
+
revision: {},
|
|
37
|
+
errors: null,
|
|
38
|
+
}));
|
|
39
|
+
|
|
40
|
+
const result = await VisualHandler.update(ctx);
|
|
41
|
+
|
|
42
|
+
expect(mockFind).toHaveBeenCalledWith(revision.id, "en");
|
|
43
|
+
expect(mockUpdate).toHaveBeenCalledWith(revision.id, "en", {
|
|
44
|
+
slug: revision.slug,
|
|
45
|
+
title: revision.title,
|
|
46
|
+
visibility: revision.visibility,
|
|
47
|
+
publishAt: revision.publishAt,
|
|
48
|
+
startsAt: revision.startsAt,
|
|
49
|
+
endsAt: revision.endsAt,
|
|
50
|
+
widgets: JSON.stringify(revision.widgets),
|
|
51
|
+
tags: revision.tags.map((t) => t.id),
|
|
52
|
+
categories: revision.categories.map((c) => c.id),
|
|
53
|
+
settings: JSON.stringify({
|
|
54
|
+
...revision.settings,
|
|
55
|
+
layout: updateSettings.layout,
|
|
56
|
+
}),
|
|
57
|
+
});
|
|
58
|
+
|
|
59
|
+
expect(result).toEqual({
|
|
60
|
+
redirect: `/en/event_revisions/${revision.id}/visuals/edit`,
|
|
61
|
+
});
|
|
62
|
+
});
|
|
63
|
+
|
|
64
|
+
test("update failed", async () => {
|
|
65
|
+
const revision = Factory.build("event_revision");
|
|
66
|
+
|
|
67
|
+
const updateSettings = {
|
|
68
|
+
layout: "bla",
|
|
69
|
+
};
|
|
70
|
+
|
|
71
|
+
const ctx = buildCtx(revision, updateSettings);
|
|
72
|
+
|
|
73
|
+
const mockFind = jest
|
|
74
|
+
.spyOn(ctx.client.eventRevisions, "find")
|
|
75
|
+
.mockImplementation(() => revision);
|
|
76
|
+
|
|
77
|
+
const mockUpdate = jest
|
|
78
|
+
.spyOn(ctx.client.eventRevisions, "update")
|
|
79
|
+
.mockImplementation(() => ({
|
|
80
|
+
revision: {},
|
|
81
|
+
errors: [{ key: "generalError", message: "some error" }],
|
|
82
|
+
}));
|
|
83
|
+
|
|
84
|
+
const result = await VisualHandler.update(ctx);
|
|
85
|
+
|
|
86
|
+
expect(mockFind).toHaveBeenCalledWith(revision.id, "en");
|
|
87
|
+
expect(mockUpdate).toHaveBeenCalledWith(revision.id, "en", {
|
|
88
|
+
slug: revision.slug,
|
|
89
|
+
title: revision.title,
|
|
90
|
+
visibility: revision.visibility,
|
|
91
|
+
publishAt: revision.publishAt,
|
|
92
|
+
startsAt: revision.startsAt,
|
|
93
|
+
endsAt: revision.endsAt,
|
|
94
|
+
widgets: JSON.stringify(revision.widgets),
|
|
95
|
+
tags: revision.tags.map((t) => t.id),
|
|
96
|
+
categories: revision.categories.map((c) => c.id),
|
|
97
|
+
settings: JSON.stringify({
|
|
98
|
+
...revision.settings,
|
|
99
|
+
layout: updateSettings.layout,
|
|
100
|
+
}),
|
|
101
|
+
});
|
|
102
|
+
|
|
103
|
+
expect(result).toEqual({
|
|
104
|
+
assigns: {
|
|
105
|
+
visual_settings: {
|
|
106
|
+
...updateSettings,
|
|
107
|
+
id: revision.id,
|
|
108
|
+
originalId: revision.originalId,
|
|
109
|
+
},
|
|
110
|
+
errors: {
|
|
111
|
+
visual_settings: { generalError: "some error" },
|
|
112
|
+
},
|
|
113
|
+
_translations: [],
|
|
114
|
+
},
|
|
115
|
+
});
|
|
116
|
+
});
|
|
117
|
+
|
|
118
|
+
test("update when a revision does not exist", async () => {
|
|
119
|
+
const revision = Factory.build("event_revision");
|
|
120
|
+
|
|
121
|
+
const updateSettings = {};
|
|
122
|
+
|
|
123
|
+
const ctx = buildCtx(revision, updateSettings);
|
|
124
|
+
|
|
125
|
+
const mockFind = jest
|
|
126
|
+
.spyOn(ctx.client.eventRevisions, "find")
|
|
127
|
+
.mockImplementation(() => null);
|
|
128
|
+
|
|
129
|
+
expect(async () => {
|
|
130
|
+
await VisualHandler.update(ctx);
|
|
131
|
+
}).rejects.toThrow(`Missing revision #${revision.id}`);
|
|
132
|
+
|
|
133
|
+
expect(mockFind).toHaveBeenCalledWith(revision.id, "en");
|
|
134
|
+
});
|
|
135
|
+
});
|