From a4cc782858f9c7045b3eff4481048ee43be4ddef Mon Sep 17 00:00:00 2001 From: endiliey Date: Sat, 11 Aug 2018 02:50:41 +0800 Subject: [PATCH] test: test compile dev/prod webpack config --- .../custom-website/pages}/bar/baz.js | 0 .../custom-website/pages}/foo.js | 0 .../custom-website/pages}/foo/index.js | 0 .../custom-website/pages}/index.js | 0 .../__fixtures__/custom-website/siteConfig.js | 7 +++ .../docs}/foo/bar.md | 0 .../docs}/foo/baz.md | 0 .../docs}/hello.md | 0 .../simple-website/pages/bar/baz.js | 3 ++ test/__fixtures__/simple-website/pages/foo.js | 3 ++ .../simple-website/pages/foo/index.js | 3 ++ .../simple-website/pages/index.js | 3 ++ .../__fixtures__/simple-website/siteConfig.js | 7 +++ test/loadSetup.js | 19 ++++++++ test/webpack/index.test.js | 48 +++++++++++++++++++ 15 files changed, 93 insertions(+) rename test/{load/__fixtures__/simple-pages => __fixtures__/custom-website/pages}/bar/baz.js (100%) rename test/{load/__fixtures__/simple-pages => __fixtures__/custom-website/pages}/foo.js (100%) rename test/{load/__fixtures__/simple-pages => __fixtures__/custom-website/pages}/foo/index.js (100%) rename test/{load/__fixtures__/simple-pages => __fixtures__/custom-website/pages}/index.js (100%) create mode 100644 test/__fixtures__/custom-website/siteConfig.js rename test/{load/__fixtures__/simple-docs => __fixtures__/docs}/foo/bar.md (100%) rename test/{load/__fixtures__/simple-docs => __fixtures__/docs}/foo/baz.md (100%) rename test/{load/__fixtures__/simple-docs => __fixtures__/docs}/hello.md (100%) create mode 100644 test/__fixtures__/simple-website/pages/bar/baz.js create mode 100644 test/__fixtures__/simple-website/pages/foo.js create mode 100644 test/__fixtures__/simple-website/pages/foo/index.js create mode 100644 test/__fixtures__/simple-website/pages/index.js create mode 100644 test/__fixtures__/simple-website/siteConfig.js create mode 100644 test/loadSetup.js create mode 100644 test/webpack/index.test.js diff --git a/test/load/__fixtures__/simple-pages/bar/baz.js b/test/__fixtures__/custom-website/pages/bar/baz.js similarity index 100% rename from test/load/__fixtures__/simple-pages/bar/baz.js rename to test/__fixtures__/custom-website/pages/bar/baz.js diff --git a/test/load/__fixtures__/simple-pages/foo.js b/test/__fixtures__/custom-website/pages/foo.js similarity index 100% rename from test/load/__fixtures__/simple-pages/foo.js rename to test/__fixtures__/custom-website/pages/foo.js diff --git a/test/load/__fixtures__/simple-pages/foo/index.js b/test/__fixtures__/custom-website/pages/foo/index.js similarity index 100% rename from test/load/__fixtures__/simple-pages/foo/index.js rename to test/__fixtures__/custom-website/pages/foo/index.js diff --git a/test/load/__fixtures__/simple-pages/index.js b/test/__fixtures__/custom-website/pages/index.js similarity index 100% rename from test/load/__fixtures__/simple-pages/index.js rename to test/__fixtures__/custom-website/pages/index.js diff --git a/test/__fixtures__/custom-website/siteConfig.js b/test/__fixtures__/custom-website/siteConfig.js new file mode 100644 index 0000000000..3c5b2a6f42 --- /dev/null +++ b/test/__fixtures__/custom-website/siteConfig.js @@ -0,0 +1,7 @@ +module.exports = { + title: 'Sakura', + tagline: 'This is not an ordinary site', + organizationName: 'endiliey', + projectName: 'sakura', + baseUrl: '/sakura/' +}; diff --git a/test/load/__fixtures__/simple-docs/foo/bar.md b/test/__fixtures__/docs/foo/bar.md similarity index 100% rename from test/load/__fixtures__/simple-docs/foo/bar.md rename to test/__fixtures__/docs/foo/bar.md diff --git a/test/load/__fixtures__/simple-docs/foo/baz.md b/test/__fixtures__/docs/foo/baz.md similarity index 100% rename from test/load/__fixtures__/simple-docs/foo/baz.md rename to test/__fixtures__/docs/foo/baz.md diff --git a/test/load/__fixtures__/simple-docs/hello.md b/test/__fixtures__/docs/hello.md similarity index 100% rename from test/load/__fixtures__/simple-docs/hello.md rename to test/__fixtures__/docs/hello.md diff --git a/test/__fixtures__/simple-website/pages/bar/baz.js b/test/__fixtures__/simple-website/pages/bar/baz.js new file mode 100644 index 0000000000..75a8c70015 --- /dev/null +++ b/test/__fixtures__/simple-website/pages/bar/baz.js @@ -0,0 +1,3 @@ +import React from 'react'; + +export default () =>
Baz
; diff --git a/test/__fixtures__/simple-website/pages/foo.js b/test/__fixtures__/simple-website/pages/foo.js new file mode 100644 index 0000000000..3b52ec615c --- /dev/null +++ b/test/__fixtures__/simple-website/pages/foo.js @@ -0,0 +1,3 @@ +import React from 'react'; + +export default () =>
Foo
; diff --git a/test/__fixtures__/simple-website/pages/foo/index.js b/test/__fixtures__/simple-website/pages/foo/index.js new file mode 100644 index 0000000000..5faf67ae13 --- /dev/null +++ b/test/__fixtures__/simple-website/pages/foo/index.js @@ -0,0 +1,3 @@ +import React from 'react'; + +export default () =>
Foo in subfolder
; diff --git a/test/__fixtures__/simple-website/pages/index.js b/test/__fixtures__/simple-website/pages/index.js new file mode 100644 index 0000000000..13063810a7 --- /dev/null +++ b/test/__fixtures__/simple-website/pages/index.js @@ -0,0 +1,3 @@ +import React from 'react'; + +export default () =>
Index
; diff --git a/test/__fixtures__/simple-website/siteConfig.js b/test/__fixtures__/simple-website/siteConfig.js new file mode 100644 index 0000000000..e64b9989cf --- /dev/null +++ b/test/__fixtures__/simple-website/siteConfig.js @@ -0,0 +1,7 @@ +module.exports = { + title: 'Hello', + tagline: 'Hello World', + organizationName: 'endiliey', + projectName: 'hello', + baseUrl: '/' +}; diff --git a/test/loadSetup.js b/test/loadSetup.js new file mode 100644 index 0000000000..2aa6995b88 --- /dev/null +++ b/test/loadSetup.js @@ -0,0 +1,19 @@ +import path from 'path'; +import load from '@lib/load'; + +// Helper methods to setup dummy/ fake projects +const loadSetup = async name => { + const simpleWebsite = path.join(__dirname, '__fixtures__', 'simple-website'); + const customWebsite = path.join(__dirname, '__fixtures__', 'custom-website'); + + switch (name) { + case 'simple': + return await load(simpleWebsite); + case 'custom': + return await load(customWebsite); + default: + return {}; + } +}; + +export default loadSetup; diff --git a/test/webpack/index.test.js b/test/webpack/index.test.js new file mode 100644 index 0000000000..d9fe538fe3 --- /dev/null +++ b/test/webpack/index.test.js @@ -0,0 +1,48 @@ +import webpack from 'webpack'; +import path from 'path'; +import createBaseConfig from '@lib/webpack/base'; +import createDevConfig from '@lib/webpack/dev'; +import createProdConfig from '@lib/webpack/prod'; +import loadSetup from '../loadSetup'; + +// webpack compiler helper function +function compile(config) { + return new Promise((resolve, reject) => { + webpack(config, (err, stats) => { + if (err || stats.hasErrors()) { + reject(new Error(`Failed to compile with errors`)); + } + resolve('Compiled successfully'); + }); + }); +} + +describe('webpack', () => { + test('dev simple', async () => { + console.log = jest.fn(); + const props = await loadSetup('simple'); + const config = createDevConfig(props).toConfig(); + return expect(compile(config)).resolves.toBe('Compiled successfully'); + }); + + test('dev custom', async () => { + console.log = jest.fn(); + const props = await loadSetup('custom'); + const config = createDevConfig(props).toConfig(); + return expect(compile(config)).resolves.toBe('Compiled successfully'); + }); + + test('prod simple', async () => { + console.log = jest.fn(); + const props = await loadSetup('simple'); + const config = createProdConfig(props).toConfig(); + return expect(compile(config)).resolves.toBe('Compiled successfully'); + }); + + test('prod custom', async () => { + console.log = jest.fn(); + const props = await loadSetup('custom'); + const config = createProdConfig(props).toConfig(); + return expect(compile(config)).resolves.toBe('Compiled successfully'); + }); +});