/** * Copy assets */ app.task('assets', () => { return app.copy(paths.src('assets/**/*'), paths.dest('assets'), { dot: true }); });
test('encode src', async () => { const filePath = path.resolve(context, 'assets/folder name/dummy document.pdf') const queue = new AssetsQueue({ context, config: baseconfig }) const result = await queue.add(filePath) expect(result.filePath).toEqual(filePath) expect(result.destPath).toEqual(path.join(context, 'assets/files/dummy document.test.pdf')) expect(result.src).toEqual('/assets/files/dummy%20document.test.pdf') })
test('handle external file urls', async () => { const filePath = 'https://www.example.com/assets/files/document.pdf' const queue = new AssetsQueue({ context, config: baseconfig }) const result = await queue.add(filePath) expect(queue.files.queue).toHaveLength(0) expect(result.type).toEqual('file') expect(result.destPath).toBeUndefined() expect(result.src).toEqual('https://www.example.com/assets/files/document.pdf') expect(result.mimeType).toEqual('application/pdf') expect(result.filePath).toEqual(filePath) })
function iconData (set) { return { width: set.width, height: set.height, src: set.src } }
test('encode src in serve mode', async () => { const filePath = path.resolve(context, 'assets/folder name/dummy document.pdf') const queue = new AssetsQueue({ context, config: baseconfig }) const mode = process.env.GRIDSOME_MODE process.env.GRIDSOME_MODE = 'serve' const result = await queue.add(filePath) process.env.GRIDSOME_MODE = mode expect(result.destPath).toBeUndefined() expect(result.filePath).toEqual(filePath) expect(result.src).toEqual('/assets/files/assets/folder%20name/dummy%20document.pdf') })
test('generate src for file with base path', async () => { const filePath = path.resolve(context, 'assets/dummy.pdf') const config = { ...baseconfig, pathPrefix: '/base/path' } const queue = new AssetsQueue({ context, config }) const result = await queue.add(filePath) expect(queue.files.queue).toHaveLength(1) expect(result.destPath).toEqual(path.join(context, 'assets/files/dummy.test.pdf')) expect(result.src).toEqual('/base/path/assets/files/dummy.test.pdf') })
test('encode src', async () => { const filePath = path.resolve(context, 'assets/folder name/350 250.png') const queue = new AssetsQueue({ context, config: baseconfig }) const result = await queue.add(filePath) expect(result.filePath).toEqual(filePath) expect(result.src).toEqual('/assets/static/350%20250.096da6d.test.png') expect(result.sets[0].src).toEqual('/assets/static/350%20250.096da6d.test.png') expect(result.sets[0].destPath).toEqual(path.join(imagesDir, '350 250.096da6d.test.png')) expect(result.srcset[0]).toEqual('/assets/static/350%20250.096da6d.test.png 350w') })
test('handle external image urls', async () => { const filePath = 'https://www.example.com/assets/images/image.png' const queue = new AssetsQueue({ context, config: baseconfig }) const result = await queue.add(filePath) expect(queue.images.queue).toHaveLength(0) expect(result.type).toEqual('image') expect(result.src).toEqual(filePath) expect(result.filePath).toEqual(filePath) expect(result.mimeType).toEqual('image/png') })
test('use all image sizes', async () => { const filePath = path.resolve(context, 'assets/2560x2560.png') const config = { ...baseconfig, maxImageWidth: 2560 } const queue = new AssetsQueue({ context, config }) const result = await queue.add(filePath) expect(queue.images.queue).toHaveLength(4) expect(result.src).toEqual('/assets/static/2560x2560.42db587.test.png') expect(result.sets).toHaveLength(4) expect(result.srcset).toHaveLength(4) })
test('resize image by width and height attribute', async () => { const filePath = path.resolve(context, 'assets/1000x600.png') const queue = new AssetsQueue({ context, config: baseconfig }) const result = await queue.add(filePath, { width: 500, height: 500 }) expect(queue.images.queue).toHaveLength(1) expect(result.src).toEqual('/assets/static/1000x600.95a5738.test.png') expect(result.sizes).toEqual('(max-width: 500px) 100vw, 500px') expect(result.sets[0].src).toEqual('/assets/static/1000x600.95a5738.test.png') })
test('set custom quality', async () => { const filePath = path.resolve(context, 'assets/1000x600.png') const queue = new AssetsQueue({ context, config: baseconfig }) const result = await queue.add(filePath, { quality: 10 }) expect(queue.images.queue).toHaveLength(2) expect(result.src).toEqual('/assets/static/1000x600.6bbe610.test.png') })
test('handle external file paths', async () => { const filePath = '/assets/files/document.pdf' const queue = new AssetsQueue({ context, config: baseconfig }) const result = await queue.add(filePath) expect(queue.files.queue).toHaveLength(0) expect(result.type).toEqual('file') expect(result.destPath).toBeUndefined() expect(result.src).toEqual('/assets/files/document.pdf') expect(result.mimeType).toEqual('application/pdf') expect(result.filePath).toEqual(filePath) })
test('use custom image sizes', async () => { const filePath = path.resolve(context, 'assets/2560x2560.png') const config = { ...baseconfig, maxImageWidth: 2560 } const queue = new AssetsQueue({ context, config }) const result = await queue.add(filePath, { imageWidths: [480, 1024] }) expect(queue.images.queue).toHaveLength(2) expect(result.src).toEqual('/assets/static/2560x2560.cbab2cf.test.png') expect(result.sets).toHaveLength(2) expect(result.srcset).toHaveLength(2) })
test('do not resize if image is too small', async () => { const filePath = path.resolve(context, 'assets/350x250.png') const config = { ...baseconfig, maxImageWidth: 600 } const queue = new AssetsQueue({ context, config }) const result = await queue.add(filePath, { width: 600 }) expect(queue.images.queue).toHaveLength(1) expect(result.src).toEqual('/assets/static/350x250.096da6d.test.png') expect(result.sets).toHaveLength(1) expect(result.srcset).toHaveLength(1) })
test('set custom blur', async () => { const filePath = path.resolve(context, 'assets/1000x600.png') const queue = new AssetsQueue({ context, config: baseconfig }) const result = await queue.add(filePath, { blur: 10 }) expect(queue.images.queue).toHaveLength(2) expect(result.src).toEqual('/assets/static/1000x600.248ba3a.test.png') })