Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
34 changes: 33 additions & 1 deletion blueprints/instance-initializer-test/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -5,13 +5,45 @@ 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: function() {
if (isModuleUnificationProject(this.project)) {
return {
__root__(options) {
if (options.pod) {
throw new Error('Pods arenʼt supported within a module unification app');
} else if (options.inDummy) {
return path.join('tests', 'dummy', 'src', 'init');
}
return path.join('src', 'init');
},
__testType__() {
return '';
},
};
} else {
return {
__root__() {
return 'tests';
},
__testType__() {
return 'unit';
},
};
}
},
locals: function(options) {
let modulePrefix = stringUtils.dasherize(options.project.config().modulePrefix);
if (isModuleUnificationProject(this.project)) {
modulePrefix += '/init';
}
return {
friendlyTestName: ['Unit', 'Instance Initializer', options.entity.name].join(' | '),
dasherizedModulePrefix: stringUtils.dasherize(options.project.config().modulePrefix),
modulePrefix,
destroyAppExists: fs.existsSync(
path.join(this.project.root, '/tests/helpers/destroy-app.js')
),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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 '<%= modulePrefix %>/instance-initializers/<%= dasherizedModuleName %>';
import destroyApp from '../../helpers/destroy-app';

describe('<%= friendlyTestName %>', function() {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import Application from '@ember/application';
import { run } from '@ember/runloop';
import { initialize } from '<%= dasherizedModulePrefix %>/instance-initializers/<%= dasherizedModuleName %>';
import { initialize } from '<%= modulePrefix %>/instance-initializers/<%= dasherizedModuleName %>';
import { module, test } from 'qunit';<% if (destroyAppExists) { %>
import destroyApp from '../../helpers/destroy-app';<% } %>

Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import Application from '@ember/application';

import { initialize } from '<%= dasherizedModulePrefix %>/instance-initializers/<%= dasherizedModuleName %>';
import { initialize } from '<%= modulePrefix %>/instance-initializers/<%= dasherizedModuleName %>';
import { module, test } from 'qunit';
<% if (destroyAppExists) { %>import destroyApp from '../../helpers/destroy-app';<% } else { %>import { run } from '@ember/runloop';<% } %>

Expand Down
18 changes: 18 additions & 0 deletions blueprints/instance-initializer/index.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,23 @@
'use strict';

const path = require('path');
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 new Error('Pods arenʼt supported within a module unification app');
} else if (options.inDummy) {
return path.join('tests', 'dummy', 'src/init');
}
return 'src/init';
},
};
}
},
};
80 changes: 80 additions & 0 deletions node-tests/blueprints/instance-initializer-test-test.js
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ const expect = chai.expect;

const generateFakePackageManifest = require('../helpers/generate-fake-package-manifest');
const fixture = require('../helpers/fixture');
const fs = require('fs-extra');

describe('Blueprint: instance-initializer-test', function() {
setupTestHooks(this);
Expand Down Expand Up @@ -85,4 +86,83 @@ describe('Blueprint: instance-initializer-test', function() {
});
});
});

describe('in app - module unification', function() {
beforeEach(function() {
return emberNew().then(() => fs.ensureDirSync('src'));
});

describe('with ember-cli-qunit@4.1.0', function() {
beforeEach(function() {
generateFakePackageManifest('ember-cli-qunit', '4.1.0');
});

it('instance-initializer-test foo', function() {
return emberGenerateDestroy(['instance-initializer-test', 'foo'], _file => {
expect(_file('src/init/instance-initializers/foo-test.js')).to.equal(
fixture('instance-initializer-test/module-unification/default.js')
);
});
});
});

describe('with ember-cli-qunit@4.2.0', function() {
beforeEach(function() {
generateFakePackageManifest('ember-cli-qunit', '4.2.0');
});

it('instance-initializer-test foo', function() {
return emberGenerateDestroy(['instance-initializer-test', 'foo'], _file => {
expect(_file('src/init/instance-initializers/foo-test.js')).to.equal(
fixture('instance-initializer-test/module-unification/rfc232.js')
);
});
});
});

describe('with ember-cli-mocha', function() {
beforeEach(function() {
modifyPackages([
{ name: 'ember-cli-qunit', delete: true },
{ name: 'ember-cli-mocha', dev: true },
]);
});

it('instance-initializer-test foo for mocha', function() {
return emberGenerateDestroy(['instance-initializer-test', 'foo'], _file => {
expect(_file('src/init/instance-initializers/foo-test.js')).to.equal(
fixture('instance-initializer-test/module-unification/mocha.js')
);
});
});
});
});

describe('in addon - module unification', function() {
beforeEach(function() {
return emberNew({ target: 'addon' }).then(() => fs.ensureDirSync('src'));
});

describe('with ember-cli-qunit@4.1.0', function() {
beforeEach(function() {
generateFakePackageManifest('ember-cli-qunit', '4.1.0');
});

it('instance-initializer-test foo', function() {
return emberGenerateDestroy(['instance-initializer-test', 'foo'], _file => {
expect(_file('src/init/instance-initializers/foo-test.js')).to.equal(
fixture('instance-initializer-test/module-unification/dummy.js')
);
});
});

it('instance-initializer-test foo --dummy', function() {
return emberGenerateDestroy(['instance-initializer-test', 'foo', '--dummy'], _file => {
expect(_file('tests/dummy/src/init/instance-initializers/foo-test.js')).to.equal(
fixture('instance-initializer-test/module-unification/dummy.js')
);
});
});
});
});
});
119 changes: 119 additions & 0 deletions node-tests/blueprints/instance-initializer-test.js
Original file line number Diff line number Diff line change
Expand Up @@ -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');

