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 } }); },
setup: function() { Planet = Model.extend({ name: attr('string'), 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') }); },
test("#modelFor ensures that related models are also registered in the 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') }); var registry = new Ember.Registry(); var container = registry.container(); registry.register('schema:main', Schema); registry.register('model:planet', Planet); registry.register('model:star', Star); registry.register('model:moon', Moon); set(schema, 'container', container); deepEqual(schema.models(), [], 'no models have been registered'); schema.modelFor('planet'); deepEqual(schema.models(), ['planet', 'star', 'moon'], 'all related models have been registered'); });
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" }); });
import Model from 'ember-orbit/model'; import attr from 'ember-orbit/fields/attr'; import key from 'ember-orbit/fields/key'; import hasOne from 'ember-orbit/fields/has-one'; import hasMany from 'ember-orbit/fields/has-many'; var Planet = Model.extend({ galaxyAlias: key(), name: attr('string'), atmosphere: attr('boolean', {defaultValue: false}), classification: attr('string'), sun: hasOne('star'), moons: hasMany('moon', {inverse: 'planet'}) }); var Moon = Model.extend({ name: attr('string'), planet: hasOne('planet', {inverse: 'moons'}) }); var Star = Model.extend({ name: attr('string'), planets: hasMany('planet'), isStable: attr('boolean', {defaultValue: true}) }); var dummyModels = { Planet, Moon, Star