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
      }
    });
  },
示例#2
0
  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
      }
    });
  },
示例#3
0
  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')
    });
  },
示例#4
0
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');
});
示例#5
0
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"
  });
});
示例#6
0
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