ember-cli-blueprint-test-helpers v0.19.2
ember-cli-blueprint-test-helpers
test helpers for ember-cli blueprints
Installation
ember install ember-cli-blueprint-test-helpersIt 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 --recursiveFor 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-blueprintwhich 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() {
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:
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 }
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
setupTestHooks(scope, options)
Prepare the test context for the blueprint tests.
Parameters:
{Object} scopethe 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 theember-clidependency{Boolean} [options.disabledTasks=['addon-install', 'bower-install', 'npm-install']]override the mocked installs Defaults tolib/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,addonorin-repo-addon){Boolean} [options.isModuleUnification=true]a toggle to use MU file structure
Returns: {Promise}
emberGenerate(args, options)
Run a blueprint generator.
Parameters:
{Array.<String>} argsarguments to pass toember generate(e.g.['my-blueprint', 'foo']){Object} [options]optional parameters{Boolean} [options.isModuleUnification=true]a toggle to use MU file structure
Returns: {Promise}
emberDestroy(args, options)
Run a blueprint destructor.
Parameters:
{Array.<String>} argsarguments to pass toember destroy(e.g.['my-blueprint', 'foo']){Object} [options]optional parameters{Boolean} [options.isModuleUnification=true]a toggle to use MU file structure
Returns: {Promise}
emberGenerateDestroy(args, assertionCallback, options)
Run a blueprint generator and the corresponding blueprint destructor while checking assertions in between.
Parameters:
{Array.<String>} argsarguments to pass toember generate(e.g.['my-blueprint', 'foo']){Function} assertionCallbackthe 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}
modifyPackages(packages)
Modify the dependencies in the package.json file of the test project.
Parameters:
{Array.<Object>} packagesthe 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]addusePodsin.ember-cli{Boolean} [options.podModulePrefix]setnpodModulePrefixtoapp/podsinconfig/environment.js
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.
7 years ago
7 years ago
7 years ago
8 years ago
8 years ago
8 years ago
8 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago