function converts(assert, type, provided, expected, options = {}) { const Model = DS.Model.extend({ name: DS.attr(type, options) }); let registry, container; if (Ember.Registry) { registry = new Ember.Registry(); container = registry.container(); } else { container = new Ember.Container(); registry = container; } let testStore = createStore({ model: Model }); getOwner(testStore).register('serializer:model', DS.JSONSerializer); run(() => { testStore.push(testStore.normalize('model', { id: 1, name: provided })); testStore.push(testStore.normalize('model', { id: 2 })); let record = testStore.peekRecord('model', 1); assert.deepEqual(get(record, 'name'), expected, type + ' coerces ' + provided + ' to ' + expected); }); // See: Github issue #421 // record = testStore.find(Model, 2); // set(record, 'name', provided); // deepEqual(get(record, 'name'), expected, type + " coerces " + provided + " to " + expected); }
function convertsFromServer(assert, type, provided, expected) { const Model = DS.Model.extend({ name: DS.attr(type) }); let registry, container; if (Ember.Registry) { registry = new Ember.Registry(); container = registry.container(); } else { container = new Ember.Container(); registry = container; } let testStore = createStore({ model: Model, adapter: DS.Adapter.extend({ shouldBackgroundReloadRecord() { return false; } }) }); getOwner(testStore).register('serializer:model', DS.JSONSerializer); return run(() => { testStore.push(testStore.normalize('model', { id: '1', name: provided })); return testStore.findRecord('model', 1).then(record => { assert.deepEqual(get(record, 'name'), expected, type + ' coerces ' + provided + ' to ' + expected); }); }); }
function convertsWhenSet(assert, type, provided, expected) { let testStore = createStore({ model: DS.Model.extend({ name: DS.attr(type) }), adapter: DS.Adapter.extend({ shouldBackgroundReloadRecord() { return false; } }) }); getOwner(testStore).register('serializer:model', DS.JSONSerializer); return run(() => { testStore.push({ data: { type: 'model', id: '2' } }); return testStore.findRecord('model', 2).then(record => { set(record, 'name', provided); assert.deepEqual(record.serialize().name, expected, type + ' saves ' + provided + ' as ' + expected); }); }); }