Skip to content
This repository has been archived by the owner on Dec 10, 2021. It is now read-only.

Commit

Permalink
feat(esm): added an engines badge
Browse files Browse the repository at this point in the history
  • Loading branch information
travi committed Nov 23, 2021
1 parent ab39621 commit 870dded
Show file tree
Hide file tree
Showing 4 changed files with 17 additions and 24 deletions.
14 changes: 3 additions & 11 deletions src/badges.js
Original file line number Diff line number Diff line change
@@ -1,13 +1,5 @@
import deepmerge from 'deepmerge';

export default function (contributors) {
return {
consumer: contributors
.map(contributor => contributor.badges && contributor.badges.consumer)
.reduce((acc, badges) => ({...acc, ...badges}), {}),
contribution: contributors
.map(contributor => contributor.badges && contributor.badges.contribution)
.reduce((acc, badges) => ({...acc, ...badges}), {}),
status: contributors
.map(contributor => contributor.badges && contributor.badges.status)
.reduce((acc, badges) => ({...acc, ...badges}), {})
};
return deepmerge.all(contributors).badges;
}
18 changes: 9 additions & 9 deletions src/scaffolder-test.js
Original file line number Diff line number Diff line change
Expand Up @@ -132,6 +132,7 @@ suite('javascript project scaffolder', () => {
packageManager,
dialect: chosenDialect
};
const liftResults = {...any.simpleObject(), badges: any.simpleObject()};

setup(() => {
sandbox = sinon.createSandbox();
Expand Down Expand Up @@ -249,6 +250,13 @@ suite('javascript project scaffolder', () => {
pathWithinParent,
registries
});
jsLifter.lift
.withArgs({
results: deepmerge.all([{devDependencies: ['npm-run-all'], packageManager}, ...contributors]),
projectRoot,
configs
})
.resolves(liftResults);
});

teardown(() => sandbox.restore());
Expand Down Expand Up @@ -278,14 +286,6 @@ suite('javascript project scaffolder', () => {
}
);
assert.calledWith(npmConfig.default, {projectRoot, projectType, registries});
assert.calledWith(
jsLifter.lift,
{
results: deepmerge.all([{devDependencies: ['npm-run-all'], packageManager}, ...contributors]),
projectRoot,
configs
}
);
});
});

Expand All @@ -303,7 +303,7 @@ suite('javascript project scaffolder', () => {
suite('badges', () => {
test('that badges are provided', async () => {
const builtBadges = any.simpleObject();
badgeDetailsBuilder.default.withArgs(contributors).returns(builtBadges);
badgeDetailsBuilder.default.withArgs([...contributors, liftResults]).returns(builtBadges);

const {badges} = await scaffold(options);

Expand Down
4 changes: 2 additions & 2 deletions src/scaffolder.js
Original file line number Diff line number Diff line change
Expand Up @@ -132,14 +132,14 @@ export async function scaffold(options) {
pathWithinParent
});

await lift({
const liftResults = await lift({
results: deepmerge.all([{devDependencies: ['npm-run-all'], packageManager}, ...contributors]),
projectRoot,
configs
});

return {
badges: buildBadgesDetails(contributors),
badges: buildBadgesDetails([...contributors, liftResults]),
documentation: scaffoldDocumentation({projectTypeResults, packageManager}),
tags: projectTypeResults.tags,
vcsIgnore: buildVcsIgnoreLists(contributors),
Expand Down
5 changes: 3 additions & 2 deletions test/integration/features/step_definitions/dialect-steps.js
Original file line number Diff line number Diff line change
Expand Up @@ -78,13 +78,14 @@ async function assertCommonJsDialectDetailsAreCorrect() {
await assertBabelIsNotConfigured();
}

async function assertEsmDialectDetailsAreCorrect(execa) {
async function assertEsmDialectDetailsAreCorrect(execa, projectName, badgeResults) {
const {type, engines, scripts} = JSON.parse(await fs.readFile(`${process.cwd()}/package.json`, 'utf-8'));

assert.equal(type, 'module');
assert.equal(engines.node, '>=12.20');
assert.equal(scripts['lint:engines'], 'ls-engines');
assertDevDependencyIsInstalled(execa, 'ls-engines');
assert.include(Object.keys(badgeResults.consumer), 'node');

await assertBabelIsNotConfigured();
}
Expand Down Expand Up @@ -141,7 +142,7 @@ Then('the {string} dialect is configured', async function (dialect) {
}

if (dialects.ESM === dialect) {
await assertEsmDialectDetailsAreCorrect(this.execa);
await assertEsmDialectDetailsAreCorrect(this.execa, this.projectName, this.scaffoldResult.badges);
}
});

Expand Down

0 comments on commit 870dded

Please sign in to comment.