925 lines
23 KiB
JavaScript
Raw Normal View History

2018-06-13 16:16:46 +02:00
// Helpers.
2018-06-13 15:31:33 +02:00
const form = require('../../../test/helpers/generators');
const restart = require('../../../test/helpers/restart');
2018-06-13 16:16:46 +02:00
const rq = require('../../../test/helpers/request');
2018-06-13 15:31:33 +02:00
const cleanDate = (entry) => {
delete entry.updatedAt;
delete entry.createdAt;
delete entry.created_at;
delete entry.updated_at;
};
let data;
describe('App setup auth', () => {
test(
'Register admin user',
async () => {
const body = await rq({
url: `/auth/local/register`,
method: 'POST',
body: {
username: 'admin',
email: 'admin@strapi.io',
password: 'pcw123'
},
json: true
});
2018-06-13 16:16:46 +02:00
rq.defaults({
2018-06-13 15:31:33 +02:00
headers: {
'Authorization': `Bearer ${body.jwt}`
}
});
}
);
});
describe('Generate test APIs', () => {
beforeEach(async () => {
await restart(rq);
}, 60000);
test(
'Create new article API',
async () => {
await rq({
url: `/content-type-builder/models`,
method: 'POST',
body: form.article,
json: true
});
}
);
test(
'Create new tag API',
async () => {
await rq({
url: `/content-type-builder/models`,
method: 'POST',
body: form.tag,
json: true
});
}
);
test(
'Create new category API',
async () => {
await rq({
url: `/content-type-builder/models`,
method: 'POST',
body: form.category,
json: true
});
}
);
test(
'Create new reference API',
async () => {
await rq({
url: `/content-type-builder/models`,
method: 'POST',
body: form.reference,
json: true
});
}
);
});
2018-06-15 13:38:34 +02:00
// describe('Test manyToMany relation (article - tag) with Content Manager', () => {
// beforeAll(() => {
// data = {
// articles: [],
// tags: []
// };
// });
// beforeEach(async () => {
// await restart(rq);
// }, 60000);
// test(
// 'Create tag1',
// async () => {
// let body = await rq({
// url: `/content-manager/explorer/tag/?source=content-manager`,
// method: 'POST',
// formData: {
// name: 'tag1'
// }
// });
// body = JSON.parse(body);
// data.tags.push(body);
// expect(body.id);
// expect(Array.isArray(body.articles)).toBeTruthy();
// expect(body.name).toBe('tag1');
// }
// );
// test(
// 'Create tag2',
// async () => {
// let body = await rq({
// url: `/content-manager/explorer/tag/?source=content-manager`,
// method: 'POST',
// formData: {
// name: 'tag2'
// }
// });
// body = JSON.parse(body);
// data.tags.push(body);
// expect(body.id);
// expect(Array.isArray(body.articles)).toBeTruthy();
// expect(body.name).toBe('tag2');
// }
// );
// test(
// 'Create tag3',
// async () => {
// let body = await rq({
// url: `/content-manager/explorer/tag/?source=content-manager`,
// method: 'POST',
// formData: {
// name: 'tag3'
// }
// });
// body = JSON.parse(body);
// data.tags.push(body);
// expect(body.id);
// expect(Array.isArray(body.articles)).toBeTruthy();
// expect(body.name).toBe('tag3');
// }
// );
// test(
// 'Create article1 without relation',
// async () => {
// const entry = {
// title: 'Article 1',
// content: 'My super content 1'
// };
// let body = await rq({
// url: `/content-manager/explorer/article/?source=content-manager`,
// method: 'POST',
// formData: entry
// });
// body = JSON.parse(body);
// data.articles.push(body);
// expect(body.id);
// expect(body.title).toBe(entry.title);
// expect(body.content).toBe(entry.content);
// expect(Array.isArray(body.tags)).toBeTruthy();
// expect(body.tags.length).toBe(0);
// }
// );
// test(
// 'Create article2 with tag1',
// async () => {
// const entry = {
// title: 'Article 2',
// content: 'Content 2',
// tags: [data.tags[0]]
// };
// let body = await rq({
// url: `/content-manager/explorer/article/?source=content-manager`,
// method: 'POST',
// formData: entry
// });
// body = JSON.parse(body);
// data.articles.push(body);
// expect(body.id);
// expect(body.title).toBe(entry.title);
// expect(body.content).toBe(entry.content);
// expect(Array.isArray(body.tags)).toBeTruthy();
// expect(body.tags.length).toBe(1);
// expect(body.tags[0].id).toBe(data.tags[0].id);
// }
// );
// test(
// 'Update article1 add tag2',
// async () => {
// const entry = Object.assign({}, data.articles[0], {
// tags: [data.tags[1]]
// });
// cleanDate(entry);
// let body = await rq({
// url: `/content-manager/explorer/article/${entry.id}?source=content-manager`,
// method: 'PUT',
// formData: entry
// });
// body = JSON.parse(body);
// data.articles[0] = body;
// expect(body.id);
// expect(body.title).toBe(entry.title);
// expect(body.content).toBe(entry.content);
// expect(Array.isArray(body.tags)).toBeTruthy();
// expect(body.tags.length).toBe(1);
// expect(body.tags[0].id).toBe(data.tags[1].id);
// }
// );
// test(
// 'Update article1 add tag1 and tag3',
// async () => {
// const entry = Object.assign({}, data.articles[0]);
// entry.tags.push(data.tags[0]);
// entry.tags.push(data.tags[2]);
// cleanDate(entry);
// let body = await rq({
// url: `/content-manager/explorer/article/${entry.id}?source=content-manager`,
// method: 'PUT',
// formData: entry
// });
// body = JSON.parse(body);
// data.articles[0] = body;
// expect(body.id);
// expect(body.title).toBe(entry.title);
// expect(body.content).toBe(entry.content);
// expect(Array.isArray(body.tags)).toBeTruthy();
// expect(body.tags.length).toBe(3);
// }
// );
// test(
// 'Update article1 remove one tag',
// async () => {
// const entry = Object.assign({}, data.articles[0]);
// entry.tags = entry.tags.slice(1);
// cleanDate(entry);
// let body = await rq({
// url: `/content-manager/explorer/article/${entry.id}?source=content-manager`,
// method: 'PUT',
// formData: entry,
// json: true
// });
// data.articles[0] = body;
// expect(body.id);
// expect(body.title).toBe(entry.title);
// expect(body.content).toBe(entry.content);
// expect(Array.isArray(body.tags)).toBeTruthy();
// expect(body.tags.length).toBe(2);
// }
// );
// test(
// 'Update article1 remove all tag',
// async () => {
// const entry = Object.assign({}, data.articles[0], {
// tags: []
// });
// cleanDate(entry);
// let body = await rq({
// url: `/content-manager/explorer/article/${entry.id}?source=content-manager`,
// method: 'PUT',
// formData: entry
// });
// body = JSON.parse(body);
// data.articles[0] = body;
// expect(body.id);
// expect(body.title).toBe(entry.title);
// expect(body.content).toBe(entry.content);
// expect(Array.isArray(body.tags)).toBeTruthy();
// expect(body.tags.length).toBe(0);
// }
// );
// test(
// 'Delete all articles should remove the association in each tags related to them',
// async () => {
// const tagToCreate = await rq({
// url: `/content-manager/explorer/tag/?source=content-manager`,
// method: 'POST',
// json: true,
// formData: {
// name: 'tag11'
// }
// });
// const article12 = await rq({
// url: `/content-manager/explorer/article/?source=content-manager`,
// method: 'POST',
// json: true,
// formData: {
// title: 'article12',
// content: 'Content',
// tags: [tagToCreate]
// }
// });
// const article13 = await rq({
// url: `/content-manager/explorer/article/?source=content-manager`,
// method: 'POST',
// json: true,
// formData: {
// title: 'article13',
// content: 'Content',
// tags: [tagToCreate]
// }
// });
// const articles = [article12, article13];
// expect(Array.isArray(articles[0].tags)).toBeTruthy();
// expect(articles[0].tags.length).toBe(1);
// expect(Array.isArray(articles[1].tags)).toBeTruthy();
// expect(articles[1].tags.length).toBe(1);
// let tagToGet = await rq({
// url: `/content-manager/explorer/tag/${tagToCreate.id}?source=content-manager`,
// method: 'GET',
// json: true
// });
// expect(Array.isArray(tagToGet.articles)).toBeTruthy();
// expect(tagToGet.articles.length).toBe(2);
// await rq({
// url: `/content-manager/explorer/deleteAll/article/?source=content-manager&${articles.map((article, index) => `${index}=${article.id}`).join('&')}`,
// method: 'DELETE',
// json: true
// });
// tagToGet = await rq({
// url: `/content-manager/explorer/tag/${tagToCreate.id}?source=content-manager`,
// method: 'GET',
// json: true
// });
// expect(Array.isArray(tagToGet.articles)).toBeTruthy();
// expect(tagToGet.articles.length).toBe(0);
// }
// );
// });
// describe('Test oneToMany - manyToOne relation (article - category) with Content Manager', () => {
// beforeAll(() => {
// data = {
// articles: [],
// categories: []
// };
// });
// beforeEach(async () => {
// await restart(rq);
// }, 60000);
// test(
// 'Create cat1',
// async () => {
// let body = await rq({
// url: `/content-manager/explorer/category/?source=content-manager`,
// method: 'POST',
// formData: {
// name: 'cat1'
// }
// });
// body = JSON.parse(body);
// data.categories.push(body);
// expect(body.id);
// expect(Array.isArray(body.articles)).toBeTruthy();
// expect(body.name).toBe('cat1');
// }
// );
// test(
// 'Create cat2',
// async () => {
// let body = await rq({
// url: `/content-manager/explorer/category/?source=content-manager`,
// method: 'POST',
// formData: {
// name: 'cat2'
// }
// });
// body = JSON.parse(body);
// data.categories.push(body);
// expect(body.id);
// expect(Array.isArray(body.articles)).toBeTruthy();
// expect(body.name).toBe('cat2');
// }
// );
// test(
// 'Create article1 with cat1',
// async () => {
// const entry = {
// title: 'Article 1',
// content: 'Content 1',
// category: data.categories[0]
// };
// let body = await rq({
// url: `/content-manager/explorer/article/?source=content-manager`,
// method: 'POST',
// formData: entry
// });
// body = JSON.parse(body);
// data.articles.push(body);
// expect(body.id);
// expect(body.title).toBe(entry.title);
// expect(body.content).toBe(entry.content);
// expect(body.category.name).toBe(entry.category.name);
// expect(Array.isArray(body.tags)).toBeTruthy();
// }
// );
// test(
// 'Update article1 with cat2',
// async () => {
// const entry = Object.assign({}, data.articles[0], {
// category: data.categories[1]
// });
// cleanDate(entry);
// let body = await rq({
// url: `/content-manager/explorer/article/${entry.id}?source=content-manager`,
// method: 'PUT',
// formData: entry
// });
// body = JSON.parse(body);
// data.articles[0] = body;
// expect(body.id);
// expect(body.title).toBe(entry.title);
// expect(body.content).toBe(entry.content);
// expect(body.category.name).toBe(entry.category.name);
// expect(Array.isArray(body.tags)).toBeTruthy();
// }
// );
// test(
// 'Create article2',
// async () => {
// const entry = {
// title: 'Article 2',
// content: 'Content 2'
// };
// let body = await rq({
// url: `/content-manager/explorer/article?source=content-manager`,
// method: 'POST',
// formData: entry
// });
// body = JSON.parse(body);
// data.articles.push(body);
// expect(body.id);
// expect(body.title).toBe(entry.title);
// expect(body.content).toBe(entry.content);
// expect(Array.isArray(body.tags)).toBeTruthy();
// }
// );
// test(
// 'Update article2 with cat2',
// async () => {
// const entry = Object.assign({}, data.articles[1], {
// category: data.categories[1]
// });
// cleanDate(entry);
// let body = await rq({
// url: `/content-manager/explorer/article/${entry.id}?source=content-manager`,
// method: 'PUT',
// formData: entry
// });
// body = JSON.parse(body);
// data.articles[1] = body;
// expect(body.id);
// expect(body.title).toBe(entry.title);
// expect(body.content).toBe(entry.content);
// expect(body.category.name).toBe(entry.category.name);
// expect(Array.isArray(body.tags)).toBeTruthy();
// }
// );
// test(
// 'Update cat1 with article1',
// async () => {
// const entry = Object.assign({}, data.categories[0]);
// entry.articles.push(data.articles[0]);
// cleanDate(entry);
// let body = await rq({
// url: `/content-manager/explorer/category/${entry.id}?source=content-manager`,
// method: 'PUT',
// formData: entry
// });
// body = JSON.parse(body);
// data.categories[0] = body;
// expect(body.id);
// expect(Array.isArray(body.articles)).toBeTruthy();
// expect(body.articles.length).toBe(1);
// expect(body.name).toBe(entry.name);
// }
// );
// test(
// 'Create cat3 with article1',
// async () => {
// const entry = {
// name: 'cat3',
// articles: [data.articles[0]]
// };
// let body = await rq({
// url: `/content-manager/explorer/category/?source=content-manager`,
// method: 'POST',
// formData: entry
// });
// body = JSON.parse(body);
// data.categories.push(body);
// expect(body.id);
// expect(Array.isArray(body.articles)).toBeTruthy();
// expect(body.articles.length).toBe(1);
// expect(body.name).toBe(entry.name);
// }
// );
// test(
// 'Get article1 with cat3',
// async () => {
// let body = await rq({
// url: `/content-manager/explorer/article/${data.articles[0].id}?source=content-manager`,
// method: 'GET'
// });
// body = JSON.parse(body);
// expect(body.id);
// expect(body.category.id).toBe(data.categories[2].id)
// }
// );
// test(
// 'Get article2 with cat2',
// async () => {
// let body = await rq({
// url: `/content-manager/explorer/article/${data.articles[1].id}?source=content-manager`,
// method: 'GET'
// });
// body = JSON.parse(body);
// expect(body.id);
// expect(body.category.id).toBe(data.categories[1].id)
// }
// );
// test(
// 'Get cat1 without relations',
// async () => {
// let body = await rq({
// url: `/content-manager/explorer/category/${data.categories[0].id}?source=content-manager`,
// method: 'GET'
// });
// body = JSON.parse(body);
// expect(body.id);
// expect(body.articles.length).toBe(0);
// }
// );
// test(
// 'Get cat2 with article2',
// async () => {
// let body = await rq({
// url: `/content-manager/explorer/category/${data.categories[1].id}?source=content-manager`,
// method: 'GET'
// });
// body = JSON.parse(body);
// expect(body.id);
// expect(body.articles.length).toBe(1);
// expect(body.articles[0].id).toBe(data.articles[1].id);
// }
// );
// test(
// 'Get cat3 with article1',
// async () => {
// let body = await rq({
// url: `/content-manager/explorer/category/${data.categories[2].id}?source=content-manager`,
// method: 'GET'
// });
// body = JSON.parse(body);
// expect(body.id);
// expect(body.articles.length).toBe(1);
// expect(body.articles[0].id).toBe(data.articles[0].id);
// }
// );
// });
// describe('Test oneToOne relation (article - reference) with Content Manager', () => {
// beforeAll(() => {
// data = {
// articles: [],
// references: []
// };
// });
// beforeEach(async () => {
// await restart(rq);
// }, 60000);
// test(
// 'Create ref1',
// async () => {
// let body = await rq({
// url: `/content-manager/explorer/reference/?source=content-manager`,
// method: 'POST',
// formData: {
// name: 'ref1'
// }
// });
// body = JSON.parse(body);
// data.references.push(body);
// expect(body.id);
// expect(body.name).toBe('ref1');
// }
// );
// test(
// 'Create article1',
// async () => {
// const entry = {
// title: 'Article 1',
// content: 'Content 1'
// };
// let body = await rq({
// url: `/content-manager/explorer/article?source=content-manager`,
// method: 'POST',
// formData: entry
// });
// body = JSON.parse(body);
// data.articles.push(body);
// expect(body.id);
// expect(body.title).toBe(entry.title);
// expect(body.content).toBe(entry.content);
// }
// );
// test(
// 'Update article1 with ref1',
// async () => {
// const entry = Object.assign({}, data.articles[0], {
// reference: data.references[0].id
// });
// cleanDate(entry);
// let body = await rq({
// url: `/content-manager/explorer/article/${entry.id}?source=content-manager`,
// method: 'PUT',
// formData: entry
// });
// body = JSON.parse(body);
// data.articles[0] = body;
// expect(body.id);
// expect(body.title).toBe(entry.title);
// expect(body.content).toBe(entry.content);
// expect(body.reference.id).toBe(entry.reference);
// }
// );
// test(
// 'Create article2 with ref1',
// async () => {
// const entry = {
// title: 'Article 2',
// content: 'Content 2',
// reference: data.references[0].id
// };
// let body = await rq({
// url: `/content-manager/explorer/article?source=content-manager`,
// method: 'POST',
// formData: entry
// });
// body = JSON.parse(body);
// data.articles.push(body);
// expect(body.id);
// expect(body.title).toBe(entry.title);
// expect(body.content).toBe(entry.content);
// expect(body.reference.id).toBe(entry.reference);
// }
// );
// test(
// 'Get article1 without relations',
// async () => {
// let body = await rq({
// url: `/content-manager/explorer/article/${data.articles[0].id}?source=content-manager`,
// method: 'GET'
// });
// body = JSON.parse(body);
// expect(body.id);
// expect(body.reference).toBe(null);
// }
// );
// });
describe('Test oneWay relation (reference - tag) with Content Manager', () => {
2018-06-13 15:31:33 +02:00
beforeEach(async () => {
await restart(rq);
}, 60000);
test(
2018-06-15 13:38:34 +02:00
'Attach Tag to a Reference',
2018-06-13 15:31:33 +02:00
async () => {
2018-06-15 13:38:34 +02:00
const tagToCreate = await rq({
2018-06-13 15:31:33 +02:00
url: `/content-manager/explorer/tag/?source=content-manager`,
method: 'POST',
2018-06-15 13:38:34 +02:00
json: true,
2018-06-13 15:31:33 +02:00
formData: {
2018-06-15 13:38:34 +02:00
name: 'tag111'
2018-06-13 15:31:33 +02:00
}
});
2018-06-15 13:38:34 +02:00
const referenceToCreate = await rq({
url: `/content-manager/explorer/reference/?source=content-manager`,
2018-06-13 15:31:33 +02:00
method: 'POST',
2018-06-15 13:38:34 +02:00
json: true,
2018-06-13 15:31:33 +02:00
formData: {
2018-06-15 13:38:34 +02:00
name: 'cat111',
tag: tagToCreate
2018-06-13 15:31:33 +02:00
}
});
2018-06-15 13:38:34 +02:00
expect(referenceToCreate.tag.id).toBe(tagToCreate.id);
2018-06-13 15:31:33 +02:00
}
);
2018-06-13 16:16:46 +02:00
test(
2018-06-15 13:38:34 +02:00
'Detach Tag to a Reference',
2018-06-13 16:16:46 +02:00
async () => {
const tagToCreate = await rq({
url: `/content-manager/explorer/tag/?source=content-manager`,
method: 'POST',
json: true,
formData: {
2018-06-15 13:38:34 +02:00
name: 'tag111'
}
});
2018-06-15 13:38:34 +02:00
const referenceToCreate = await rq({
url: `/content-manager/explorer/reference/?source=content-manager`,
method: 'POST',
json: true,
formData: {
2018-06-15 13:38:34 +02:00
name: 'cat111',
tag: tagToCreate
}
});
2018-06-15 13:38:34 +02:00
expect(referenceToCreate.tag.id).toBe(tagToCreate.id);
const referenceToUpdate = await rq({
url: `/content-manager/explorer/reference/${referenceToCreate.id}?source=content-manager`,
method: 'PUT',
2018-06-13 16:16:46 +02:00
json: true,
formData: {
2018-06-15 13:38:34 +02:00
tag: null
2018-06-13 16:16:46 +02:00
}
});
2018-06-15 13:38:34 +02:00
expect(referenceToUpdate.tag).toBe(null);
2018-06-13 16:16:46 +02:00
}
);
2018-06-13 15:31:33 +02:00
test(
2018-06-15 13:38:34 +02:00
'Delete Tag so the relation in the Reference side should be removed',
2018-06-13 15:31:33 +02:00
async () => {
2018-06-15 13:38:34 +02:00
const tagToCreate = await rq({
url: `/content-manager/explorer/tag/?source=content-manager`,
2018-06-13 15:31:33 +02:00
method: 'POST',
2018-06-15 13:38:34 +02:00
json: true,
2018-06-13 15:31:33 +02:00
formData: {
2018-06-15 13:38:34 +02:00
name: 'tag111'
2018-06-13 15:31:33 +02:00
}
});
2018-06-15 13:38:34 +02:00
const referenceToCreate = await rq({
2018-06-13 15:31:33 +02:00
url: `/content-manager/explorer/reference/?source=content-manager`,
method: 'POST',
2018-06-15 13:38:34 +02:00
json: true,
2018-06-13 15:31:33 +02:00
formData: {
2018-06-15 13:38:34 +02:00
name: 'cat111',
tag: tagToCreate
2018-06-13 15:31:33 +02:00
}
});
2018-06-15 13:38:34 +02:00
const tagToDelete = await rq({
url: `/content-manager/explorer/tag/${tagToCreate.id}?source=content-manager`,
method: 'DELETE',
json: true
2018-06-13 15:31:33 +02:00
});
2018-06-15 13:38:34 +02:00
const referenceToGet = await rq({
url: `/content-manager/explorer/reference/${referenceToCreate.id}?source=content-manager`,
method: 'GET',
json: true
2018-06-13 15:31:33 +02:00
});
2018-06-15 13:38:34 +02:00
expect(referenceToGet.tag).toBe(null);
2018-06-13 15:31:33 +02:00
}
);
});
describe('Delete test APIs', () => {
beforeEach(async () => {
await restart(rq);
}, 60000);
test(
'Delete article API',
async () => {
await rq({
url: `/content-type-builder/models/article`,
method: 'DELETE',
json: true
});
}
);
test(
'Delete tag API',
async () => {
await rq({
url: `/content-type-builder/models/tag`,
method: 'DELETE',
json: true
});
}
);
2018-06-12 17:41:28 +02:00
test(
2018-06-13 15:31:33 +02:00
'Delete category API',
2018-06-12 17:41:28 +02:00
async () => {
2018-06-13 15:31:33 +02:00
await rq({
url: `/content-type-builder/models/category`,
method: 'DELETE',
json: true
});
2018-06-12 17:41:28 +02:00
}
);
});