UNPKG

filestack-js

Version:

Official JavaScript library for Filestack

260 lines (228 loc) 5.73 kB
/* * Copyright (c) 2018 by Filestack. * Some rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ import * as assert from 'assert'; import { getValidator, PickerParamsSchema } from './'; import * as jsdom from 'jsdom'; const { JSDOM } = jsdom; describe('Picker Params Schema', () => { const validator = getValidator(PickerParamsSchema); const validate = params => { const res = validator(params); // if (res.errors.length) { // console.log(res.errors); // } return res.errors.length === 0 ? true : false; }; const assertFail = res => assert.ok(!res); it('should validate allow manual retry', () => { assert.ok(validate({ allowManualRetry: true })); assertFail(validate({ allowManualRetry: {} })); }); it('should validate accept param', () => { assert.ok(validate({ accept: 'image/jpeg' })); assert.ok(validate({ accept: ['image/jpeg', 'image/png', '*'] })); assertFail(validate({ accept: {} })); }); it('should validate fromSources param', () => { assert.ok(validate({ fromSources: ['url', 'facebook'] })); assertFail(validate({ fromSources: ['wrong_source'] })); }); it('should validate fromSources param type object', () => { assert.ok(validate({ fromSources: ['url', { test: 123 }, { test: () => console.log }] })); }); it('should validate container param', () => { assert.ok(validate({ container: 'test' })); const nodeDiv = JSDOM.fragment(`<div>Hello</div>`).querySelector('div'); const nodeP = JSDOM.fragment(`<p>Hello</p>`).querySelector('p'); assert.ok(validate({ container: nodeDiv })); assert.ok(validate({ container: nodeP })); assertFail(validate({ container: {} })); }); it('should validate cleanupImageExif param', () => { assert.ok(validate({ cleanupImageExif: true })); assert.ok( validate({ cleanupImageExif: { keepOrientation: true, }, }) ); assertFail( validate({ cleanupImageExif: { test: 1, }, }) ); }); it('should validate displayMode param', () => { assert.ok(validate({ displayMode: 'inline' })); assert.ok(validate({ displayMode: 'overlay' })); assert.ok(validate({ displayMode: 'dropPane' })); assertFail(validate({ displayMode: 'test' })); }); it('should validate imageDim param', () => { assert.ok(validate({ imageDim: [100, 100] })); assertFail(validate({ imageDim: [0, 1] })); assertFail(validate({ imageDim: [100, 100, 3] })); }); it('should validate storeTo Params', () => { assert.ok( validate({ storeTo: { filename: 'test', location: 's3', path: '/test/', region: 'test', access: 'public', workflows: ['test'], }, }) ); assert.ok( validate({ storeTo: { filename: 'test', location: 's3', path: '/test/', region: 'test', access: 'private', workflows: [ { id: 'test', }, ], }, }) ); assertFail( validate({ storeTo: { workflows: {}, access: 'none', }, }) ); }); it('should validate transformations param', () => { assert.ok( validate({ transformations: { circle: true, rotate: true, crop: true, }, }) ); assert.ok( validate({ transformations: { circle: false, rotate: false, crop: { force: true, aspectRatio: 1 / 2, }, }, }) ); assertFail( validate({ transformations: { test: 123, }, }) ); }); it('should validate customText param', () => { assert.ok( validate({ customText: { sometest: 'testtext', }, }) ); assertFail(validate({ customText: ['test', 'ts1'] })); }); it('should validate customAuthText param', () => { assert.ok( validate({ customAuthText: { test: { top: 'test', bottom: 'test2', }, }, }) ); assertFail( validate({ customAuthText: { test: { top: 'test', }, }, }) ); assertFail( validate({ customAuthText: { test: '123', }, }) ); }); it('should validate ', () => { assert.ok( validate({ uploadConfig: { partSize: 5 * 1024 * 1024, intelligent: true, onProgress: () => console, }, }) ); assert.ok( validate({ uploadConfig: { intelligent: 'fallback', }, }) ); assertFail( validate({ uploadConfig: { partSize: 100, }, }) ); assertFail( validate({ uploadConfig: { progressInterval: 0, }, }) ); assertFail( validate({ uploadConfig: { concurrency: 0, }, }) ); }); });