const generateFakePackageManifest = require('../helpers/generate-fake-package-manifest');
const fixture = require('../helpers/fixture');
Expand Down Expand Up @@ -184,4 +186,121 @@ describe('Blueprint: instance-initializer', function() {
);
});
});

describe('in app - module unification', function() {
beforeEach(function() {
return emberNew()
.then(() => fs.ensureDirSync('src'))
.then(() => generateFakePackageManifest('ember-cli-qunit', '4.1.0'));
});

it('instance-initializer foo', function() {
return emberGenerateDestroy(['instance-initializer', 'foo'], _file => {
expect(_file('src/init/instance-initializers/foo.js')).to.equal(
fixture('instance-initializer/instance-initializer.js')
);

expect(_file('src/init/instance-initializers/foo-test.js')).to.contain(
"import { initialize } from 'my-app/init/instance-initializers/foo';"
);
});
});

it('instance-initializer foo/bar', function() {
return emberGenerateDestroy(['instance-initializer', 'foo/bar'], _file => {
expect(_file('src/init/instance-initializers/foo/bar.js')).to.equal(
fixture('instance-initializer/instance-initializer-nested.js')
);

expect(_file('src/init/instance-initializers/foo/bar-test.js')).to.contain(
"import { initialize } from 'my-app/init/instance-initializers/foo/bar';"
);
});
});

it('instance-initializer foo --pod', function() {
return expectError(
emberGenerateDestroy(['instance-initializer', 'foo', '--pod']),
'Pods arenʼt supported within a module unification app'
);
});

it('instance-initializer foo/bar --pod', function() {
return expectError(
emberGenerateDestroy(['instance-initializer', 'foo/bar', '--pod']),
'Pods arenʼt supported within a module unification app'
);
});

describe('with podModulePrefix', function() {
beforeEach(function() {
setupPodConfig({ podModulePrefix: true });
});

it('instance-initializer foo --pod', function() {
return expectError(
emberGenerateDestroy(['instance-initializer', 'foo', '--pod']),
'Pods arenʼt supported within a module unification app'
);
});

it('instance-initializer foo/bar --pod', function() {
return expectError(
emberGenerateDestroy(['instance-initializer', 'foo/bar', '--pod']),
'Pods arenʼt supported within a module unification app'
);
});
});
});
describe('in addon - module unification', function() {
beforeEach(function() {
return emberNew({ target: 'addon' })
.then(() => fs.ensureDirSync('src'))
.then(() => generateFakePackageManifest('ember-cli-qunit', '4.1.0'));
});

it('instance-initializer foo', function() {
return emberGenerateDestroy(['instance-initializer', 'foo'], _file => {
expect(_file('src/init/instance-initializers/foo.js')).to.equal(
fixture('instance-initializer/instance-initializer.js')
);

expect(_file('tests/unit/instance-initializers/foo-test.js'));
});
});

it('instance-initializer foo/bar', function() {
return emberGenerateDestroy(['instance-initializer', 'foo/bar'], _file => {
expect(_file('src/init/instance-initializers/foo/bar.js')).to.equal(
fixture('instance-initializer/instance-initializer-nested.js')
);

expect(_file('src/init/instance-initializers/foo/bar-test.js'));
});
});

it('instance-initializer foo --dummy', function() {
return emberGenerateDestroy(['instance-initializer', 'foo', '--dummy'], _file => {
expect(_file('tests/dummy/src/init/instance-initializers/foo.js')).to.equal(
fixture('instance-initializer/instance-initializer.js')
);

expect(_file('src/init/instance-initializers/foo.js')).to.not.exist;

expect(_file('src/init/instance-initializers/foo-test.js')).to.not.exist;
});
});

it('instance-initializer foo/bar --dummy', function() {
return emberGenerateDestroy(['instance-initializer', 'foo/bar', '--dummy'], _file => {
expect(_file('tests/dummy/src/init/instance-initializers/foo/bar.js')).to.equal(
fixture('instance-initializer/instance-initializer-nested.js')
);

expect(_file('src/init/instance-initializers/foo/bar.js')).to.not.exist;

expect(_file('src/init/instance-initializers/foo/bar-test.js')).to.not.exist;
});
});
});
});
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
import Application from '@ember/application';
import { run } from '@ember/runloop';
import { initialize } from 'my-app/init/instance-initializers/foo';
import { module, test } from 'qunit';

module('Unit | Instance Initializer | foo', {
beforeEach() {
run(() => {
this.application = Application.create();
this.appInstance = this.application.buildInstance();
});
},
afterEach() {
run(this.appInstance, 'destroy');
run(this.application, 'destroy');
}
});

// Replace this with your real tests.
test('it works', function(assert) {
initialize(this.appInstance);

// you would normally confirm the results of the initializer here
assert.ok(true);
});
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
import Application from '@ember/application';
import { run } from '@ember/runloop';
import { initialize } from 'dummy/init/instance-initializers/foo';
import { module, test } from 'qunit';

module('Unit | Instance Initializer | foo', {
beforeEach() {
run(() => {
this.application = Application.create();
this.appInstance = this.application.buildInstance();
});
},
afterEach() {
run(this.appInstance, 'destroy');
run(this.application, 'destroy');
}
});

// Replace this with your real tests.
test('it works', function(assert) {
initialize(this.appInstance);

// you would normally confirm the results of the initializer here
assert.ok(true);
});
Loading