From 5e2168ea22304ffa6db87f04e7233a8a4991913a Mon Sep 17 00:00:00 2001 From: Joshua Chen Date: Sun, 6 Mar 2022 18:34:04 +0800 Subject: [PATCH] refactor(lqip-loader): split test files (#6858) --- jest.config.mjs | 2 +- .../src/index.ts | 2 +- .../lqip-loader/src/__tests__/lqip.test.ts | 29 +++++++++++++++++++ .../{index.test.ts => utils.test.ts} | 21 -------------- packages/lqip-loader/src/index.ts | 4 +-- 5 files changed, 33 insertions(+), 25 deletions(-) create mode 100644 packages/lqip-loader/src/__tests__/lqip.test.ts rename packages/lqip-loader/src/__tests__/{index.test.ts => utils.test.ts} (65%) diff --git a/jest.config.mjs b/jest.config.mjs index 7e4a4dcc97..4c21dede96 100644 --- a/jest.config.mjs +++ b/jest.config.mjs @@ -34,7 +34,7 @@ export default { }, moduleNameMapper: { // Jest can't resolve CSS or asset imports - '^.+\\.(css|jpg|jpeg|png|svg)$': '/jest/emptyModule.js', + '^.+\\.(css|jpe?g|png|svg)$': '/jest/emptyModule.js', // TODO we need to allow Jest to resolve core Webpack aliases automatically '@docusaurus/(browserContext|BrowserOnly|ComponentCreator|constants|docusaurusContext|ExecutionEnvironment|Head|Interpolate|isInternalUrl|Link|Noop|renderRoutes|router|Translate|use.*)': diff --git a/packages/docusaurus-plugin-ideal-image/src/index.ts b/packages/docusaurus-plugin-ideal-image/src/index.ts index 39e5aa0be9..1630f46e59 100644 --- a/packages/docusaurus-plugin-ideal-image/src/index.ts +++ b/packages/docusaurus-plugin-ideal-image/src/index.ts @@ -56,7 +56,7 @@ export default function pluginIdealImage( module: { rules: [ { - test: /\.(?:png|jpe?g|gif)$/i, + test: /\.(?:png|jpe?g)$/i, use: [ require.resolve('@docusaurus/lqip-loader'), { diff --git a/packages/lqip-loader/src/__tests__/lqip.test.ts b/packages/lqip-loader/src/__tests__/lqip.test.ts new file mode 100644 index 0000000000..22f7f1ce56 --- /dev/null +++ b/packages/lqip-loader/src/__tests__/lqip.test.ts @@ -0,0 +1,29 @@ +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +import path from 'path'; +import * as lqip from '../lqip'; + +describe('lqip library', () => { + const imgPath = path.join(__dirname, '__fixtures__', 'endi.jpg'); + const invalidPath = path.join(__dirname, '__fixtures__', 'docusaurus.svg'); + + it('should reject unknown or unsupported file format', async () => { + await expect(lqip.base64(invalidPath)).rejects.toBeTruthy(); + }); + + it('should generate a valid base64', async () => { + const expectedBase64 = 'data:image/jpeg;base64,/9j/2wBDA'; + await expect(lqip.base64(imgPath)).resolves.toContain(expectedBase64); + }); + + it('should generate a valid color palette', async () => { + const imgPalette = await lqip.palette(imgPath); + expect(imgPalette).toHaveLength(6); + expect(imgPalette).toContain('#578ca1'); + }); +}); diff --git a/packages/lqip-loader/src/__tests__/index.test.ts b/packages/lqip-loader/src/__tests__/utils.test.ts similarity index 65% rename from packages/lqip-loader/src/__tests__/index.test.ts rename to packages/lqip-loader/src/__tests__/utils.test.ts index a46bd0665e..960cfaa984 100644 --- a/packages/lqip-loader/src/__tests__/index.test.ts +++ b/packages/lqip-loader/src/__tests__/utils.test.ts @@ -10,7 +10,6 @@ import Vibrant from 'node-vibrant'; import type {Palette} from 'node-vibrant/lib/color'; import {toPalette, toBase64} from '../utils'; -import * as lqip from '../lqip'; describe('lqip-loader', () => { describe('toBase64', () => { @@ -44,24 +43,4 @@ describe('lqip-loader', () => { expect(toPalette(testSwatchWithNull)).toHaveLength(5); }); }); - - describe('lqip library', () => { - const imgPath = path.join(__dirname, '__fixtures__', 'endi.jpg'); - const invalidPath = path.join(__dirname, '__fixtures__', 'docusaurus.svg'); - - it('should reject unknown or unsupported file format', async () => { - await expect(lqip.base64(invalidPath)).rejects.toBeTruthy(); - }); - - it('should generate a valid base64', async () => { - const expectedBase64 = 'data:image/jpeg;base64,/9j/2wBDA'; - await expect(lqip.base64(imgPath)).resolves.toContain(expectedBase64); - }); - - it('should generate a valid color palette', async () => { - const imgPalette = await lqip.palette(imgPath); - expect(imgPalette).toHaveLength(6); - expect(imgPalette).toContain('#578ca1'); - }); - }); }); diff --git a/packages/lqip-loader/src/index.ts b/packages/lqip-loader/src/index.ts index f42e6b21d5..7bd0b4d08a 100644 --- a/packages/lqip-loader/src/index.ts +++ b/packages/lqip-loader/src/index.ts @@ -25,6 +25,8 @@ export default async function lqipLoader( const config = this.getOptions() || {}; config.base64 = 'base64' in config ? config.base64 : true; + // color palette generation is set to false by default + // since it is little bit slower than base64 generation config.palette = 'palette' in config ? config.palette : false; let content = contentBuffer.toString('utf8'); @@ -53,8 +55,6 @@ export default async function lqipLoader( const outputPromises: [Promise | null, Promise | null] = [ config.base64 === true ? lqip.base64(imgPath) : null, - // color palette generation is set to false by default - // since it is little bit slower than base64 generation config.palette === true ? lqip.palette(imgPath) : null, ];