Skip to content

Commit

Permalink
refactor(package-json): extracted writing the config file
Browse files Browse the repository at this point in the history
  • Loading branch information
travi committed Jun 9, 2022
1 parent 6225710 commit 0891bb7
Show file tree
Hide file tree
Showing 6 changed files with 54 additions and 46 deletions.
27 changes: 27 additions & 0 deletions src/package/config-file-test.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
import * as core from '@form8ion/core';

import sinon from 'sinon';
import {assert} from 'chai';
import any from '@travi/any';

import {write} from './config-file';

suite('package.json config', () => {
let sandbox;

setup(() => {
sandbox = sinon.createSandbox();

sandbox.stub(core, 'writeConfigFile');
});

teardown(() => sandbox.restore());
test('that the provided config is written', async () => {
const projectRoot = any.string();
const config = any.simpleObject;

await write({projectRoot, config});

assert.calledWith(core.writeConfigFile, {format: core.fileTypes.JSON, name: 'package', path: projectRoot, config});
});
});
5 changes: 5 additions & 0 deletions src/package/config-file.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
import {fileTypes, writeConfigFile} from '@form8ion/core';

export function write({projectRoot, config}) {
return writeConfigFile({format: fileTypes.JSON, name: 'package', path: projectRoot, config});
}
42 changes: 11 additions & 31 deletions src/package/lifter-test.js
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
import {promises as fs} from 'fs';
import * as core from '@form8ion/core';
import * as jsCore from '@form8ion/javascript-core';

import sinon from 'sinon';
import {assert} from 'chai';
import any from '@travi/any';

import * as configFile from './config-file';
import liftPackage from './lifter';

suite('package.json lifter', () => {
Expand All @@ -18,7 +18,7 @@ suite('package.json lifter', () => {
sandbox = sinon.createSandbox();

sandbox.stub(jsCore, 'installDependencies');
sandbox.stub(core, 'writeConfigFile');
sandbox.stub(configFile, 'write');
sandbox.stub(fs, 'readFile');
});

Expand All @@ -35,13 +35,8 @@ suite('package.json lifter', () => {
await liftPackage({projectRoot, scripts});

assert.calledWith(
core.writeConfigFile,
{
format: core.fileTypes.JSON,
path: projectRoot,
name: 'package',
config: {...packageJsonContents, scripts: {...originalScripts, ...scripts}}
}
configFile.write,
{projectRoot, config: {...packageJsonContents, scripts: {...originalScripts, ...scripts}}}
);
});
});
Expand All @@ -56,13 +51,8 @@ suite('package.json lifter', () => {
await liftPackage({projectRoot, tags});

assert.calledWith(
core.writeConfigFile,
{
format: core.fileTypes.JSON,
path: projectRoot,
name: 'package',
config: {...packageJsonContents, scripts: {}, keywords: tags}
}
configFile.write,
{projectRoot, config: {...packageJsonContents, scripts: {}, keywords: tags}}
);
});

Expand All @@ -76,13 +66,8 @@ suite('package.json lifter', () => {
await liftPackage({projectRoot, tags});

assert.calledWith(
core.writeConfigFile,
{
format: core.fileTypes.JSON,
path: projectRoot,
name: 'package',
config: {...packageJsonContents, scripts: {}, keywords: [...existingKeywords, ...tags]}
}
configFile.write,
{projectRoot, config: {...packageJsonContents, scripts: {}, keywords: [...existingKeywords, ...tags]}}
);
});

Expand All @@ -95,13 +80,8 @@ suite('package.json lifter', () => {
await liftPackage({projectRoot, scripts: {}});

assert.calledWith(
core.writeConfigFile,
{
format: core.fileTypes.JSON,
path: projectRoot,
name: 'package',
config: {...packageJsonContents, scripts: {}, keywords: existingKeywords}
}
configFile.write,
{projectRoot, config: {...packageJsonContents, scripts: {}, keywords: existingKeywords}}
);
});
});
Expand Down Expand Up @@ -196,6 +176,6 @@ suite('package.json lifter', () => {
await liftPackage({});

assert.notCalled(fs.readFile);
assert.notCalled(core.writeConfigFile);
assert.notCalled(configFile.write);
});
});
11 changes: 5 additions & 6 deletions src/package/lifter.js
Original file line number Diff line number Diff line change
@@ -1,8 +1,9 @@
import {promises as fs} from 'fs';
import {writeConfigFile, fileTypes} from '@form8ion/core';
import {info, error} from '@travi/cli-messages';
import {error, info} from '@travi/cli-messages';
import {DEV_DEPENDENCY_TYPE, installDependencies, PROD_DEPENDENCY_TYPE} from '@form8ion/javascript-core';

import {write} from './config-file';

export default async function ({
projectRoot,
scripts,
Expand All @@ -18,10 +19,8 @@ export default async function ({

const existingPackageJsonContents = JSON.parse(await fs.readFile(pathToPackageJson, 'utf8'));

await writeConfigFile({
format: fileTypes.JSON,
path: projectRoot,
name: 'package',
await write({
projectRoot,
config: {
...existingPackageJsonContents,
scripts: {...existingPackageJsonContents.scripts, ...scripts},
Expand Down
10 changes: 3 additions & 7 deletions src/package/scaffolder-test.js
Original file line number Diff line number Diff line change
@@ -1,9 +1,8 @@
import * as core from '@form8ion/core';

import sinon from 'sinon';
import any from '@travi/any';
import {assert} from 'chai';

import * as configFile from './config-file';
import * as buildPackageDetails from './details';
import {scaffold} from './index';

Expand All @@ -13,7 +12,7 @@ suite('package scaffolder', () => {
setup(() => {
sandbox = sinon.createSandbox();

sandbox.stub(core, 'writeConfigFile');
sandbox.stub(configFile, 'write');
sandbox.stub(buildPackageDetails, 'default');
});

Expand Down Expand Up @@ -65,9 +64,6 @@ suite('package scaffolder', () => {
{homepage}
);

assert.calledWith(
core.writeConfigFile,
{format: core.fileTypes.JSON, path: projectRoot, name: 'package', config: packageDetails}
);
assert.calledWith(configFile.write, {projectRoot, config: packageDetails});
});
});
5 changes: 3 additions & 2 deletions src/package/scaffolder.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
import {info} from '@travi/cli-messages';
import {fileTypes, writeConfigFile} from '@form8ion/core';

import {write} from './config-file';
import buildPackageDetails from './details';

export default async function ({
Expand Down Expand Up @@ -30,7 +31,7 @@ export default async function ({
pathWithinParent
});

await writeConfigFile({format: fileTypes.JSON, path: projectRoot, name: 'package', config: packageData});
await write({projectRoot, config: packageData});

return {homepage: packageData.homepage};
}

0 comments on commit 0891bb7

Please sign in to comment.