github.com/hspak/nomad@v0.7.2-0.20180309000617-bc4ae22a39a5/ui/tests/unit/serializers/node-test.js (about) 1 import { run } from '@ember/runloop'; 2 import { test } from 'ember-qunit'; 3 import wait from 'ember-test-helpers/wait'; 4 import NodeModel from 'nomad-ui/models/node'; 5 import moduleForSerializer from '../../helpers/module-for-serializer'; 6 import pushPayloadToStore from '../../utils/push-payload-to-store'; 7 8 moduleForSerializer('node', 'Unit | Serializer | Node', { 9 needs: ['serializer:node', 'service:config', 'transform:fragment', 'model:allocation'], 10 }); 11 12 test('local store is culled to reflect the state of findAll requests', function(assert) { 13 const findAllResponse = [ 14 makeNode('1', 'One', '127.0.0.1:4646'), 15 makeNode('2', 'Two', '127.0.0.2:4646'), 16 makeNode('3', 'Three', '127.0.0.3:4646'), 17 ]; 18 19 const payload = this.subject().normalizeFindAllResponse(this.store, NodeModel, findAllResponse); 20 pushPayloadToStore(this.store, payload, NodeModel.modelName); 21 22 assert.equal( 23 payload.data.length, 24 findAllResponse.length, 25 'Each original record is returned in the response' 26 ); 27 28 assert.equal( 29 this.store 30 .peekAll('node') 31 .filterBy('id') 32 .get('length'), 33 findAllResponse.length, 34 'Each original record is now in the store' 35 ); 36 37 const newFindAllResponse = [ 38 makeNode('2', 'Two', '127.0.0.2:4646'), 39 makeNode('3', 'Three', '127.0.0.3:4646'), 40 makeNode('4', 'Four', '127.0.0.4:4646'), 41 ]; 42 43 let newPayload; 44 run(() => { 45 newPayload = this.subject().normalizeFindAllResponse(this.store, NodeModel, newFindAllResponse); 46 }); 47 pushPayloadToStore(this.store, newPayload, NodeModel.modelName); 48 49 return wait().then(() => { 50 assert.equal( 51 newPayload.data.length, 52 newFindAllResponse.length, 53 'Each new record is returned in the response' 54 ); 55 56 assert.equal( 57 this.store 58 .peekAll('node') 59 .filterBy('id') 60 .get('length'), 61 newFindAllResponse.length, 62 'The node length in the store reflects the new response' 63 ); 64 65 assert.notOk(this.store.peekAll('node').findBy('id', '1'), 'Record One is no longer found'); 66 }); 67 }); 68 69 function makeNode(id, name, ip) { 70 return { ID: id, Name: name, HTTPAddr: ip }; 71 }