Qunit serializer test is returning "Cannot read property 'push' of null"


#1

Ember serializer test below is failing at line 103, throwing the error shown above it:

FYI, I am using the Pretender library to create a response from the server.


#2

Looks like it has something to do with relationships. What does your model look like? And have you handled relationship data with pretender as well?


#3

Interestingly, even when I remove all of the relationships of assignment on both the model and the serializer, this error is still thrown. So I don’t think the error is related to the relationships of this particular payload.

Here is the code:

assignment model:

import DS from 'ember-data';
const {
	Model,
	attr
} = DS;

export default Model.extend({
	title: attr('string'),
	submissionType: attr('string'),
	description: attr('string'),
	completed: attr('boolean'),
	displayType: attr('string'),
	dateOfCreation: attr('string'),
	lastUpdate: attr('string'),
	autopass: attr('boolean'),
	moduleItem: attr('object')
});

assigment serializer:

import DS from 'ember-data';
const { JSONAPISerializer } = DS;

export default JSONAPISerializer.extend({
	attrs: {
		autoPassReviewerNote: 'autoPassReviewerNote',
		dateOfCreation: 'date_of_creation',
		displayType: 'displayType',
		lastUpdate: 'last_update',
		moduleItem: 'moduleItem',
		submissionType: 'submissionType'
	}
});

assignment serializer test:

import { moduleForModel, test } from 'ember-qunit';
import Pretender from 'pretender';
import Ember from 'ember';

const {
	run
} = Ember;

var server;

moduleForModel('assignment', 'Unit | Serializer | assignment', {
	needs: [
		'serializer:assignment'
	],

	beforeEach: function() {
		server = new Pretender(function() {
			// eslint-disable-next-line ember/use-ember-get-and-set
			this.get('/assignments/:id', function() {
				var response = {
					data: {
						type: 'assignment',
						id: 98,
						attributes: {
							title: 'dfgdfg',
							submissionType: 'dfgdf',
							displayType: 'dfgdfg',
							date_of_creation: 'sdfgsdfg',
							last_update: 'fgdgd'
						}
					}
				};

				return [ 200, { 'Content-Type': 'application/json' }, JSON.stringify(response) ];
			});
		});
	},

	afterEach: function() {
		server.shutdown();
	}
});

test('testing assignment serializer', function(assert) {
	var checkAttrSerialization = (assignment) => {
		assert.equal(assignment, true);
	}

	let store = this.store();

	run(() => {
		return store.findRecord('assignment', 98).then((assignment) => checkAttrSerialization(assignment));
	});
});