Merge pull request #338 from trouble/media-tests
This commit is contained in:
@@ -2,10 +2,14 @@
|
||||
* @jest-environment node
|
||||
*/
|
||||
|
||||
const fs = require('fs');
|
||||
const path = require('path');
|
||||
require('isomorphic-fetch');
|
||||
const faker = require('faker');
|
||||
const FormData = require('form-data');
|
||||
const config = require('../../../demo/payload.config');
|
||||
const { email, password } = require('../../tests/credentials');
|
||||
const fileExists = require('../../tests/utils/fileExists');
|
||||
|
||||
const url = config.serverURL;
|
||||
|
||||
@@ -632,4 +636,89 @@ describe('Collections - REST', () => {
|
||||
expect(nested).toBe(documentA.id);
|
||||
});
|
||||
});
|
||||
|
||||
describe('Media', () => {
|
||||
const mediaDir = path.join(__dirname, '../../../demo', 'media');
|
||||
beforeAll(async () => {
|
||||
// Clear demo/media directory
|
||||
const mediaDirExists = await fileExists(mediaDir);
|
||||
if (!mediaDirExists) return;
|
||||
fs.readdir(mediaDir, (err, files) => {
|
||||
if (err) throw err;
|
||||
|
||||
// eslint-disable-next-line no-restricted-syntax
|
||||
for (const file of files) {
|
||||
fs.unlink(path.join(mediaDir, file), (unlinkErr) => {
|
||||
if (unlinkErr) throw unlinkErr;
|
||||
});
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
it('create', async () => {
|
||||
const formData = new FormData();
|
||||
formData.append('file', fs.createReadStream(path.join(__dirname, '../..', 'tests/assets/image.png')));
|
||||
formData.append('alt', 'test media');
|
||||
formData.append('locale', 'en');
|
||||
|
||||
const response = await fetch(`${url}/api/media`, {
|
||||
body: formData,
|
||||
headers: {
|
||||
Authorization: `JWT ${token}`,
|
||||
},
|
||||
method: 'post',
|
||||
});
|
||||
|
||||
const data = await response.json();
|
||||
|
||||
expect(response.status).toBe(201);
|
||||
|
||||
expect(data.doc.alt).not.toBeNull();
|
||||
expect(data.doc.filename).toBe('image.png');
|
||||
expect(data.doc.mimeType).not.toBeNull();
|
||||
expect(data.doc.sizes.icon.filesize).not.toBeLessThan(1);
|
||||
expect(data.doc.sizes.icon.filename).toBe('image-16x16.png');
|
||||
expect(data.doc.sizes.icon.width).toBe(16);
|
||||
expect(data.doc.sizes.icon.height).toBe(16);
|
||||
expect(data.doc.sizes.mobile.filename).toBe('image-320x240.png');
|
||||
expect(data.doc.sizes.mobile.width).toBe(320);
|
||||
expect(data.doc.sizes.mobile.height).toBe(240);
|
||||
expect(data.doc.sizes.tablet.filename).toBe('image-640x480.png');
|
||||
expect(data.doc.sizes.tablet.width).toBe(640);
|
||||
expect(data.doc.sizes.tablet.height).toBe(480);
|
||||
});
|
||||
|
||||
it('delete', async () => {
|
||||
const formData = new FormData();
|
||||
formData.append('file', fs.createReadStream(path.join(__dirname, '../..', 'tests/assets/delete.png')));
|
||||
formData.append('alt', 'test media');
|
||||
formData.append('locale', 'en');
|
||||
|
||||
const createResponse = await fetch(`${url}/api/media`, {
|
||||
body: formData,
|
||||
headers: {
|
||||
Authorization: `JWT ${token}`,
|
||||
},
|
||||
method: 'post',
|
||||
});
|
||||
|
||||
const createData = await createResponse.json();
|
||||
expect(createResponse.status).toBe(201);
|
||||
const docId = createData.doc.id;
|
||||
|
||||
const response = await fetch(`${url}/api/media/${docId}`, {
|
||||
headers: {
|
||||
Authorization: `JWT ${token}`,
|
||||
},
|
||||
method: 'delete',
|
||||
});
|
||||
|
||||
const data = await response.json();
|
||||
expect(response.status).toBe(200);
|
||||
expect(data.id).toBe(docId);
|
||||
|
||||
const imageExists = await fileExists(path.join(mediaDir, 'delete.png'));
|
||||
expect(imageExists).toBe(false);
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
BIN
src/tests/assets/delete.png
Normal file
BIN
src/tests/assets/delete.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 88 KiB |
BIN
src/tests/assets/image.png
Normal file
BIN
src/tests/assets/image.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 88 KiB |
15
src/tests/utils/fileExists.js
Normal file
15
src/tests/utils/fileExists.js
Normal file
@@ -0,0 +1,15 @@
|
||||
const fs = require('fs');
|
||||
const { promisify } = require('util');
|
||||
|
||||
const stat = promisify(fs.stat);
|
||||
|
||||
const fileExists = async (fileName) => {
|
||||
try {
|
||||
await stat(fileName);
|
||||
return true;
|
||||
} catch (err) {
|
||||
return false;
|
||||
}
|
||||
};
|
||||
|
||||
module.exports = fileExists;
|
||||
Reference in New Issue
Block a user