Skip to content

Commit

Permalink
Testing Serializers via Pretender, based on:
Browse files Browse the repository at this point in the history
  • Loading branch information
benoror committed Sep 14, 2016
1 parent dc31351 commit 24c63d6
Show file tree
Hide file tree
Showing 4 changed files with 101 additions and 40 deletions.
2 changes: 1 addition & 1 deletion tests/dummy/app/routes/new-component.js
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ export default Ember.Route.extend({
return this.store.createRecord('component');
},

setupController(controller, model) {
setupController(controller/*, model*/) {
controller.set('products', this.store.findAll('product'));
this._super(...arguments);
},
Expand Down
54 changes: 54 additions & 0 deletions tests/unit/serializers/component-test.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
import Ember from 'ember';
import { moduleForModel, test } from 'ember-qunit';
import Pretender from 'pretender';

// ToDo: Install ember-cli-faker
import mocks from './mocks';
const { productMock } = mocks;

moduleForModel('component', 'Unit | Serializer | component', {
needs: ['serializer:application',
'model:product',
'model:inventory',
'model:component'],

beforeEach() {
this.mockServer = new Pretender(function() {
this.post('/components', function() {
const response = {
records: [productMock]
};
return [200, { "Content-Type": "application/json" }, JSON.stringify(response)];
});
});
},

afterEach() {
this.mockServer.shutdown();
}
});

test('it serializes belongsTo', function(assert) {
let store = this.store();

Ember.run(() => {
let component = store.createRecord('component', {
name: 'testComponent'
});
//let product = store.createRecord('product', {
//name: 'testProduct'
//});
//component.set('product', product);

component.save().then(() => {
let [ request ] = this.mockServer.handledRequests;
let requestPayload = JSON.parse(request.requestBody);
assert.deepEqual(requestPayload, {
cats: [
{ name: 'Frisky' }
]
});
});
});
});

45 changes: 6 additions & 39 deletions tests/unit/serializers/inventory-test.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,48 +2,15 @@ import { moduleForModel, test } from 'ember-qunit';
import Pretender from 'pretender';

// ToDo: Install ember-cli-faker
import mocks from './mocks';
const {
inventoryMock,
productMock,
componentsMock
} = mocks;

let mockServer;

const productMock = {
id: 'product123',
createdTime: (new Date()).toISOString(),
fields: {
name: 'foo',
description: 'bar',
components: ['componentA', 'componentB']
}
};

const inventoryMock = {
id: 'inventory123',
createdTime: (new Date()).toISOString(),
fields: {
product: ['product123'],
qty: 5,
'restock-at': 10
}
};

const componentsMock = [
{
id: 'componentA',
createdTime: (new Date()).toISOString(),
fields: {
name: 'pieceA',
product: ['product123']
}
},
{
id: 'componentB',
createdTime: (new Date()).toISOString(),
fields: {
name: 'pieceB',
product: ['product123']
}
}
];

moduleForModel('inventory', 'Unit | Serializer | inventory', {
needs: ['serializer:application',
'model:product',
Expand Down
40 changes: 40 additions & 0 deletions tests/unit/serializers/mocks.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
export const productMock = {
id: 'product123',
createdTime: (new Date()).toISOString(),
fields: {
name: 'foo',
description: 'bar',
components: ['componentA', 'componentB']
}
};

export const inventoryMock = {
id: 'inventory123',
createdTime: (new Date()).toISOString(),
fields: {
product: ['product123'],
qty: 5,
'restock-at': 10
}
};

export const componentsMock = [
{
id: 'componentA',
createdTime: (new Date()).toISOString(),
fields: {
name: 'pieceA',
product: ['product123']
}
},
{
id: 'componentB',
createdTime: (new Date()).toISOString(),
fields: {
name: 'pieceB',
product: ['product123']
}
}
];


0 comments on commit 24c63d6

Please sign in to comment.