ember-cli / ember-cli-blueprint-test-helpers

Test helpers for testing ember-cli blueprints
23 stars 14 forks source link
ember-cli

ember-cli-blueprint-test-helpers

npm version Build Status Build status

test helpers for ember-cli blueprints

Installation

ember install ember-cli-blueprint-test-helpers

It should be noted that ember-cli-blueprint-test-helpers currently only works for testing blueprints inside addon projects.

Usage

Running Tests

The blueprint tests can be run by:

node_modules/.bin/mocha node-tests --recursive

For convenience you should add the following to your package.json:

"scripts": {
  "nodetest": "mocha node-tests --recursive"
}

to be able to use npm run nodetest to run the tests.

Generating Tests

Generate a blueprint test scaffold using the blueprint-test generator:

ember generate blueprint-test my-blueprint

which will generate a test file at node-tests/blueprints/my-blueprint-test.js.

Example Usage

const { 
  setupTestHooks,
  emberNew,
  emberGenerateDestroy,
} = require('ember-cli-blueprint-test-helpers/helpers');

const {
  expect
} = require('ember-cli-blueprint-test-helpers/chai');

describe('Acceptance: ember generate and destroy my-blueprint', function() {
  // create and destroy temporary working directories
  setupTestHooks(this);

  it('my-blueprint foo', function() {
    const args = ['my-blueprint', 'foo'];

    // create a new Ember.js app in the working directory
    return emberNew()

      // then generate and destroy the `my-blueprint` blueprint called `foo`
      .then(() => emberGenerateDestroy(args, (file) => {

        // and run some assertions in between
        expect(file('path/to/file.js'))
          .to.contain('file contents to match')
          .to.contain('more file contents\n');
      }));

     // magically done for you: assert that the generated files are destroyed again
  });
});

or more explicitly:

const { 
  setupTestHooks,
  emberNew,
  emberGenerate,
  emberDestroy,
} = require('ember-cli-blueprint-test-helpers/helpers');

const {
  expect,
  file,
} = require('ember-cli-blueprint-test-helpers/chai');

describe('Acceptance: ember generate and destroy my-blueprint', function() {
  // create and destroy temporary working directories
  setupTestHooks(this);

  it('my-blueprint foo', function() {
    const args = ['my-blueprint', 'foo'];

    // create a new Ember.js app in the working directory
    return emberNew()

      // then generate the `my-blueprint` blueprint called `foo`
      .then(() => emberGenerate(args))

      // then assert that the files were generated correctly
      .then(() => expect(file('path/to/file.js'))
        .to.contain('file contents to match')
        .to.contain('more file contents\n'))

      // then destroy the `my-blueprint` blueprint called `foo`
      .then(() => emberDestroy(args))

      // then assert that the files were destroyed correctly
      .then(() => expect(file('path/to/file.js')).to.not.exist);
  });
});

API Reference

This project exports two major API endpoints for you to use:


setupTestHooks(scope, options)

Prepare the test context for the blueprint tests.

Parameters:

Returns: {Promise}


emberNew(options)

Create a new Ember.js app or addon in the current working directory.

Parameters:

Returns: {Promise}


emberGenerate(args)

Run a blueprint generator.

Parameters:

Returns: {Promise}


emberDestroy(args)

Run a blueprint destructor.

Parameters:

Returns: {Promise}


emberGenerateDestroy(args, assertionCallback)

Run a blueprint generator and the corresponding blueprint destructor while checking assertions in between.

Parameters:

Returns: {Promise}


modifyPackages(packages)

Modify the dependencies in the package.json file of the test project.

Parameters:


setupPodConfig(options)

Setup usePods in .ember-cli and/or podModulePrefix in environment.js.

Parameters:

Used by

License

This project is licensed under the MIT License.