Testing Ember.js (QUnit)

Testing Ember.js (QUnit)

HTML

<script src="http://builds.emberjs.com/handlebars-1.0.0.js"></script>
<script src="http://builds.emberjs.com/ember-latest.js"></script>
<script src="http://builds.emberjs.com/canary/ember-data.js"></script>
<link rel="stylesheet" href="//netdna.bootstrapcdn.com/bootstrap/3.0.0-rc1/css/bootstrap.min.css">
<script src="//netdna.bootstrapcdn.com/bootstrap/3.0.0-rc1/js/bootstrap.min.js"></script>
<script src="http://code.jquery.com/jquery-1.9.1.min.js"></script>
<script src="http://cdnjs.cloudflare.com/ajax/libs/mocha/1.13.0/mocha.js"></script>
<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/mocha/1.13.0/mocha.css">
<script src="https://s3.amazonaws.com/kiddsoftware-jsfiddle/chai-1.5.0.js"></script>
<script src="http://code.jquery.com/qunit/qunit-1.13.0.js"></script>
<link rel="stylesheet" href="http://code.jquery.com/qunit/qunit-1.13.0.css">
<script type="text/x-handlebars" data-template-name="application">
    <h1>ember-testing</h1>
    {{outlet}}
</script>
<script type="text/x-handlebars" data-template-name="index">
  <ul>
  {{#each}}
      <li>{{name}}</li>
  {{/each}}
   </ul>
</script>

<div id="qunit"></div>
<div id="ember-testing-container"><div id="ember-testing"></div></div>

JavaScript

App = Ember.Application.create({});

App.IndexRoute = Ember.Route.extend({
  model: function() {
    return this.store.find('team');
  }
});

App.TeamAdapter = DS.FixtureAdapter.extend({});

App.Team = DS.Model.extend({
  name: DS.attr('string'),
  colors: DS.attr('string')
});

App.Team.FIXTURES = [
  {
    id: 1,
    name: 'Celtics',
    colors: 'Green, White'
  }, {
    id: 2,
    name: 'Lakers',
    colors: 'Yellow, Black'
  }, {
    id: 3,
    name: 'Bulls',
    colors: 'Red, Black'
  }, {
    id: 4,
    name: 'Mavericks',
    colors: 'Blue, White'
  }, {
    id: 5,
    name: 'Spurs',
    colors: 'Black, Grey, White'
  }
];

Ember.testing = true;
App.rootElement = "#ember-testing";

App.setupForTesting();
App.injectTestHelpers();

window.setupStore = function(options) {
    var env = {};
    options = options || {};

    var container = env.container = new Ember.Container();

    var adapter = env.adapter = (options.adapter || DS.Adapter);
    delete options.adapter;

    for (var prop in options) {
      container.register('model:' + prop, options[prop]);
    }

    container.register('store:main', DS.Store.extend({
      adapter: adapter
    }));

    container.register('serializer:-default', DS.JSONSerializer);
    container.register('serializer:-rest', DS.RESTSerializer);
    container.register('adapter:-rest', DS.RESTAdapter);

    container.injection('serializer', 'store', 'store:main');

    env.serializer = container.lookup('serializer:-default');
    env.restSerializer = container.lookup('serializer:-rest');
    env.store = container.lookup('store:main');
    env.adapter = env.store.get('defaultAdapter');

    return env;
};

window.createStore = function(options) {
    return setupStore(options).store;
};

var store, team;

test('integration/view - Index page', function() {
  visit("/");
  andThen(function() {
      equal(find("h1").text(), "ember-testing", "The index page should have the title: ember-testing");
   });
});

module("unit/model -...