Skip to content

Commit 08de2e6

Browse files
authored
Merge pull request #1411 from typed-ember/blueprint_add_ember-data_modules_types
feat: install @types/ember-data__* when ember-data is found
2 parents 1acbd58 + f850634 commit 08de2e6

File tree

3 files changed

+36
-0
lines changed

3 files changed

+36
-0
lines changed

ts/blueprints/ember-cli-typescript/index.js

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -174,6 +174,10 @@ module.exports = {
174174

175175
if (this._has('ember-data')) {
176176
packages.push('@types/ember-data');
177+
packages.push('@types/ember-data__adapter');
178+
packages.push('@types/ember-data__model');
179+
packages.push('@types/ember-data__serializer');
180+
packages.push('@types/ember-data__store');
177181
}
178182

179183
if (this._has('ember-cli-qunit') || this._has('ember-qunit')) {

ts/tests/blueprints/ember-cli-typescript-test.ts

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,12 +6,15 @@ import helpers from 'ember-cli-blueprint-test-helpers/helpers';
66
import chaiHelpers from 'ember-cli-blueprint-test-helpers/chai';
77
import Blueprint from 'ember-cli/lib/models/blueprint';
88

9+
import { setupPublishedVersionStashing } from '../helpers/stash-published-version';
910
import ects from '../../blueprints/ember-cli-typescript/index';
1011

1112
const expect = chaiHelpers.expect;
1213
const file = chaiHelpers.file;
1314

1415
describe('Acceptance: ember-cli-typescript generator', function () {
16+
setupPublishedVersionStashing(this);
17+
1518
helpers.setupTestHooks(this, {
1619
disabledTasks: ['addon-install', 'bower-install'],
1720
});
@@ -57,6 +60,10 @@ describe('Acceptance: ember-cli-typescript generator', function () {
5760
expect(pkgJson.devDependencies).to.include.all.keys('ember-cli-typescript-blueprints');
5861
expect(pkgJson.devDependencies).to.include.all.keys('ember-data');
5962
expect(pkgJson.devDependencies).to.include.all.keys('@types/ember-data');
63+
expect(pkgJson.devDependencies).to.include.all.keys('@types/ember-data__adapter');
64+
expect(pkgJson.devDependencies).to.include.all.keys('@types/ember-data__model');
65+
expect(pkgJson.devDependencies).to.include.all.keys('@types/ember-data__serializer');
66+
expect(pkgJson.devDependencies).to.include.all.keys('@types/ember-data__store');
6067
expect(pkgJson.devDependencies).to.include.all.keys('ember-qunit');
6168
expect(pkgJson.devDependencies).to.include.all.keys('@types/ember-qunit', '@types/qunit');
6269
expect(pkgJson.devDependencies).to.not.have.any.keys('@types/ember-mocha', '@types/mocha');
@@ -103,6 +110,10 @@ describe('Acceptance: ember-cli-typescript generator', function () {
103110
expect(pkgJson.devDependencies).to.not.include.all.keys('ember-cli-typescript');
104111
expect(pkgJson.devDependencies).to.not.have.any.keys('ember-data');
105112
expect(pkgJson.devDependencies).to.not.have.any.keys('@types/ember-data');
113+
expect(pkgJson.devDependencies).to.not.have.any.keys('@types/ember-data__adapter');
114+
expect(pkgJson.devDependencies).to.not.have.any.keys('@types/ember-data__model');
115+
expect(pkgJson.devDependencies).to.not.have.any.keys('@types/ember-data__serializer');
116+
expect(pkgJson.devDependencies).to.not.have.any.keys('@types/ember-data__store');
106117
expect(pkgJson.devDependencies).to.include.all.keys('ember-qunit');
107118
expect(pkgJson.devDependencies).to.include.all.keys('@types/ember-qunit', '@types/qunit');
108119
expect(pkgJson.devDependencies).to.not.have.any.keys('@types/ember-mocha', '@types/mocha');
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
import fs from 'fs-extra';
2+
3+
const PACKAGE_PATH = 'node_modules/ember-cli-typescript';
4+
5+
/**
6+
* We have assorted devDependencies that themselves depend on `ember-cli-typescript`.
7+
* This means we have a published copy of the addon present in `node_modules` normally,
8+
* though `ember-cli-blueprint-test-helpers` fiddles around in there as well.
9+
*
10+
* This helper ensures we move the published version of the addon out of the way into
11+
* an inert location during the enclosing `describe` block and put it back afterwards.
12+
*/
13+
export function setupPublishedVersionStashing(hooks: Mocha.Suite): void {
14+
hooks.beforeAll(async () => {
15+
await fs.move(PACKAGE_PATH, `${PACKAGE_PATH}.published`);
16+
});
17+
18+
hooks.afterAll(async () => {
19+
await fs.move(`${PACKAGE_PATH}.published`, PACKAGE_PATH);
20+
});
21+
}

0 commit comments

Comments
 (0)