Skip to content

Commit 73095e6

Browse files
Ashu96adrians5j
authored andcommitted
test: add tests for fieldId
1 parent 386be63 commit 73095e6

File tree

2 files changed

+202
-0
lines changed

2 files changed

+202
-0
lines changed
Lines changed: 104 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,104 @@
1+
import { locales } from "./I18NLocales";
2+
3+
export default {
4+
modelWithFieldIdSetToId: ({ contentModelGroupId }) => ({
5+
data: {
6+
name: "Book",
7+
group: contentModelGroupId,
8+
fields: [
9+
{
10+
_id: "vqk-UApa0-1",
11+
fieldId: "id",
12+
type: "text",
13+
label: {
14+
values: [
15+
{
16+
locale: locales.en.id,
17+
value: "Title"
18+
},
19+
{
20+
locale: locales.de.id,
21+
value: "Titel"
22+
}
23+
]
24+
}
25+
}
26+
]
27+
}
28+
}),
29+
modelWithFieldIdSetToIdIncludingWhiteSpace: ({ contentModelGroupId }) => ({
30+
data: {
31+
name: "Book",
32+
group: contentModelGroupId,
33+
fields: [
34+
{
35+
_id: "vqk-UApa0-1",
36+
fieldId: " iD ",
37+
type: "text",
38+
label: {
39+
values: [
40+
{
41+
locale: locales.en.id,
42+
value: "Title"
43+
},
44+
{
45+
locale: locales.de.id,
46+
value: "Titel"
47+
}
48+
]
49+
}
50+
}
51+
]
52+
}
53+
}),
54+
modelWithFieldIdContainingWhiteSpace: ({ contentModelGroupId }) => ({
55+
data: {
56+
name: "Book",
57+
group: contentModelGroupId,
58+
fields: [
59+
{
60+
_id: "vqk-UApa0-1",
61+
fieldId: " title ",
62+
type: "text",
63+
label: {
64+
values: [
65+
{
66+
locale: locales.en.id,
67+
value: "Title"
68+
},
69+
{
70+
locale: locales.de.id,
71+
value: "Titel"
72+
}
73+
]
74+
}
75+
}
76+
]
77+
}
78+
}),
79+
modelWithValidFieldIds: ({ contentModelGroupId }) => ({
80+
data: {
81+
name: "Book",
82+
group: contentModelGroupId,
83+
fields: [
84+
{
85+
_id: "vqk-UApa0-1",
86+
fieldId: "title",
87+
type: "text",
88+
label: {
89+
values: [
90+
{
91+
locale: locales.en.id,
92+
value: "Title"
93+
},
94+
{
95+
locale: locales.de.id,
96+
value: "Titel"
97+
}
98+
]
99+
}
100+
}
101+
]
102+
}
103+
})
104+
};
Lines changed: 98 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,98 @@
1+
import useContentHandler from "./utils/useContentHandler";
2+
import mocks from "./mocks/preventIdsWithWrongFormat";
3+
import { createContentModelGroup, createEnvironment } from "@webiny/api-headless-cms/testing";
4+
5+
describe("Fields ID Test", () => {
6+
const { environment, database } = useContentHandler();
7+
8+
const initial = {};
9+
10+
beforeAll(async () => {
11+
// Let's create a basic environment and a content model group.
12+
initial.environment = await createEnvironment({ database });
13+
initial.contentModelGroup = await createContentModelGroup({ database });
14+
});
15+
16+
it(`should not allow fields with fieldId set to "id"`, async () => {
17+
const { createContentModel } = environment(initial.environment.id);
18+
19+
let error = null;
20+
try {
21+
await createContentModel(
22+
mocks.modelWithFieldIdSetToId({ contentModelGroupId: initial.contentModelGroup.id })
23+
);
24+
} catch (e) {
25+
error = e;
26+
}
27+
28+
expect(error.data).toEqual({
29+
invalidFields: {
30+
"fields.fieldId": 'Provided ID id is not valid - "id" is an auto-generated field.'
31+
}
32+
});
33+
34+
error = null;
35+
try {
36+
await createContentModel(
37+
mocks.modelWithFieldIdSetToIdIncludingWhiteSpace({
38+
contentModelGroupId: initial.contentModelGroup.id
39+
})
40+
);
41+
} catch (e) {
42+
error = e;
43+
}
44+
45+
expect(error.data).toEqual({
46+
invalidFields: {
47+
"fields.fieldId": 'Provided ID iD is not valid - "id" is an auto-generated field.'
48+
}
49+
});
50+
51+
error = null;
52+
try {
53+
await createContentModel(
54+
mocks.modelWithValidFieldIds({ contentModelGroupId: initial.contentModelGroup.id })
55+
);
56+
} catch (e) {
57+
error = e;
58+
}
59+
60+
expect(error).toBe(null);
61+
62+
error = null;
63+
});
64+
65+
it(`should trim the "fieldId" before saving to DB`, async () => {
66+
const { createContentModel } = environment(initial.environment.id);
67+
68+
let error = null;
69+
70+
let contentModel;
71+
try {
72+
contentModel = await createContentModel(
73+
mocks.modelWithFieldIdContainingWhiteSpace({
74+
contentModelGroupId: initial.contentModelGroup.id
75+
})
76+
);
77+
} catch (e) {
78+
error = e;
79+
}
80+
81+
expect(error).toBe(null);
82+
83+
expect(contentModel.fields[0].fieldId).toEqual("title");
84+
85+
error = null;
86+
try {
87+
await createContentModel(
88+
mocks.modelWithValidFieldIds({ contentModelGroupId: initial.contentModelGroup.id })
89+
);
90+
} catch (e) {
91+
error = e;
92+
}
93+
94+
expect(error).toBe(null);
95+
96+
error = null;
97+
});
98+
});

0 commit comments

Comments
 (0)