Skip welcome & menu and move to editor
Welcome to JS Bin
Load cached copy from
 
<!DOCTYPE html>
<html>
<head>
  <title>Unit Testing Ember Data Model with hasMany Relationship</title>
  <meta name="description" content="guide: testing-models-1" />
  <meta charset="utf-8">
  <link rel="stylesheet" href="http://code.jquery.com/qunit/qunit-1.14.0.css">
  <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
  <script src="http://builds.handlebarsjs.com.s3.amazonaws.com/handlebars-v1.2.1.js"></script>
  <script src="http://builds.emberjs.com/tags/v1.5.1/ember.js"></script>
  <script src="http://builds.emberjs.com/tags/v1.0.0-beta.7/ember-data.prod.js"></script>
  <script src="http://code.jquery.com/qunit/qunit-1.14.0.js"></script>
  <script src="https://rawgithub.com/rpflorence/ember-qunit/master/dist/globals/main.js"></script>
</head>
<body>
  
  <div id="qunit"></div>
  <div id="ember-testing"></div>
</body>
</html>
 
/* Put your CSS here */
html, body {
    margin: 10px;
}
 
/*=================== APP ====================*/
App = Ember.Application.create();
App.Role = DS.Model.extend({
  name: DS.attr('string')
});
App.User = DS.Model.extend({
  name: DS.attr('string'),
  roles: DS.hasMany('role'),
  isInstructor: function(){
    return this.hasRole('instructor');
  }.property('roles'),
  hasRole: function(role_name){
    var roles = this.get('roles');
    if(!Ember.isEmpty(roles)){
      return roles.any(function(role){
        return role.get('name') === role_name;
      });
    }
    return false;
  }
});
/*=================== TESTS ====================*/
emq.globalize();
App.setupForTesting();
App.injectTestHelpers();
setResolver(Ember.DefaultResolver.create({ namespace: App }));
App.rootElement = '#ember-testing';
moduleForModel('user', 'Course Model', {
  needs: ['model:role']
});
test('isInstructor - user is an Instructor', function() {
  var user = this.subject({
    id: 1,
    name: 'Joe'
  });
  Ember.run(function(){
    user.set('roles.content', Ember.ArrayProxy.create({content: []}));
    var role = Ember.ObjectProxy.create({name: 'instructor'});
    user.get('roles.content').pushObject(role);
  });
  var value = user.get('isInstructor');
  equal(value, true, "expected true but was " + value);
});
Output

You can jump to the latest bin by adding /latest to your URL

Dismiss x
public
Bin info
anonymouspro
0viewers