Skip to content

Instantly share code, notes, and snippets.

@mike-north
Created October 17, 2015 21:03
Show Gist options
  • Select an option

  • Save mike-north/e8eff601d7fe36fb7aea to your computer and use it in GitHub Desktop.

Select an option

Save mike-north/e8eff601d7fe36fb7aea to your computer and use it in GitHub Desktop.
import Ember from 'ember';
import {
moduleForModel, test
}
from 'ember-qunit';
moduleForModel('record', 'Unit | Serializer | record', {
// Specify the other units that are required for this test.
needs: ['serializer:record']
});
// A generally-useful json-api top-level keys helper?
function validateJsonApiDocument(assert, typename, data) {
assert.ok(data, 'data is present in the normalized payload');
assert.equal(data.type, typename, 'data.type is ${typename}');
assert.equal(Ember.typeOf(data.relationships), 'object', 'data.relationships value is an object');
assert.equal(Ember.typeOf(data.attributes), 'object', 'data.attributes value is an object');
}
test('it deserializes a single record', function(assert) {
var store = this.store();
var serializer = store.serializerFor('record');
var normalizedPayload = serializer.normalizeResponse(
store, // store
store.modelFor('record'), // model
payload, // API data
123, // id
'findRecord' // requestType
);
validateJsonApiDocument(assert, 'record', normalizedPayload.data);
assert.equal(Ember.typeOf(normalizedPayload.data), 'object', 'data value is an object');
});
test('it deserializes an array of records', function(assert) {
var store = this.store();
var serializer = store.serializerFor('record');
var normalizedPayload = serializer.normalizeResponse(
store, // store
store.modelFor('record'), // model
payload, // API data
null, // id
'findAll' // requestType
);
validateJsonApiDocument(assert, 'record', normalizedPayload.data);
assert.equal(Ember.typeOf(normalizedPayload.data), 'array', 'data value is an array');
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment