From f580dc0367d97f50ee776f9eae68bc62a3aa47f4 Mon Sep 17 00:00:00 2001 From: Anshuman Verma Date: Mon, 17 Feb 2020 01:00:12 +0530 Subject: [PATCH] tests(test): add tests for loader generator add tests for loader generator --- package-lock.json | 8 ++- package.json | 5 +- .../__tests__/loader-generator.test.ts | 55 +++++++++++++++---- 3 files changed, 53 insertions(+), 15 deletions(-) diff --git a/package-lock.json b/package-lock.json index bfdfe510ea3..14d39671b7d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "webpack-cli", - "version": "4.0.0-beta.2", + "version": "4.0.0-beta.3", "lockfileVersion": 1, "requires": true, "dependencies": { @@ -17583,6 +17583,12 @@ "decamelize": "^1.2.0" } }, + "yeoman-assert": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yeoman-assert/-/yeoman-assert-3.1.1.tgz", + "integrity": "sha512-bCuLb/j/WzpvrJZCTdJJLFzm7KK8IYQJ3+dF9dYtNs2CUYyezFJDuULiZ2neM4eqjf45GN1KH/MzCTT3i90wUQ==", + "dev": true + }, "yeoman-environment": { "version": "2.7.0", "resolved": "https://registry.npmjs.org/yeoman-environment/-/yeoman-environment-2.7.0.tgz", diff --git a/package.json b/package.json index 8eab576db2f..c5a981628b4 100644 --- a/package.json +++ b/package.json @@ -198,11 +198,12 @@ "lint-staged": "^9.4.2", "nyc": "^14.1.1", "prettier": "1.18.2", + "readable-stream": "^3.5.0", "ts-jest": "^24.1.0", "typedoc": "^0.15.0", "typescript": "^3.7.2", "webpack": "^5.0.0-beta.12", - "yeoman-test": "^2.1.0", - "readable-stream": "^3.5.0" + "yeoman-assert": "^3.1.1", + "yeoman-test": "^2.1.0" } } diff --git a/packages/generators/__tests__/loader-generator.test.ts b/packages/generators/__tests__/loader-generator.test.ts index f8d6c4667c3..c2c14021d99 100644 --- a/packages/generators/__tests__/loader-generator.test.ts +++ b/packages/generators/__tests__/loader-generator.test.ts @@ -1,13 +1,44 @@ -import { makeLoaderName } from "../loader-generator"; - -describe("makeLoaderName", () => { - it("should kebab-case loader name and append '-loader'", () => { - const loaderName = makeLoaderName("This is a test"); - expect(loaderName).toEqual("this-is-a-test-loader"); - }); - - it("should not modify a properly formatted loader name", () => { - const loaderName = makeLoaderName("properly-named-loader"); - expect(loaderName).toEqual("properly-named-loader"); - }); +import { makeLoaderName } from '../loader-generator'; +import { join } from 'path'; +import { run } from 'yeoman-test'; +const assert = require('yeoman-assert'); + +describe('loader generator', () => { + it('generates a default loader', async () => { + const outputDir = await run(join(__dirname, '../loader-generator')); + const loaderDir = `${outputDir}/my-loader`; + const srcFiles = ['cjs.js', 'index.js']; + const testFiles = ['functional.test.js', 'test-utils.js', 'unit.test.js', 'fixtures/simple-file.js']; + const exampleFiles = ['webpack.config.js', 'src/index.js', 'src/lazy-module.js', 'src/static-esm-module.js']; + + // Check that files in all folders are scaffolded. Checking them separately so we know which directory has the problem + // assert for src files + assert.file([...srcFiles.map(file => `${loaderDir}/src/${file}`)]); + + // assert for test files + assert.file([...testFiles.map(file => `${loaderDir}/test/${file}`)]); + + // assert for example files + assert.file([...exampleFiles.map(file => `${loaderDir}/examples/simple/${file}`)]); + + // Check the contents of the webpack config and loader file + assert.fileContent([ + [`${loaderDir}/examples/simple/webpack.config.js`, 'resolveLoader: {'], + [`${loaderDir}/src/index.js`, 'export default function loader(source) {'], + ]); + + // higher timeout so travis has enough time to execute + }, 10000); +}); + +describe('makeLoaderName', () => { + it("should kebab-case loader name and append '-loader'", () => { + const loaderName = makeLoaderName('This is a test'); + expect(loaderName).toEqual('this-is-a-test-loader'); + }); + + it('should not modify a properly formatted loader name', () => { + const loaderName = makeLoaderName('properly-named-loader'); + expect(loaderName).toEqual('properly-named-loader'); + }); });