github.com/zoomfoo/nomad@v0.8.5-0.20180907175415-f28fd3a1a056/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: [ 10 'serializer:node', 11 'service:config', 12 'transform:fragment', 13 'transform:fragment-array', 14 'model:allocation', 15 ], 16 }); 17 18 test('local store is culled to reflect the state of findAll requests', function(assert) { 19 const findAllResponse = [ 20 makeNode('1', 'One', '127.0.0.1:4646'), 21 makeNode('2', 'Two', '127.0.0.2:4646'), 22 makeNode('3', 'Three', '127.0.0.3:4646'), 23 ]; 24 25 const payload = this.subject().normalizeFindAllResponse(this.store, NodeModel, findAllResponse); 26 pushPayloadToStore(this.store, payload, NodeModel.modelName); 27 28 assert.equal( 29 payload.data.length, 30 findAllResponse.length, 31 'Each original record is returned in the response' 32 ); 33 34 assert.equal( 35 this.store 36 .peekAll('node') 37 .filterBy('id') 38 .get('length'), 39 findAllResponse.length, 40 'Each original record is now in the store' 41 ); 42 43 const newFindAllResponse = [ 44 makeNode('2', 'Two', '127.0.0.2:4646'), 45 makeNode('3', 'Three', '127.0.0.3:4646'), 46 makeNode('4', 'Four', '127.0.0.4:4646'), 47 ]; 48 49 let newPayload; 50 run(() => { 51 newPayload = this.subject().normalizeFindAllResponse(this.store, NodeModel, newFindAllResponse); 52 }); 53 pushPayloadToStore(this.store, newPayload, NodeModel.modelName); 54 55 return wait().then(() => { 56 assert.equal( 57 newPayload.data.length, 58 newFindAllResponse.length, 59 'Each new record is returned in the response' 60 ); 61 62 assert.equal( 63 this.store 64 .peekAll('node') 65 .filterBy('id') 66 .get('length'), 67 newFindAllResponse.length, 68 'The node length in the store reflects the new response' 69 ); 70 71 assert.notOk(this.store.peekAll('node').findBy('id', '1'), 'Record One is no longer found'); 72 }); 73 }); 74 75 function makeNode(id, name, ip) { 76 return { ID: id, Name: name, HTTPAddr: ip }; 77 }