Home

Awesome

ember-mocha-codemods

Build Status

codemod scripts for ember-mocha

Installation

ember-mocha-codemods itself doesn't need to be installed, but you need to install jscodeshift to run the codemod script:

npm install -g jscodeshift

Usage

You can clone/download this repository or just run the codemods from URL like shown in the following examples:

new-testing-api

Changes your code to use the new testing API introduced in ember-mocha@0.9.0.

jscodeshift -t https://raw.githubusercontent.com/Turbo87/ember-mocha-codemods/master/new-testing-api.js PATH

Before:

import { expect } from 'chai';
import { it } from 'mocha';
import { describeModule } from 'ember-mocha';

describeModule(
  'route:subscribers',
  'Unit: Route: subscribers',
  {
    needs: ['service:notifications']
  },
  function() {
    it('exists', function() {
      let route = this.subject();
      expect(route).to.be.ok;
    });
  }
);

After:

import { expect } from 'chai';
import { it, describe } from 'mocha';
import { setupTest } from 'ember-mocha';

describe('Unit: Route: subscribers', function() {
  setupTest('route:subscribers', {
    needs: ['service:notifications']
  });

  it('exists', function() {
    let route = this.subject();
    expect(route).to.be.ok;
  });
});

import-it-from-mocha

Changes your code to import it() from mocha directly instead of ember-mocha.

jscodeshift -t https://raw.githubusercontent.com/Turbo87/ember-mocha-codemods/master/import-it-from-mocha.js PATH

Before:

import { it } from 'ember-mocha';

After:

import { it } from 'mocha';

Testing API beginning in 0.14

Changes your code to be compliant with the migration guide found here.

The API beginning in 0.14 introduces many shared helpers and setup across the various types of Ember.js tests. Formerly these types were called: acceptance for application wide concerns, integration for component tests (both rendering and user interaction), and finally unit tests for testing individual units at the lowest level. In the newest API these have been reframed as application tests (formerly acceptance), rendering tests (formerly integration), and unit tests are largely unchanged.

The majority of these changes are to unify test setup and helper usage. A detailed list of the new helper APIs can be found here.

This codemod will follow the migration guide to help you move your test suite from the style defined in 0.9 to the style defined in 0.14.

It is important to review these changes, since there are many different configurations which this codemod attempts to reconcile with the new style you'll still need to review files after running this and make the necessary adjustments. If you notice something that you feel the codemod should handle and doesn't please leave an issue with clearly defined inputs and outputs and an explanation of why you think it should handle this and we'll discuss resolutions.

To begin this code mod:

jscodeshift -t https://raw.githubusercontent.com/Turbo87/ember-mocha-codemods/master/fourteen-testing-api.js PATH

This will do much of what you want, but notably does not handle many of the new helpers from @ember/test-helpers this is because there is another codemod that should also be run which can be found here.

cd my-ember-app-or-addon
npx ember-test-helpers-codemod integration tests/integration
npx ember-test-helpers-codemod acceptance tests/acceptance
npx ember-test-helpers-codemod native-dom tests

License

ember-mocha-codemods is licensed under the MIT License.