Skip to content

Commit

Permalink
Merge pull request #1411 from typed-ember/blueprint_add_ember-data_mo…
Browse files Browse the repository at this point in the history
…dules_types

feat: install @types/ember-data__* when ember-data is found
  • Loading branch information
jamescdavis committed Jun 15, 2021
2 parents 1acbd58 + f850634 commit 08de2e6
Show file tree
Hide file tree
Showing 3 changed files with 36 additions and 0 deletions.
4 changes: 4 additions & 0 deletions ts/blueprints/ember-cli-typescript/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -174,6 +174,10 @@ module.exports = {

if (this._has('ember-data')) {
packages.push('@types/ember-data');
packages.push('@types/ember-data__adapter');
packages.push('@types/ember-data__model');
packages.push('@types/ember-data__serializer');
packages.push('@types/ember-data__store');
}

if (this._has('ember-cli-qunit') || this._has('ember-qunit')) {
Expand Down
11 changes: 11 additions & 0 deletions ts/tests/blueprints/ember-cli-typescript-test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,12 +6,15 @@ import helpers from 'ember-cli-blueprint-test-helpers/helpers';
import chaiHelpers from 'ember-cli-blueprint-test-helpers/chai';
import Blueprint from 'ember-cli/lib/models/blueprint';

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

const expect = chaiHelpers.expect;
const file = chaiHelpers.file;

describe('Acceptance: ember-cli-typescript generator', function () {
setupPublishedVersionStashing(this);

helpers.setupTestHooks(this, {
disabledTasks: ['addon-install', 'bower-install'],
});
Expand Down Expand Up @@ -57,6 +60,10 @@ describe('Acceptance: ember-cli-typescript generator', function () {
expect(pkgJson.devDependencies).to.include.all.keys('ember-cli-typescript-blueprints');
expect(pkgJson.devDependencies).to.include.all.keys('ember-data');
expect(pkgJson.devDependencies).to.include.all.keys('@types/ember-data');
expect(pkgJson.devDependencies).to.include.all.keys('@types/ember-data__adapter');
expect(pkgJson.devDependencies).to.include.all.keys('@types/ember-data__model');
expect(pkgJson.devDependencies).to.include.all.keys('@types/ember-data__serializer');
expect(pkgJson.devDependencies).to.include.all.keys('@types/ember-data__store');
expect(pkgJson.devDependencies).to.include.all.keys('ember-qunit');
expect(pkgJson.devDependencies).to.include.all.keys('@types/ember-qunit', '@types/qunit');
expect(pkgJson.devDependencies).to.not.have.any.keys('@types/ember-mocha', '@types/mocha');
Expand Down Expand Up @@ -103,6 +110,10 @@ describe('Acceptance: ember-cli-typescript generator', function () {
expect(pkgJson.devDependencies).to.not.include.all.keys('ember-cli-typescript');
expect(pkgJson.devDependencies).to.not.have.any.keys('ember-data');
expect(pkgJson.devDependencies).to.not.have.any.keys('@types/ember-data');
expect(pkgJson.devDependencies).to.not.have.any.keys('@types/ember-data__adapter');
expect(pkgJson.devDependencies).to.not.have.any.keys('@types/ember-data__model');
expect(pkgJson.devDependencies).to.not.have.any.keys('@types/ember-data__serializer');
expect(pkgJson.devDependencies).to.not.have.any.keys('@types/ember-data__store');
expect(pkgJson.devDependencies).to.include.all.keys('ember-qunit');
expect(pkgJson.devDependencies).to.include.all.keys('@types/ember-qunit', '@types/qunit');
expect(pkgJson.devDependencies).to.not.have.any.keys('@types/ember-mocha', '@types/mocha');
Expand Down
21 changes: 21 additions & 0 deletions ts/tests/helpers/stash-published-version.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
import fs from 'fs-extra';

const PACKAGE_PATH = 'node_modules/ember-cli-typescript';

/**
* We have assorted devDependencies that themselves depend on `ember-cli-typescript`.
* This means we have a published copy of the addon present in `node_modules` normally,
* though `ember-cli-blueprint-test-helpers` fiddles around in there as well.
*
* This helper ensures we move the published version of the addon out of the way into
* an inert location during the enclosing `describe` block and put it back afterwards.
*/
export function setupPublishedVersionStashing(hooks: Mocha.Suite): void {
hooks.beforeAll(async () => {
await fs.move(PACKAGE_PATH, `${PACKAGE_PATH}.published`);
});

hooks.afterAll(async () => {
await fs.move(`${PACKAGE_PATH}.published`, PACKAGE_PATH);
});
}

0 comments on commit 08de2e6

Please sign in to comment.