Skip to content

Commit 98eda5e

Browse files
committed
refactor(configuration): extract scaffolding to the config plugin
1 parent 35ec365 commit 98eda5e

File tree

5 files changed

+52
-20
lines changed

5 files changed

+52
-20
lines changed

src/configuration/index.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,3 @@
1-
export {default as remove} from './remover.js';
1+
export {default as scaffold} from './scaffolder.js';
22
export {default as test} from './tester.js';
3+
export {default as remove} from './remover.js';
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
import {fileTypes} from '@form8ion/core';
2+
3+
import * as td from 'testdouble';
4+
import any from '@travi/any';
5+
import {assert} from 'chai';
6+
7+
suite('configuration scaffolder', () => {
8+
let scaffoldConfig, configFile;
9+
10+
setup(async () => {
11+
configFile = await td.replaceEsm('@form8ion/config-file');
12+
13+
({default: scaffoldConfig} = (await import('./scaffolder.js')));
14+
});
15+
16+
teardown(() => td.reset());
17+
test('that the configuration file is created', async () => {
18+
const projectRoot = any.string();
19+
20+
assert.deepEqual(await scaffoldConfig({projectRoot}), {});
21+
22+
td.verify(
23+
configFile.write({
24+
format: fileTypes.JSON,
25+
path: projectRoot,
26+
name: 'mocha',
27+
config: {ui: 'tdd', require: ['@babel/register', './test/mocha-setup.js']}
28+
})
29+
);
30+
});
31+
});

src/configuration/scaffolder.js

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
import {write} from '@form8ion/config-file';
2+
import {fileTypes} from '@form8ion/core';
3+
4+
export default async function ({projectRoot}) {
5+
await write({
6+
format: fileTypes.JSON,
7+
path: projectRoot,
8+
name: 'mocha',
9+
config: {ui: 'tdd', require: ['@babel/register', './test/mocha-setup.js']}
10+
});
11+
12+
return {};
13+
}

src/scaffolder-test.js

Lines changed: 3 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
import path from 'node:path';
22
import filedirname from 'filedirname';
3-
import {fileTypes} from '@form8ion/core';
43

54
import {assert} from 'chai';
65
import any from '@travi/any';
@@ -9,13 +8,13 @@ import * as td from 'testdouble';
98
const [, __dirname] = filedirname();
109

1110
suite('mocha scaffolder', () => {
12-
let mkdir, configFile, fs, scaffoldMocha;
11+
let mkdir, config, fs, scaffoldMocha;
1312
const projectRoot = any.string();
1413

1514
setup(async () => {
1615
mkdir = await td.replaceEsm('../thirdparty-wrappers/make-dir.js');
17-
configFile = await td.replaceEsm('@form8ion/config-file');
1816
fs = await td.replaceEsm('node:fs');
17+
config = await td.replaceEsm('./configuration/index.js');
1918

2019
({default: scaffoldMocha} = (await import('./scaffolder.js')));
2120
});
@@ -39,14 +38,7 @@ suite('mocha scaffolder', () => {
3938
nextSteps: [{summary: 'Remove the canary test for mocha once more valuable tests exist'}]
4039
}
4140
);
42-
td.verify(
43-
configFile.write({
44-
format: fileTypes.JSON,
45-
path: projectRoot,
46-
name: 'mocha',
47-
config: {ui: 'tdd', require: ['@babel/register', './test/mocha-setup.js']}
48-
})
49-
);
41+
td.verify(config.scaffold({projectRoot}));
5042
td.verify(
5143
fs.promises.copyFile(
5244
path.resolve(__dirname, '..', 'templates', 'mocha-setup.txt'),

src/scaffolder.js

Lines changed: 3 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
import {promises as fs} from 'node:fs';
22
import path from 'node:path';
33
import filedirname from 'filedirname';
4-
import {fileTypes} from '@form8ion/core';
5-
import {write} from '@form8ion/config-file';
64

75
import mkdir from '../thirdparty-wrappers/make-dir.js';
86

7+
import {scaffold as scaffoldConfig} from './configuration/index.js';
8+
99
const [, __dirname] = filedirname();
1010

1111
export default async function ({projectRoot}) {
@@ -17,12 +17,7 @@ export default async function ({projectRoot}) {
1717

1818
await Promise.all([
1919
fs.copyFile(path.resolve(__dirname, '..', 'templates', 'canary-test.txt'), `${createdSrcDirectory}/canary-test.js`),
20-
write({
21-
format: fileTypes.JSON,
22-
path: projectRoot,
23-
name: 'mocha',
24-
config: {ui: 'tdd', require: ['@babel/register', './test/mocha-setup.js']}
25-
}),
20+
scaffoldConfig({projectRoot}),
2621
fs.copyFile(path.resolve(__dirname, '..', 'templates', 'mocha-setup.txt'), `${createdTestDirectory}/mocha-setup.js`)
2722
]);
2823

0 commit comments

Comments
 (0)