UNPKG

responsive-json-webpack-plugin

Version:

Resize images and combine responsive image info with static text in json.

199 lines (180 loc) 5.55 kB
const ResponsiveJSONWebpackPlugin = require('../../src/index.ts'); const rjInstance = new ResponsiveJSONWebpackPlugin({ sourceImages: '../examples/images' }); rjInstance.savePicture = jest.fn(); rjInstance.savePicture.mockReturnValue(Promise.resolve()); rjInstance.generateFileName = jest.fn(); rjInstance.generateFileName.mockReturnValue('out.jpg'); const source = { extension: '.jpg', index: 0, name: 'basic', size: 16, src: 'basic.jpg' }; describe('parse source', () => { test('raw source', () => { expect( rjInstance.parseRawSource({ src: 'sample-2.png', dest: 'herrso', size: 16 }) ).toEqual({ extension: '.png', name: 'herrso', size: 16, src: 'sample-2.png' }); expect( rjInstance.parseRawSource({ src: 'sample-3.png', size: 24 }) ).toEqual({ extension: '.png', name: 'sample-3', size: 24, src: 'sample-3.png' }); }); test('embedded source', () => { expect( rjInstance.parseSource(1, 0, { src: 'basic.jpg', size: 16 }) ).toEqual(source); expect( rjInstance.parseSource(1, 1, { src: 'withDest.tiff', size: 16, dest: 'destination' }) ).toEqual({ extension: '.tiff', index: 0, name: 'destination', size: 16, src: 'withDest.tiff' }); expect( rjInstance.parseSource(3, 0, { src: 'folder/inArray.jpg', size: 16 }) ).toEqual({ extension: '.jpg', index: 1, name: 'inArray', size: 16, src: 'folder/inArray.jpg' }); expect( rjInstance.parseSource( 2, 0, { src: 'inArrayAlt.jpg', size: 16 }, 'sample alt' ) ).toEqual({ extension: '.jpg', index: 1, name: 'inArrayAlt', size: 16, src: 'inArrayAlt.jpg', alt: 'sample alt 1' }); }); }); describe('create img', () => { test('standard input', () => rjInstance.createImg(source, 'potato').then(img => { const sampleImg = { src: 'out.jpg', size: 16, alt: undefined }; expect(img).toEqual(sampleImg); expect(rjInstance.savePicture).toHaveBeenCalledWith( '../examples/images/basic.jpg', sampleImg ); })); }); describe('picture img', () => { test('none', () => rjInstance.createImgResolutions(source)); test('empty', () => rjInstance.createImgResolutions(source, {})); test('standard', () => rjInstance .createImgResolutions(source, { img: { sizes: 'XXL', srcset: [ { dest: 'booty', size: 16 }, { dest: 'bootybutt', size: 16 } ] } }) .then(arr => { expect(rjInstance.savePicture).toHaveBeenLastCalledWith( '../examples/images/basic.jpg', { src: 'out.jpg', size: 16 } ); expect(arr).toEqual({ sizes: 'XXL', srcset: [ { src: 'out.jpg', size: 16 }, { src: 'out.jpg', size: 16 } ] }); })); }); describe('picture sources', () => { test('none', () => rjInstance.createPictureSources(source)); test('empty', () => rjInstance.createPictureSources(source, {})); test('standard', () => rjInstance .createPictureSources(source, { sources: [ { sizes: 'XXL', media: 'SCREEN', srcset: [ { src: 'hm', dest: 'booty', size: 16 }, { src: 'bootybutt', size: 16 } ] } ] }) .then(arr => expect(arr[0]).toEqual({ media: 'SCREEN', sizes: 'XXL', srcset: [ { src: 'out.jpg', size: 16 }, { src: 'out.jpg', size: 16 } ] }) )); });