setup: function() { Orbit.Promise = Ember.RSVP.Promise; Star = Model.extend({ name: attr('string'), planets: hasMany('planet', {inverse: 'sun'}), isStable: attr('boolean', {defaultValue: true}) }); Moon = Model.extend({ name: attr('string'), planet: hasOne('planet', {inverse: 'moons'}) }); Planet = Model.extend({ name: attr('string'), classification: attr('string'), sun: hasOne('star', {inverse: 'planets'}), moons: hasMany('moon', {inverse: 'planet'}) }); store = createStore({ models: { star: Star, moon: Moon, planet: Planet } }); },
setup: function() { Orbit.Promise = Ember.RSVP.Promise; Planet = Model.extend({ name: attr('string'), atmosphere: attr('boolean'), classification: attr('string'), sun: hasOne('star'), moons: hasMany('moon') }); Moon = Model.extend({ name: attr('string'), planet: hasOne('planet') }); Star = Model.extend({ name: attr('string'), planets: hasMany('planet') }); store = createStore({ models: { planet: Planet, moon: Moon, star: Star } }); },
test("#modelFor returns the appropriate model when passed a model's name", function() { var Planet = Model.extend(); var container = new Ember.Container(); container.register('schema:main', Schema); container.register('model:planet', Planet); set(schema, 'container', container); equal(schema.modelFor('planet'), Planet); });
test("#defineModel defines models on the underlying Orbit schema", function() { var Star, Moon, Planet; Star = Model.extend({ name: attr('string'), planets: hasMany('planet') }); Moon = Model.extend({ name: attr('string'), planet: hasOne('planet') }); Planet = Model.extend({ name: attr('string'), classification: attr('string'), sun: hasOne('star'), moons: hasMany('moon') }); schema.defineModel('star', Star); schema.defineModel('moon', Moon); schema.defineModel('planet', Planet); deepEqual(schema.models(), ['star', 'moon', 'planet']); deepEqual(schema.attributes('star'), ['name']); deepEqual(schema.links('star'), ['planets']); deepEqual(schema.attributeProperties('star', 'name'), { type: "string" }); deepEqual(schema.linkProperties('star', 'planets'), { type: "hasMany", model: "planet" }); deepEqual(schema.attributes('moon'), ['name']); deepEqual(schema.links('moon'), ['planet']); deepEqual(schema.attributeProperties('moon', 'name'), { type: "string" }); deepEqual(schema.linkProperties('moon', 'planet'), { type: "hasOne", model: "planet" }); deepEqual(schema.attributes('planet'), ['name', 'classification']); deepEqual(schema.links('planet'), ['sun', 'moons']); deepEqual(schema.attributeProperties('planet', 'name'), { type: "string" }); deepEqual(schema.attributeProperties('planet', 'classification'), { type: "string" }); deepEqual(schema.linkProperties('planet', 'sun'), { type: "hasOne", model: "star" }); deepEqual(schema.linkProperties('planet', 'moons'), { type: "hasMany", model: "moon" }); });