strapi/api-tests/core/upload/admin/folder-structure.test.api.js

92 lines
2.3 KiB
JavaScript

'use strict';
const { createTestBuilder } = require('api-tests/builder');
const { createStrapiInstance } = require('api-tests/strapi');
const { createAuthRequest } = require('api-tests/request');
let strapi;
let rq;
const data = {
folders: [],
};
const createFolder = async (name, parent = null) => {
const res = await rq({
method: 'POST',
url: '/upload/folders',
body: { name, parent },
});
return res.body.data;
};
describe('Folder structure', () => {
const builder = createTestBuilder();
beforeAll(async () => {
strapi = await createStrapiInstance();
rq = await createAuthRequest({ strapi });
// delete all possibly existing folders
const res = await rq({
method: 'GET',
url: '/upload/folders',
});
await rq({
method: 'POST',
url: '/upload/actions/bulk-delete',
body: {
folderIds: res.body.data.map((f) => f.id),
},
});
const rootFolder1 = await createFolder('folder1');
const rootFolder2 = await createFolder('folder2');
const nestedFolder1a = await createFolder('folder1A', rootFolder1.id);
const nestedFolder1b = await createFolder('folder1B', rootFolder1.id);
const nestedFolder1a1 = await createFolder('folder1A1', nestedFolder1a.id);
data.folders.push(rootFolder1, rootFolder2, nestedFolder1a, nestedFolder1b, nestedFolder1a1);
});
afterAll(async () => {
await rq({
method: 'POST',
url: '/upload/actions/bulk-delete',
body: {
folderIds: data.folders.map((f) => f.id),
},
});
await strapi.destroy();
await builder.cleanup();
});
describe('Read', () => {
test('get structure', async () => {
const res = await rq({
method: 'GET',
url: '/upload/folder-structure',
});
expect(res.statusCode).toBe(200);
expect(res.body).toMatchObject({
data: [
{
children: [
{
children: [{ children: [], id: expect.anything(), name: 'folder1A1' }],
id: expect.anything(),
name: 'folder1A',
},
{ children: [], id: expect.anything(), name: 'folder1B' },
],
id: expect.anything(),
name: 'folder1',
},
{ children: [], id: expect.anything(), name: 'folder2' },
],
});
});
});
});