Add appropriate tests

Signed-off-by: Alexandre Bodin <bodin.alex@gmail.com>
This commit is contained in:
Alexandre Bodin 2020-02-11 09:56:15 +01:00
parent aff529d09e
commit 5e79e9c275
4 changed files with 97 additions and 1 deletions

View File

@ -45,6 +45,30 @@ describe('Content Manager End to End', () => {
60000
);
describe('Conent Types api', () => {
test('Label is pluralized', async () => {
const res = await rq({
url: `/content-manager/content-types`,
method: 'GET',
});
expect(res.statusCode).toBe(200);
expect(res.body.data).toEqual(
expect.arrayContaining([
expect.objectContaining({
label: 'Articles',
}),
expect.objectContaining({
label: 'Tags',
}),
expect.objectContaining({
label: 'Categories',
}),
])
);
});
});
describe('Test manyToMany relation (article - tag) with Content Manager', () => {
beforeAll(async () => {
data = {

View File

@ -27,6 +27,22 @@ describe('Content Manager single types', () => {
afterAll(() => modelsUtils.deleteContentType('single-type'), 60000);
test('Label is not pluralized', async () => {
const res = await rq({
url: `/content-manager/content-types?kind=singleType`,
method: 'GET',
});
expect(res.statusCode).toBe(200);
expect(res.body.data).toEqual(
expect.arrayContaining([
expect.objectContaining({
label: 'Single-type-model',
}),
])
);
});
test('find single type content returns 404 when not created', async () => {
const res = await rq({
url: `/content-manager/explorer/${uid}`,

View File

@ -119,7 +119,7 @@ const editContentType = async (uid, { contentType, components = [] }) => {
if (newKind !== previousKind && newKind === 'singleType') {
const entryCount = await strapi.query(uid).count();
if (entryCount > 1) {
throw new Error(
throw strapi.errors.badRequest(
'You cannot convert a collectionType to a singleType when having multiple entries in DB'
);
}

View File

@ -124,5 +124,61 @@ describe('Content Type Builder - Content types', () => {
},
});
});
test('Cannot switch collectionType to singleType when multiple entries in DB', async () => {
const createRes = await rq({
method: 'POST',
url: '/content-type-builder/content-types',
body: {
contentType: {
kind: 'collectionType',
name: 'test-collection',
attributes: {
title: {
type: 'string',
},
},
},
},
});
expect(createRes.statusCode).toBe(201);
await waitRestart();
const { uid } = createRes.body.data;
// create data
for (let i = 0; i < 2; i++) {
const res = await rq({
method: 'POST',
url: `/test-collections`,
body: {
title: 'Test',
},
});
expect(res.statusCode).toBe(200);
}
const updateRes = await rq({
method: 'PUT',
url: `/content-type-builder/content-types/${uid}`,
body: {
contentType: {
kind: 'singleType',
name: 'test-collection',
attributes: {
title: {
type: 'string',
},
},
},
},
});
expect(updateRes.statusCode).toBe(400);
expect(updateRes.body.error).toMatch('multiple entries in DB');
});
});
});