Use ES6 or TypeScript decorators for QUnit tests in your Ember app
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
.vscode
addon-test-support
addon
app
blueprints
config
etc
node-tests/blueprints
tests
types/dummy
vendor
.editorconfig
.ember-cli
.eslintignore
.eslintrc.js
.gitignore
.npmignore
.template-lintrc.js
.travis.yml
.watchmanconfig
CHANGELOG.md
LICENSE.md
README.md
api-extractor.json
ember-cli-build.js
index.js
package.json
renovate.json
testem.js
tsconfig.json
yarn.lock

README.md

ember-qunit-decorators

Build Status Version

Use ES6 or TypeScript decorators for QUnit tests in your Ember app

Installation

ember install ember-qunit-decorators

Usage

When present in an Ember.js project, this addon automatically provides support for qunit-decorators. Details about the usage of the @suite and @test decorators can be found in the qunit-decorators README

This addon provides three base classes that make working with ember-qunit and @ember/test-helpers easy.

Blueprints

Test generators for all standard ember.js objects are included, so you should get tests like the examples below automatically, as a result of generating Components, Routes, Services and more!

You may optionally generate tests explicitly by using the generators directly

ember g component-test

By default, if you have ember-cli-typescript installed in your project, the tests will be generated in TypeScript, otherwise they'll be in JavaScript. You may explcitly specify which language the tests should be in with --inJs or --inTs flags

ember g acceptance-test --inTs

Example Tests

Unit Test

import { suite, test } from 'qunit-decorators';
import { EmberTest } from 'ember-qunit-decorators/test-support';

@suite('Unit | Route | index')
export class IndexRouteTest extends EmberTest {

  @test 'it exists'(assert: Assert) {
    let route = this.owner.lookup('route:index');
    assert.ok(route);
  }
}

Integration Test

import { suite, test } from "qunit-decorators";
import { render } from "@ember/test-helpers";
import hbs from "htmlbars-inline-precompile";
import { EmberRenderingTest } from "ember-qunit-decorators/test-support";

@suite("Integration | Helper | capitalize")
export class CapitalizeHelperTest extends EmberRenderingTest {

  @test async 'it renders'(assert: Assert) {
    this.set("inputValue", "hello");

    await render(hbs`{{capitalize inputValue}}`);

    assert.equal(('' + this.element.textContent).trim(), "Hello");
  }
}

Acceptance Test

import { suite, test } from 'qunit-decorators';
import { visit, currentURL } from '@ember/test-helpers';
import { EmberApplicationTest } from 'ember-qunit-decorators/test-support';

@suite('Acceptance | index')
export class IndexAcceptanceTest extends EmberApplicationTest {

  @test async 'visiting / '(assert: Assert) {
    await visit('/');

    assert.equal(currentURL(), '/');
  }
}

Contributing

Installation

  • git clone <repository-url>
  • cd ember-qunit-decorators
  • npm install

Linting

  • npm run lint:js
  • npm run lint:js -- --fix

Running tests

  • ember test – Runs the test suite on the current Ember version
  • ember test --server – Runs the test suite in "watch mode"
  • ember try:each – Runs the test suite against multiple Ember versions

Running the dummy application

For more information on using ember-cli, visit https://ember-cli.com/.

License

This project is licensed under the MIT License.