Blueprint test helpers for ember-cli. Mocks ember-cli for generate and destroy commands.
npm install ember-cli-blueprint-test-helpers
ember-cli-blueprint-test-helpers
==============================================================================



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
------------------------------------------------------------------------------
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:
`json`
"scripts": {
"nodetest": "mocha node-tests --recursive"
}
to be able to use npm run nodetest to run the 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.
`js
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:
`js
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);
});
});
`
if your blueprints support the new
MU file structure, you can test them
using this option: { ìsModuleUnification: true }
`js
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
// this app will have MU file structure, namely a src directory
return emberNew({ isModuleUnification: true })
// then generate the my-blueprint blueprint called foo
.then(() => emberGenerate(args, { isModuleUnification: true }))
// 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, { isModuleUnification: true }))
// 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
---
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 installslib/helpers/tmp-env.js
Defaults to
Returns: {Promise}
---
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){Boolean} [options.isModuleUnification=true]
- a toggle to use MU file structure
Returns: {Promise}
---
Run a blueprint generator.
Parameters:
- {Array. arguments to pass to ember generate (e.g. ['my-blueprint', 'foo']){Object} [options]
- optional parameters{Boolean} [options.isModuleUnification=true]
- a toggle to use MU file structure
Returns: {Promise}
---
Run a blueprint destructor.
Parameters:
- {Array. arguments to pass to ember destroy (e.g. ['my-blueprint', 'foo']){Object} [options]
- optional parameters{Boolean} [options.isModuleUnification=true]
- a toggle to use MU file structure
Returns: {Promise}
---
Run a blueprint generator and the corresponding blueprint destructor while
checking assertions in between.
Parameters:
- {Array. arguments to pass to ember generate (e.g. ['my-blueprint', 'foo']){Function} assertionCallback
- the callback function in which the assertions should happen{Object} [options]
- optional parameters{Boolean} [options.isModuleUnification=true]
- a toggle to use MU file structure
Returns: {Promise}
---
Modify the dependencies in the package.json file of the test project.
Parameters:
- {Array.
---
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/podsconfig/environment.js`
in
Used by
------------------------------------------------------------------------------
- https://github.com/emberjs/ember.js
- https://github.com/emberjs/data
- https://github.com/ember-cli/ember-cli-legacy-blueprints
- https://github.com/simplabs/ember-simple-auth
- https://github.com/DockYard/ember-suave
License
------------------------------------------------------------------------------
This project is licensed under the MIT License.