Skip to content

Commit

Permalink
added README
Browse files Browse the repository at this point in the history
closes #13 #4
  • Loading branch information
ryanflorence committed Mar 21, 2014
1 parent 5509dbc commit ebb646c
Showing 1 changed file with 121 additions and 0 deletions.
121 changes: 121 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,2 +1,123 @@
Ember QUnit
===========

[![Build Status](https://travis-ci.org/rpflorence/ember-qunit.png)](https://travis-ci.org/rpflorence/ember-qunit)

[WIP] Unit test helpers for Ember.

About
-----

Ember QUnit uses your application's resolver to find and automatically
create test subjects for you with the `moduleFor` and `test` helpers.

*This is a work in progress* but its also quite handy already. Feedback
is highly encouraged.

Module Formats
--------------

You will find all the popular formats in `dist/`. If using globals, all
methods are found on `window.emq`.

Examples
--------

```js
// inject test helpers onto window
emq.globalize();

// set the resolver, if you don't have a custom resolver, do it
// like this:
setResolver(Ember.DefaultResolver.create({namespace: App});

// tell ember qunit what you are testing, it will find it from the
// resolver
moduleForComponent('x-foo', 'XFooComponent');

// run a test
test('it renders', function() {
expect(2);

// creates the component instance
var component = this.subject();
equal(component.state, 'preRender');

// appends the component to the page
this.append();
equal(component.state, 'inDOM');
});


// a more complex example taken from ic-tabs
moduleForComponent('ic-tabs', 'TabsComponent', {

// specify the other units that are required for this test
needs: [
'component:ic-tab',
'component:ic-tab-panel',
'component:ic-tab-list'
]
});

test('selects first tab and shows the panel', function() {
expect(3);
var component = test.subject({

// can provide properties for the subject, like the yielded template
// of a component (not the layout, in this case)
template: Ember.Handlebars.compile(''+
'{{#ic-tab-list}}'+
'{{#ic-tab id="tab1"}}tab1{{/ic-tab}}'+
'{{#ic-tab id="tab2"}}tab2{{/ic-tab}}'+
'{{#ic-tab id="tab3"}}tab3{{/ic-tab}}'+
'{{/ic-tab-list}}'+
'{{#ic-tab-panel id="panel1"}}one{{/ic-tab-panel}}'+
'{{#ic-tab-panel id="panel2"}}two{{/ic-tab-panel}}'+
'{{#ic-tab-panel id="panel3"}}three{{/ic-tab-panel}}'
})
});
this.append();
var tab1 = Ember.View.views['tab1'];
var panel1 = Ember.View.views['panel1'];
ok(component.get('activeTab') === tab1);
ok(tab1.get('active'));
var el = tab1.$();
ok(panel1.$().is(':visible'));
});
```
Helpers
-------
### `moduleFor(fullName [, description [, callbacks]])`
- `fullName`: (String) - The full name of the unit, ie
`controller:application`, `route:index`.
- `description`: (String) optional - The description of the module
- `callbacks`: (Object) optional - Normal QUnit callbacks (setup and
teardown), with addition to `needs`, which allows you specify the
other units the tests will need.
### `moduleForComponent(name, [description, callbacks])`
- `name`: (String) - the short name of the component that you'd use in a
template, ie `x-foo`, `ic-tabs`, etc.
### `moduleForModel(name, [description, callbacks])`
- `name`: (String) - the short name of the model you'd use in `store`
operations ie `user`, `assignmentGroup`, etc.
Contributing
------------
```sh
$ npm install
$ broccoli serve
# new tab
$ karma start
```

0 comments on commit ebb646c

Please sign in to comment.