Skip to content

Commit

Permalink
test: add tests for fieldId
Browse files Browse the repository at this point in the history
  • Loading branch information
Ashu96 authored and adrians5j committed Sep 9, 2020
1 parent 386be63 commit 73095e6
Show file tree
Hide file tree
Showing 2 changed files with 202 additions and 0 deletions.
104 changes: 104 additions & 0 deletions packages/api-headless-cms/__tests__/mocks/preventIdsWithWrongFormat.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,104 @@
import { locales } from "./I18NLocales";

export default {
modelWithFieldIdSetToId: ({ contentModelGroupId }) => ({
data: {
name: "Book",
group: contentModelGroupId,
fields: [
{
_id: "vqk-UApa0-1",
fieldId: "id",
type: "text",
label: {
values: [
{
locale: locales.en.id,
value: "Title"
},
{
locale: locales.de.id,
value: "Titel"
}
]
}
}
]
}
}),
modelWithFieldIdSetToIdIncludingWhiteSpace: ({ contentModelGroupId }) => ({
data: {
name: "Book",
group: contentModelGroupId,
fields: [
{
_id: "vqk-UApa0-1",
fieldId: " iD ",
type: "text",
label: {
values: [
{
locale: locales.en.id,
value: "Title"
},
{
locale: locales.de.id,
value: "Titel"
}
]
}
}
]
}
}),
modelWithFieldIdContainingWhiteSpace: ({ contentModelGroupId }) => ({
data: {
name: "Book",
group: contentModelGroupId,
fields: [
{
_id: "vqk-UApa0-1",
fieldId: " title ",
type: "text",
label: {
values: [
{
locale: locales.en.id,
value: "Title"
},
{
locale: locales.de.id,
value: "Titel"
}
]
}
}
]
}
}),
modelWithValidFieldIds: ({ contentModelGroupId }) => ({
data: {
name: "Book",
group: contentModelGroupId,
fields: [
{
_id: "vqk-UApa0-1",
fieldId: "title",
type: "text",
label: {
values: [
{
locale: locales.en.id,
value: "Title"
},
{
locale: locales.de.id,
value: "Titel"
}
]
}
}
]
}
})
};
Original file line number Diff line number Diff line change
@@ -0,0 +1,98 @@
import useContentHandler from "./utils/useContentHandler";
import mocks from "./mocks/preventIdsWithWrongFormat";
import { createContentModelGroup, createEnvironment } from "@webiny/api-headless-cms/testing";

describe("Fields ID Test", () => {
const { environment, database } = useContentHandler();

const initial = {};

beforeAll(async () => {
// Let's create a basic environment and a content model group.
initial.environment = await createEnvironment({ database });
initial.contentModelGroup = await createContentModelGroup({ database });
});

it(`should not allow fields with fieldId set to "id"`, async () => {
const { createContentModel } = environment(initial.environment.id);

let error = null;
try {
await createContentModel(
mocks.modelWithFieldIdSetToId({ contentModelGroupId: initial.contentModelGroup.id })
);
} catch (e) {
error = e;
}

expect(error.data).toEqual({
invalidFields: {
"fields.fieldId": 'Provided ID id is not valid - "id" is an auto-generated field.'
}
});

error = null;
try {
await createContentModel(
mocks.modelWithFieldIdSetToIdIncludingWhiteSpace({
contentModelGroupId: initial.contentModelGroup.id
})
);
} catch (e) {
error = e;
}

expect(error.data).toEqual({
invalidFields: {
"fields.fieldId": 'Provided ID iD is not valid - "id" is an auto-generated field.'
}
});

error = null;
try {
await createContentModel(
mocks.modelWithValidFieldIds({ contentModelGroupId: initial.contentModelGroup.id })
);
} catch (e) {
error = e;
}

expect(error).toBe(null);

error = null;
});

it(`should trim the "fieldId" before saving to DB`, async () => {
const { createContentModel } = environment(initial.environment.id);

let error = null;

let contentModel;
try {
contentModel = await createContentModel(
mocks.modelWithFieldIdContainingWhiteSpace({
contentModelGroupId: initial.contentModelGroup.id
})
);
} catch (e) {
error = e;
}

expect(error).toBe(null);

expect(contentModel.fields[0].fieldId).toEqual("title");

error = null;
try {
await createContentModel(
mocks.modelWithValidFieldIds({ contentModelGroupId: initial.contentModelGroup.id })
);
} catch (e) {
error = e;
}

expect(error).toBe(null);

error = null;
});
});

0 comments on commit 73095e6

Please sign in to comment.