From 5caee7dc2b8176f203e1c39106ba04a8b1143c7b Mon Sep 17 00:00:00 2001 From: Lily Beauvilliers Date: Mon, 30 Apr 2018 17:28:42 +0100 Subject: [PATCH 1/6] rename files, tests for in app --- blueprints/instance-initializer-test/index.js | 26 +++++++++ .../instance-initializers/__name__-test.js | 0 .../instance-initializers/__name__-test.js | 0 .../instance-initializers/__name__-test.js | 0 blueprints/instance-initializer/index.js | 16 ++++++ .../blueprints/instance-initializer-test.js | 55 +++++++++++++++++++ 6 files changed, 97 insertions(+) rename blueprints/instance-initializer-test/mocha-files/{tests/unit => __root__/__testType__}/instance-initializers/__name__-test.js (100%) rename blueprints/instance-initializer-test/qunit-files/{tests/unit => __root__/__testType__}/instance-initializers/__name__-test.js (100%) rename blueprints/instance-initializer-test/qunit-rfc-232-files/{tests/unit => __root__/__testType__}/instance-initializers/__name__-test.js (100%) diff --git a/blueprints/instance-initializer-test/index.js b/blueprints/instance-initializer-test/index.js index 9b5282c7b85..4a4a6dc3398 100644 --- a/blueprints/instance-initializer-test/index.js +++ b/blueprints/instance-initializer-test/index.js @@ -5,9 +5,35 @@ const path = require('path'); const stringUtils = require('ember-cli-string-utils'); const useTestFrameworkDetector = require('../test-framework-detector'); +const isModuleUnificationProject = require('../module-unification').isModuleUnificationProject; module.exports = useTestFrameworkDetector({ description: 'Generates an instance initializer unit test.', + fileMapTokens() { + if (isModuleUnificationProject(this.project)) { + return { + __root__(options) { + if (options.pod) { + throw "Pods aren't supported within a module unification app"; + } + + return 'src'; + }, + __testType__() { + return ''; + }, + }; + } else { + return { + __root__() { + return 'tests'; + }, + __testType__() { + return 'unit'; + }, + }; + } + }, locals: function(options) { return { friendlyTestName: ['Unit', 'Instance Initializer', options.entity.name].join(' | '), diff --git a/blueprints/instance-initializer-test/mocha-files/tests/unit/instance-initializers/__name__-test.js b/blueprints/instance-initializer-test/mocha-files/__root__/__testType__/instance-initializers/__name__-test.js similarity index 100% rename from blueprints/instance-initializer-test/mocha-files/tests/unit/instance-initializers/__name__-test.js rename to blueprints/instance-initializer-test/mocha-files/__root__/__testType__/instance-initializers/__name__-test.js diff --git a/blueprints/instance-initializer-test/qunit-files/tests/unit/instance-initializers/__name__-test.js b/blueprints/instance-initializer-test/qunit-files/__root__/__testType__/instance-initializers/__name__-test.js similarity index 100% rename from blueprints/instance-initializer-test/qunit-files/tests/unit/instance-initializers/__name__-test.js rename to blueprints/instance-initializer-test/qunit-files/__root__/__testType__/instance-initializers/__name__-test.js diff --git a/blueprints/instance-initializer-test/qunit-rfc-232-files/tests/unit/instance-initializers/__name__-test.js b/blueprints/instance-initializer-test/qunit-rfc-232-files/__root__/__testType__/instance-initializers/__name__-test.js similarity index 100% rename from blueprints/instance-initializer-test/qunit-rfc-232-files/tests/unit/instance-initializers/__name__-test.js rename to blueprints/instance-initializer-test/qunit-rfc-232-files/__root__/__testType__/instance-initializers/__name__-test.js diff --git a/blueprints/instance-initializer/index.js b/blueprints/instance-initializer/index.js index 79c87c1db92..47f11175ac6 100644 --- a/blueprints/instance-initializer/index.js +++ b/blueprints/instance-initializer/index.js @@ -1,5 +1,21 @@ 'use strict'; +const isModuleUnificationProject = require('../module-unification').isModuleUnificationProject; + module.exports = { description: 'Generates an instance initializer.', + + fileMapTokens() { + if (isModuleUnificationProject(this.project)) { + return { + __root__(options) { + if (options.pod) { + throw "Pods aren't supported within a module unification app"; + } + + return 'src'; + }, + }; + } + }, }; diff --git a/node-tests/blueprints/instance-initializer-test.js b/node-tests/blueprints/instance-initializer-test.js index 0f19628ff46..03c22a56a9e 100644 --- a/node-tests/blueprints/instance-initializer-test.js +++ b/node-tests/blueprints/instance-initializer-test.js @@ -5,9 +5,11 @@ const setupTestHooks = blueprintHelpers.setupTestHooks; const emberNew = blueprintHelpers.emberNew; const emberGenerateDestroy = blueprintHelpers.emberGenerateDestroy; const setupPodConfig = blueprintHelpers.setupPodConfig; +const expectError = require('../helpers/expect-error'); const chai = require('ember-cli-blueprint-test-helpers/chai'); const expect = chai.expect; +const fs = require('fs-extra'); describe('Blueprint: instance-initializer', function() { setupTestHooks(this); @@ -116,6 +118,59 @@ describe('Blueprint: instance-initializer', function() { }); }); + describe.only('in app - module unification', function() { + beforeEach(function() { + return emberNew().then(() => fs.ensureDirSync('src')); + }); + + it('instance-initializer foo', function() { + return emberGenerateDestroy(['instance-initializer', 'foo'], _file => { + expect(_file('src/instance-initializers/foo.js')).to.contain( + 'export function initialize(/* appInstance */) {\n' + + " // appInstance.inject('route', 'foo', 'service:foo');\n" + + '}\n' + + '\n' + + 'export default {\n' + + ' initialize\n' + + '};' + ); + + expect(_file('src/instance-initializers/foo-test.js')).to.contain( + "import { initialize } from 'my-app/instance-initializers/foo';" + ); + + expect(_file('app/instance-initializers/foo-test.js')).to.not.exist; + }); + }); + + it('instance-initializer foo/bar', function() { + return emberGenerateDestroy(['instance-initializer', 'foo/bar'], _file => { + expect(_file('src/instance-initializers/foo/bar.js')).to.contain( + 'export function initialize(/* appInstance */) {\n' + + " // appInstance.inject('route', 'foo', 'service:foo');\n" + + '}\n' + + '\n' + + 'export default {\n' + + ' initialize\n' + + '};' + ); + + expect(_file('src/instance-initializers/foo/bar-test.js')).to.contain( + "import { initialize } from 'my-app/instance-initializers/foo/bar';" + ); + + expect(_file('tests/unit/instance-initializers/foo/bar-test.js')).to.not.exist; + }); + }); + + it('instance-initializer foo --pod', function() { + return expectError( + emberGenerateDestroy(['instance-initializer', 'foo', '--pod']), + "Pods aren't supported within a module unification app" + ); + }); + }); + describe('in addon', function() { beforeEach(function() { return emberNew({ target: 'addon' }); From 2386b725ade74edb21b26bd3e7a99731a5e92626 Mon Sep 17 00:00:00 2001 From: Lily Beauvilliers Date: Tue, 1 May 2018 12:14:43 +0100 Subject: [PATCH 2/6] updated path to include init and fixed linting errors --- blueprints/instance-initializer-test/index.js | 2 +- blueprints/instance-initializer/index.js | 2 +- .../blueprints/instance-initializer-test.js | 38 +++++++++---------- 3 files changed, 21 insertions(+), 21 deletions(-) diff --git a/blueprints/instance-initializer-test/index.js b/blueprints/instance-initializer-test/index.js index 4a4a6dc3398..5414ea92f7c 100644 --- a/blueprints/instance-initializer-test/index.js +++ b/blueprints/instance-initializer-test/index.js @@ -17,7 +17,7 @@ module.exports = useTestFrameworkDetector({ throw "Pods aren't supported within a module unification app"; } - return 'src'; + return 'src/init'; }, __testType__() { return ''; diff --git a/blueprints/instance-initializer/index.js b/blueprints/instance-initializer/index.js index 47f11175ac6..261f0c0d3ac 100644 --- a/blueprints/instance-initializer/index.js +++ b/blueprints/instance-initializer/index.js @@ -13,7 +13,7 @@ module.exports = { throw "Pods aren't supported within a module unification app"; } - return 'src'; + return 'src/init'; }, }; } diff --git a/node-tests/blueprints/instance-initializer-test.js b/node-tests/blueprints/instance-initializer-test.js index 03c22a56a9e..bf77b5bd9df 100644 --- a/node-tests/blueprints/instance-initializer-test.js +++ b/node-tests/blueprints/instance-initializer-test.js @@ -118,25 +118,25 @@ describe('Blueprint: instance-initializer', function() { }); }); - describe.only('in app - module unification', function() { + describe('in app - module unification', function() { beforeEach(function() { return emberNew().then(() => fs.ensureDirSync('src')); }); it('instance-initializer foo', function() { return emberGenerateDestroy(['instance-initializer', 'foo'], _file => { - expect(_file('src/instance-initializers/foo.js')).to.contain( + expect(_file('src/init/instance-initializers/foo.js')).to.contain( 'export function initialize(/* appInstance */) {\n' + - " // appInstance.inject('route', 'foo', 'service:foo');\n" + - '}\n' + - '\n' + - 'export default {\n' + - ' initialize\n' + - '};' + " // appInstance.inject('route', 'foo', 'service:foo');\n" + + '}\n' + + '\n' + + 'export default {\n' + + ' initialize\n' + + '};' ); - expect(_file('src/instance-initializers/foo-test.js')).to.contain( - "import { initialize } from 'my-app/instance-initializers/foo';" + expect(_file('src/init/instance-initializers/foo-test.js')).to.contain( + "import { initialize } from 'my-app/src/init/instance-initializers/foo';" ); expect(_file('app/instance-initializers/foo-test.js')).to.not.exist; @@ -145,18 +145,18 @@ describe('Blueprint: instance-initializer', function() { it('instance-initializer foo/bar', function() { return emberGenerateDestroy(['instance-initializer', 'foo/bar'], _file => { - expect(_file('src/instance-initializers/foo/bar.js')).to.contain( + expect(_file('src/init/instance-initializers/foo/bar.js')).to.contain( 'export function initialize(/* appInstance */) {\n' + - " // appInstance.inject('route', 'foo', 'service:foo');\n" + - '}\n' + - '\n' + - 'export default {\n' + - ' initialize\n' + - '};' + " // appInstance.inject('route', 'foo', 'service:foo');\n" + + '}\n' + + '\n' + + 'export default {\n' + + ' initialize\n' + + '};' ); - expect(_file('src/instance-initializers/foo/bar-test.js')).to.contain( - "import { initialize } from 'my-app/instance-initializers/foo/bar';" + expect(_file('src/init/instance-initializers/foo/bar-test.js')).to.contain( + "import { initialize } from 'my-app/src/init/instance-initializers/foo/bar';" ); expect(_file('tests/unit/instance-initializers/foo/bar-test.js')).to.not.exist; From bfe6f434062157ccb9683c7ccee5fd5de4de97d3 Mon Sep 17 00:00:00 2001 From: Lily Beauvilliers Date: Tue, 1 May 2018 13:59:32 +0100 Subject: [PATCH 3/6] updated import statement in tests to conditionally use module unification path --- blueprints/instance-initializer-test/index.js | 1 + .../__testType__/instance-initializers/__name__-test.js | 2 +- .../__testType__/instance-initializers/__name__-test.js | 2 +- .../__testType__/instance-initializers/__name__-test.js | 2 +- 4 files changed, 4 insertions(+), 3 deletions(-) diff --git a/blueprints/instance-initializer-test/index.js b/blueprints/instance-initializer-test/index.js index 5414ea92f7c..a4ecda0d3e5 100644 --- a/blueprints/instance-initializer-test/index.js +++ b/blueprints/instance-initializer-test/index.js @@ -41,6 +41,7 @@ module.exports = useTestFrameworkDetector({ destroyAppExists: fs.existsSync( path.join(this.project.root, '/tests/helpers/destroy-app.js') ), + moduleUnificationApp: fs.existsSync('src'), }; }, }); diff --git a/blueprints/instance-initializer-test/mocha-files/__root__/__testType__/instance-initializers/__name__-test.js b/blueprints/instance-initializer-test/mocha-files/__root__/__testType__/instance-initializers/__name__-test.js index 4c33d9ca485..07d4c37b371 100644 --- a/blueprints/instance-initializer-test/mocha-files/__root__/__testType__/instance-initializers/__name__-test.js +++ b/blueprints/instance-initializer-test/mocha-files/__root__/__testType__/instance-initializers/__name__-test.js @@ -2,7 +2,7 @@ import { expect } from 'chai'; import { describe, it, beforeEach } from 'mocha'; import Application from '@ember/application'; import { run } from '@ember/runloop'; -import { initialize } from '<%= dasherizedModulePrefix %>/instance-initializers/<%= dasherizedModuleName %>'; +import { initialize } from '<%= dasherizedModulePrefix %>/<% if (moduleUnificationApp) { %>src/init/<% } %>instance-initializers/<%= dasherizedModuleName %>'; import destroyApp from '../../helpers/destroy-app'; describe('<%= friendlyTestName %>', function() { diff --git a/blueprints/instance-initializer-test/qunit-files/__root__/__testType__/instance-initializers/__name__-test.js b/blueprints/instance-initializer-test/qunit-files/__root__/__testType__/instance-initializers/__name__-test.js index 7c9825b7ee2..522f1d0c639 100644 --- a/blueprints/instance-initializer-test/qunit-files/__root__/__testType__/instance-initializers/__name__-test.js +++ b/blueprints/instance-initializer-test/qunit-files/__root__/__testType__/instance-initializers/__name__-test.js @@ -1,6 +1,6 @@ import Application from '@ember/application'; import { run } from '@ember/runloop'; -import { initialize } from '<%= dasherizedModulePrefix %>/instance-initializers/<%= dasherizedModuleName %>'; +import { initialize } from '<%= dasherizedModulePrefix %>/<% if (moduleUnificationApp) { %>src/init/<% } %>instance-initializers/<%= dasherizedModuleName %>'; import { module, test } from 'qunit';<% if (destroyAppExists) { %> import destroyApp from '../../helpers/destroy-app';<% } %> diff --git a/blueprints/instance-initializer-test/qunit-rfc-232-files/__root__/__testType__/instance-initializers/__name__-test.js b/blueprints/instance-initializer-test/qunit-rfc-232-files/__root__/__testType__/instance-initializers/__name__-test.js index 0e67d1414d7..f9c2120d570 100644 --- a/blueprints/instance-initializer-test/qunit-rfc-232-files/__root__/__testType__/instance-initializers/__name__-test.js +++ b/blueprints/instance-initializer-test/qunit-rfc-232-files/__root__/__testType__/instance-initializers/__name__-test.js @@ -1,6 +1,6 @@ import Application from '@ember/application'; -import { initialize } from '<%= dasherizedModulePrefix %>/instance-initializers/<%= dasherizedModuleName %>'; +import { initialize } from '<%= dasherizedModulePrefix %>/<% if (moduleUnificationApp) { %>src/init/<% } %>instance-initializers/<%= dasherizedModuleName %>'; import { module, test } from 'qunit'; import { setupTest } from 'ember-qunit'; <% if (destroyAppExists) { %>import destroyApp from '../../helpers/destroy-app';<% } else { %>import { run } from '@ember/runloop';<% } %> From cb58c817ab04fd895394e14cb5c9146dd0dbc726 Mon Sep 17 00:00:00 2001 From: Lily Beauvilliers Date: Tue, 1 May 2018 14:26:31 +0100 Subject: [PATCH 4/6] make src check safer --- blueprints/instance-initializer-test/index.js | 4 +++- .../__testType__/instance-initializers/__name__-test.js | 2 +- .../__testType__/instance-initializers/__name__-test.js | 2 +- .../__testType__/instance-initializers/__name__-test.js | 2 +- 4 files changed, 6 insertions(+), 4 deletions(-) diff --git a/blueprints/instance-initializer-test/index.js b/blueprints/instance-initializer-test/index.js index a4ecda0d3e5..a48675b0019 100644 --- a/blueprints/instance-initializer-test/index.js +++ b/blueprints/instance-initializer-test/index.js @@ -41,7 +41,9 @@ module.exports = useTestFrameworkDetector({ destroyAppExists: fs.existsSync( path.join(this.project.root, '/tests/helpers/destroy-app.js') ), - moduleUnificationApp: fs.existsSync('src'), + isModuleUnificationApp: fs.existsSync( + path.join(this.project.root, '/src') + ), }; }, }); diff --git a/blueprints/instance-initializer-test/mocha-files/__root__/__testType__/instance-initializers/__name__-test.js b/blueprints/instance-initializer-test/mocha-files/__root__/__testType__/instance-initializers/__name__-test.js index 07d4c37b371..89ab5e30389 100644 --- a/blueprints/instance-initializer-test/mocha-files/__root__/__testType__/instance-initializers/__name__-test.js +++ b/blueprints/instance-initializer-test/mocha-files/__root__/__testType__/instance-initializers/__name__-test.js @@ -2,7 +2,7 @@ import { expect } from 'chai'; import { describe, it, beforeEach } from 'mocha'; import Application from '@ember/application'; import { run } from '@ember/runloop'; -import { initialize } from '<%= dasherizedModulePrefix %>/<% if (moduleUnificationApp) { %>src/init/<% } %>instance-initializers/<%= dasherizedModuleName %>'; +import { initialize } from '<%= dasherizedModulePrefix %>/<% if (isModuleUnificationApp) { %>src/init/<% } %>instance-initializers/<%= dasherizedModuleName %>'; import destroyApp from '../../helpers/destroy-app'; describe('<%= friendlyTestName %>', function() { diff --git a/blueprints/instance-initializer-test/qunit-files/__root__/__testType__/instance-initializers/__name__-test.js b/blueprints/instance-initializer-test/qunit-files/__root__/__testType__/instance-initializers/__name__-test.js index 522f1d0c639..a724617ed16 100644 --- a/blueprints/instance-initializer-test/qunit-files/__root__/__testType__/instance-initializers/__name__-test.js +++ b/blueprints/instance-initializer-test/qunit-files/__root__/__testType__/instance-initializers/__name__-test.js @@ -1,6 +1,6 @@ import Application from '@ember/application'; import { run } from '@ember/runloop'; -import { initialize } from '<%= dasherizedModulePrefix %>/<% if (moduleUnificationApp) { %>src/init/<% } %>instance-initializers/<%= dasherizedModuleName %>'; +import { initialize } from '<%= dasherizedModulePrefix %>/<% if (isModuleUnificationApp) { %>src/init/<% } %>instance-initializers/<%= dasherizedModuleName %>'; import { module, test } from 'qunit';<% if (destroyAppExists) { %> import destroyApp from '../../helpers/destroy-app';<% } %> diff --git a/blueprints/instance-initializer-test/qunit-rfc-232-files/__root__/__testType__/instance-initializers/__name__-test.js b/blueprints/instance-initializer-test/qunit-rfc-232-files/__root__/__testType__/instance-initializers/__name__-test.js index f9c2120d570..0fb0edb99c9 100644 --- a/blueprints/instance-initializer-test/qunit-rfc-232-files/__root__/__testType__/instance-initializers/__name__-test.js +++ b/blueprints/instance-initializer-test/qunit-rfc-232-files/__root__/__testType__/instance-initializers/__name__-test.js @@ -1,6 +1,6 @@ import Application from '@ember/application'; -import { initialize } from '<%= dasherizedModulePrefix %>/<% if (moduleUnificationApp) { %>src/init/<% } %>instance-initializers/<%= dasherizedModuleName %>'; +import { initialize } from '<%= dasherizedModulePrefix %>/<% if (isModuleUnificationApp) { %>src/init/<% } %>instance-initializers/<%= dasherizedModuleName %>'; import { module, test } from 'qunit'; import { setupTest } from 'ember-qunit'; <% if (destroyAppExists) { %>import destroyApp from '../../helpers/destroy-app';<% } else { %>import { run } from '@ember/runloop';<% } %> From 686e7d73eca33740854045f11bfed9817c390506 Mon Sep 17 00:00:00 2001 From: Lily Beauvilliers Date: Tue, 1 May 2018 15:26:29 +0100 Subject: [PATCH 5/6] code cleanup --- blueprints/instance-initializer-test/index.js | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/blueprints/instance-initializer-test/index.js b/blueprints/instance-initializer-test/index.js index a48675b0019..a2a01603486 100644 --- a/blueprints/instance-initializer-test/index.js +++ b/blueprints/instance-initializer-test/index.js @@ -41,9 +41,7 @@ module.exports = useTestFrameworkDetector({ destroyAppExists: fs.existsSync( path.join(this.project.root, '/tests/helpers/destroy-app.js') ), - isModuleUnificationApp: fs.existsSync( - path.join(this.project.root, '/src') - ), + isModuleUnificationApp: fs.existsSync(path.join(this.project.root, '/src')), }; }, }); From e2351bb1388fe932cbf73eaedd3e6b07c4e01df9 Mon Sep 17 00:00:00 2001 From: Lily Beauvilliers Date: Tue, 1 May 2018 17:59:10 +0100 Subject: [PATCH 6/6] in addon tests minus dummy case --- .../instance-initializer-addon/index.js | 15 ++++++- .../blueprints/instance-initializer-test.js | 42 +++++++++++++++++++ 2 files changed, 56 insertions(+), 1 deletion(-) diff --git a/blueprints/instance-initializer-addon/index.js b/blueprints/instance-initializer-addon/index.js index d964eeb1864..3e45bed81d8 100644 --- a/blueprints/instance-initializer-addon/index.js +++ b/blueprints/instance-initializer-addon/index.js @@ -1,3 +1,16 @@ 'use strict'; -module.exports = require('../-addon-import'); +let addonImport = require('../-addon-import'); +const isModuleUnificationProject = require('../module-unification').isModuleUnificationProject; + +addonImport.fileMapTokens = function() { + if (isModuleUnificationProject(this.project)) { + return { + __root__() { + return 'src/init'; + }, + }; + } +}; + +module.exports = addonImport; diff --git a/node-tests/blueprints/instance-initializer-test.js b/node-tests/blueprints/instance-initializer-test.js index bf77b5bd9df..125f6b23074 100644 --- a/node-tests/blueprints/instance-initializer-test.js +++ b/node-tests/blueprints/instance-initializer-test.js @@ -253,6 +253,48 @@ describe('Blueprint: instance-initializer', function() { }); }); + describe('in addon - module unification', function() { + beforeEach(function() { + return emberNew({ target: 'addon' }).then(() => fs.ensureDirSync('src')); + }); + + it('instance-initializer foo', function() { + return emberGenerateDestroy(['instance-initializer', 'foo'], _file => { + expect(_file('src/init/instance-initializers/foo.js')).to.contain( + 'export function initialize(/* appInstance */) {\n' + + " // appInstance.inject('route', 'foo', 'service:foo');\n" + + '}\n' + + '\n' + + 'export default {\n' + + ' initialize\n' + + '};' + ); + + expect(_file('src/init/instance-initializers/foo-test.js')); + + expect(_file('app/instance-initializers/foo.js')).to.not.exist; + }); + }); + + it('instance-initializer foo/bar', function() { + return emberGenerateDestroy(['instance-initializer', 'foo/bar'], _file => { + expect(_file('src/init/instance-initializers/foo/bar.js')).to.contain( + 'export function initialize(/* appInstance */) {\n' + + " // appInstance.inject('route', 'foo', 'service:foo');\n" + + '}\n' + + '\n' + + 'export default {\n' + + ' initialize\n' + + '};' + ); + + expect(_file('app/src/instance-initializers/foo/bar-test.js')); + + expect(_file('app/instance-initializers/foo/bar.js')).to.not.exist; + }); + }); + }); + describe('in in-repo-addon', function() { beforeEach(function() { return emberNew({ target: 'in-repo-addon' });