From f0ae33f7804ca3be0ed4ad0b2af4a1ab25387658 Mon Sep 17 00:00:00 2001 From: Elliot DeNolf Date: Wed, 29 Jul 2020 10:00:21 -0400 Subject: [PATCH] Add media create test --- package.json | 1 + .../requestHandlers/collections.spec.js | 53 +++++++++++++++++++ 2 files changed, 54 insertions(+) diff --git a/package.json b/package.json index ce916353a..a0a58a1e6 100644 --- a/package.json +++ b/package.json @@ -128,6 +128,7 @@ "eslint-plugin-react": "^7.18.0", "eslint-plugin-react-hooks": "^2.3.0", "faker": "^4.1.0", + "form-data": "^3.0.0", "graphql-request": "^2.0.0", "nodemon": "^1.19.4" } diff --git a/src/collections/requestHandlers/collections.spec.js b/src/collections/requestHandlers/collections.spec.js index 113282ae3..8470f96db 100644 --- a/src/collections/requestHandlers/collections.spec.js +++ b/src/collections/requestHandlers/collections.spec.js @@ -2,8 +2,11 @@ * @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'); @@ -632,4 +635,54 @@ describe('Collections - REST', () => { expect(nested).toBe(documentA.id); }); }); + + describe('Media', () => { + beforeEach(() => { + // Clear demo/media directory + const mediaDir = path.join(__dirname, '../../../demo', 'media'); + 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); + }); + }); });