155 lines
5.0 KiB
JavaScript
155 lines
5.0 KiB
JavaScript
/* eslint no-unused-expressions: 0 */
|
|
|
|
import expect from 'expect';
|
|
import accept from '../src/index';
|
|
|
|
describe('accept', () => {
|
|
it('should return true if called without acceptedFiles', () => {
|
|
expect(accept({
|
|
name: 'testfile.png',
|
|
type: 'some/type'
|
|
}, undefined)).toBe(true);
|
|
});
|
|
|
|
it('should not throw and return true if file is empty or null', () => {
|
|
expect(() => {
|
|
accept({});
|
|
accept({}, 'text/html');
|
|
accept({}, '*.png');
|
|
accept({}, 'image/*');
|
|
|
|
accept(null);
|
|
accept(null, 'text/html');
|
|
accept(null, '*.png');
|
|
accept(null, 'image/*');
|
|
}).toNotThrow();
|
|
});
|
|
|
|
it('should properly validate if called with concrete mime types', () => {
|
|
const acceptedMimeTypes = 'text/html,image/jpeg,application/json';
|
|
expect(accept({
|
|
name: 'testfile.png',
|
|
type: 'text/html'
|
|
}, acceptedMimeTypes)).toBe(true);
|
|
expect(accept({
|
|
name: 'testfile.png',
|
|
type: 'image/jpeg'
|
|
}, acceptedMimeTypes)).toBe(true);
|
|
expect(accept({
|
|
name: 'testfile.png',
|
|
type: 'application/json'
|
|
}, acceptedMimeTypes)).toBe(true);
|
|
expect(accept({
|
|
name: 'testfile.png',
|
|
type: 'image/bmp'
|
|
}, acceptedMimeTypes)).toBe(false);
|
|
expect(accept({
|
|
type: 'image/bmp'
|
|
}, acceptedMimeTypes)).toBe(false);
|
|
});
|
|
|
|
it('should properly validate if called with base mime types', () => {
|
|
const acceptedMimeTypes = 'text/*,image/*,application/*';
|
|
expect(accept({
|
|
name: 'testfile.png',
|
|
type: 'text/html'
|
|
}, acceptedMimeTypes)).toBe(true);
|
|
expect(accept({
|
|
name: 'testfile.png',
|
|
type: 'image/jpeg'
|
|
}, acceptedMimeTypes)).toBe(true);
|
|
expect(accept({
|
|
name: 'testfile.png',
|
|
type: 'application/json'
|
|
}, acceptedMimeTypes)).toBe(true);
|
|
expect(accept({
|
|
name: 'testfile.png',
|
|
type: 'image/bmp'
|
|
}, acceptedMimeTypes)).toBe(true);
|
|
expect(accept({
|
|
name: 'testfile.png',
|
|
type: 'some/type'
|
|
}, acceptedMimeTypes)).toBe(false);
|
|
});
|
|
|
|
it('should properly validate if called with mixed mime types', () => {
|
|
const acceptedMimeTypes = 'text/*,image/jpeg,application/*';
|
|
expect(accept({
|
|
name: 'testfile.png',
|
|
type: 'text/html'
|
|
}, acceptedMimeTypes)).toBe(true);
|
|
expect(accept({
|
|
name: 'testfile.png',
|
|
type: 'image/jpeg'
|
|
}, acceptedMimeTypes)).toBe(true);
|
|
expect(accept({
|
|
name: 'testfile.png',
|
|
type: 'image/bmp'
|
|
}, acceptedMimeTypes)).toBe(false);
|
|
expect(accept({
|
|
name: 'testfile.png',
|
|
type: 'application/json'
|
|
}, acceptedMimeTypes)).toBe(true);
|
|
expect(accept({
|
|
name: 'testfile.png',
|
|
type: 'some/type'
|
|
}, acceptedMimeTypes)).toBe(false);
|
|
});
|
|
|
|
it('should properly validate even with spaces in between', () => {
|
|
const acceptedMimeTypes = 'text/html , image/jpeg, application/json';
|
|
expect(accept({
|
|
name: 'testfile.png',
|
|
type: 'text/html'
|
|
}, acceptedMimeTypes)).toBe(true);
|
|
expect(accept({
|
|
name: 'testfile.png',
|
|
type: 'image/jpeg'
|
|
}, acceptedMimeTypes)).toBe(true);
|
|
});
|
|
|
|
it('should properly validate extensions', () => {
|
|
const acceptedMimeTypes = 'text/html , image/jpeg, .pdf ,.png';
|
|
expect(accept({
|
|
name: 'somxsfsd',
|
|
type: 'text/html'
|
|
}, acceptedMimeTypes)).toBe(true);
|
|
expect(accept({
|
|
name: 'somesdfsdf',
|
|
type: 'image/jpeg'
|
|
}, acceptedMimeTypes)).toBe(true);
|
|
expect(accept({
|
|
name: 'somesdfadfadf',
|
|
type: 'application/json'
|
|
}, acceptedMimeTypes)).toBe(false);
|
|
expect(accept({
|
|
name: 'some-file file.pdf',
|
|
type: 'random/type'
|
|
}, acceptedMimeTypes)).toBe(true);
|
|
expect(accept({
|
|
name: 'some-file.pdf file.gif',
|
|
type: 'random/type'
|
|
}, acceptedMimeTypes)).toBe(false);
|
|
expect(accept({
|
|
name: 'some-FILEi File.PNG',
|
|
type: 'random/type'
|
|
}, acceptedMimeTypes)).toBe(true);
|
|
});
|
|
|
|
it('should allow accepted files passed to be an array', () => {
|
|
const acceptedMimeTypes = ['img/jpeg', '.pdf'];
|
|
expect(accept({
|
|
name: 'testfile.pdf',
|
|
type: 'random/type'
|
|
}, acceptedMimeTypes)).toBe(true);
|
|
expect(accept({
|
|
name: 'testfile.jpg',
|
|
type: 'img/jpeg'
|
|
}, acceptedMimeTypes)).toBe(true);
|
|
expect(accept({
|
|
name: 'testfile',
|
|
type: 'application/json'
|
|
}, acceptedMimeTypes)).toBe(false);
|
|
});
|
|
});
|