Giter Site home page Giter Site logo

ember-cli-blueprint-test-helpers's Introduction

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

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

  it('my-blueprint foo', function() {
    var 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:

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

  it('my-blueprint foo', function() {
    var 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:

  • require('ember-cli-blueprint-test-helpers/chai')

    This endpoint exports the Chai assertion library including the chai-as-promised and chai-files plugins

  • require('ember-cli-blueprint-test-helpers/helpers')

    This endpoint exports the functions mentioned in the following API reference


setupTestHooks(scope, options)

Prepare the test context for the blueprint tests.

Parameters:

  • {Object} scope the test context (i.e. this)
  • {Object} [options] optional parameters
  • {Number} [options.timeout=20000] the test timeout in milliseconds
  • {Object} [options.tmpenv] object containing info about the temporary directory for the test.
  • {String} [options.cliPath='ember-cli'] path to the ember-cli dependency
  • {Boolean} [options.disabledTasks=['addon-install', 'bower-install', 'npm-install']] override the mocked installs Defaults to lib/helpers/tmp-env.js

Returns: {Promise}


emberNew(options)

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

Parameters:

  • {Object} [options] optional parameters
  • {String} [options.target='app'] the type of project to create (app, addon or in-repo-addon)

Returns: {Promise}


emberGenerate(args)

Run a blueprint generator.

Parameters:

  • {Array.<String>} args arguments to pass to ember generate (e.g. ['my-blueprint', 'foo'])

Returns: {Promise}


emberDestroy(args)

Run a blueprint destructor.

Parameters:

  • {Array.<String>} args arguments to pass to ember destroy (e.g. ['my-blueprint', 'foo'])

Returns: {Promise}


emberGenerateDestroy(args, assertionCallback)

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

Parameters:

  • {Array.<String>} args arguments to pass to ember generate (e.g. ['my-blueprint', 'foo'])
  • {Function} assertionCallback the callback function in which the assertions should happen

Returns: {Promise}


modifyPackages(packages)

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

Parameters:

  • {Array.<Object>} packages the list of packages that should be added, changed or removed

setupPodConfig(options)

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

Parameters:

  • {Object} [options] optional parameters
  • {Boolean} [options.usePods] add usePods in .ember-cli
  • {Boolean} [options.podModulePrefix] set npodModulePrefix to app/pods in config/environment.js

Used by

License

This project is licensed under the MIT License.

ember-cli-blueprint-test-helpers's People

Contributors

greenkeeper[bot] avatar greenkeeperio-bot avatar jcope2013 avatar jeradg avatar kimroen avatar nathanhammond avatar pangratz avatar rwjblue avatar simonihmig avatar stefanpenner avatar trabus avatar turbo87 avatar twokul avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.