Skip to content

Commit bd14802

Browse files
author
Robert Jackson
committed
Add support for merging/clobbering ember in package.json.
1 parent 0baf01d commit bd14802

File tree

4 files changed

+85
-0
lines changed

4 files changed

+85
-0
lines changed

README.md

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -180,6 +180,14 @@ module.exports = function() {
180180
resolutions: {
181181
'lodash': '5.0.0'
182182
}
183+
/*
184+
In order to easily test multiple editions ember-try merges any `ember` property specified
185+
into the applications `package.json`. Values specified in the ember-try configuration will
186+
override values that pre-existed in the original `package.json`.
187+
*/
188+
ember: {
189+
'edition': 'octane'
190+
}
183191
}
184192
},
185193
{

lib/dependency-manager-adapters/npm.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -161,6 +161,7 @@ module.exports = CoreObject.extend({
161161
this._overridePackageJSONDependencies(packageJSON, depSet, 'dependencies');
162162
this._overridePackageJSONDependencies(packageJSON, depSet, 'devDependencies');
163163
this._overridePackageJSONDependencies(packageJSON, depSet, 'peerDependencies');
164+
this._overridePackageJSONDependencies(packageJSON, depSet, 'ember');
164165

165166
if (this.useYarnCommand) {
166167
this._overridePackageJSONDependencies(packageJSON, depSet, 'resolutions');

test/dependency-manager-adapters/npm-adapter-test.js

Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -312,6 +312,68 @@ describe('npmAdapter', () => {
312312
expect(resultJSON.dependencies['ember-cli-babel']).to.equal('6.0.0');
313313
});
314314

315+
describe('ember property', () => {
316+
it('adds the ember property to project package.json', () => {
317+
let npmAdapter = new NpmAdapter({
318+
cwd: tmpdir,
319+
useYarnCommand: true
320+
});
321+
let packageJSON = {};
322+
let depSet = {
323+
ember: { edition: 'octane' }
324+
};
325+
326+
let resultJSON = npmAdapter._packageJSONForDependencySet(packageJSON, depSet);
327+
328+
expect(resultJSON).to.deep.equal({ ember: { edition: 'octane' }});
329+
});
330+
331+
it('merges the ember property to project package.json', () => {
332+
let npmAdapter = new NpmAdapter({
333+
cwd: tmpdir,
334+
useYarnCommand: true
335+
});
336+
let packageJSON = { ember: { foo: 'bar' } };
337+
let depSet = {
338+
ember: { edition: 'octane' }
339+
};
340+
341+
let resultJSON = npmAdapter._packageJSONForDependencySet(packageJSON, depSet);
342+
343+
expect(resultJSON).to.deep.equal({ ember: { foo: 'bar', edition: 'octane' }});
344+
});
345+
346+
it('overrides existing fields inside the ember property to project package.json', () => {
347+
let npmAdapter = new NpmAdapter({
348+
cwd: tmpdir,
349+
useYarnCommand: true
350+
});
351+
let packageJSON = { ember: { edition: 'classic' } };
352+
let depSet = {
353+
ember: { edition: 'octane' }
354+
};
355+
356+
let resultJSON = npmAdapter._packageJSONForDependencySet(packageJSON, depSet);
357+
358+
expect(resultJSON).to.deep.equal({ ember: { edition: 'octane' }});
359+
});
360+
361+
it('removes any items with a null value', () => {
362+
let npmAdapter = new NpmAdapter({
363+
cwd: tmpdir,
364+
useYarnCommand: true
365+
});
366+
let packageJSON = { ember: { edition: 'octane' } };
367+
let depSet = {
368+
ember: { edition: null }
369+
};
370+
371+
let resultJSON = npmAdapter._packageJSONForDependencySet(packageJSON, depSet);
372+
373+
expect(resultJSON).to.deep.equal({ ember: { }});
374+
});
375+
});
376+
315377
it('adds a resolution for the specified dependency version', () => {
316378
let npmAdapter = new NpmAdapter({
317379
cwd: tmpdir,

test/dependency-manager-adapters/workspace-adapter-test.js

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -297,6 +297,20 @@ describe('workspaceAdapter', () => {
297297
});
298298
});
299299

300+
it('changes specified ember properties', () => {
301+
return workspaceAdapter.changeToDependencySet({
302+
ember: { edition: 'octane' },
303+
}).then(() => {
304+
assertFileContainsJSON('packages/test/package.json', {
305+
devDependencies: { 'ember-feature-flags': '1.0.0' },
306+
dependencies: { 'ember-cli-babel': '5.0.0' },
307+
peerDependencies: { 'ember-cli-sass': '1.2.3' },
308+
resolutions: { 'ember-data': '3.0.0' },
309+
ember: { edition: 'octane' },
310+
});
311+
});
312+
});
313+
300314
it('can remove a package', () => {
301315
return workspaceAdapter.changeToDependencySet({
302316
devDependencies: { 'ember-feature-flags': null },

0 commit comments

Comments
 (0)