72 lines
2.1 KiB
JavaScript
72 lines
2.1 KiB
JavaScript
|
import { run } from '@ember/runloop';
|
||
|
import { test } from 'ember-qunit';
|
||
|
import wait from 'ember-test-helpers/wait';
|
||
|
import NodeModel from 'nomad-ui/models/node';
|
||
|
import moduleForSerializer from '../../helpers/module-for-serializer';
|
||
|
import pushPayloadToStore from '../../utils/push-payload-to-store';
|
||
|
|
||
|
moduleForSerializer('node', 'Unit | Serializer | Node', {
|
||
|
needs: ['serializer:node', 'service:config', 'transform:fragment', 'model:allocation'],
|
||
|
});
|
||
|
|
||
|
test('local store is culled to reflect the state of findAll requests', function(assert) {
|
||
|
const findAllResponse = [
|
||
|
makeNode('1', 'One', '127.0.0.1:4646'),
|
||
|
makeNode('2', 'Two', '127.0.0.2:4646'),
|
||
|
makeNode('3', 'Three', '127.0.0.3:4646'),
|
||
|
];
|
||
|
|
||
|
const payload = this.subject().normalizeFindAllResponse(this.store, NodeModel, findAllResponse);
|
||
|
pushPayloadToStore(this.store, payload, NodeModel.modelName);
|
||
|
|
||
|
assert.equal(
|
||
|
payload.data.length,
|
||
|
findAllResponse.length,
|
||
|
'Each original record is returned in the response'
|
||
|
);
|
||
|
|
||
|
assert.equal(
|
||
|
this.store
|
||
|
.peekAll('node')
|
||
|
.filterBy('id')
|
||
|
.get('length'),
|
||
|
findAllResponse.length,
|
||
|
'Each original record is now in the store'
|
||
|
);
|
||
|
|
||
|
const newFindAllResponse = [
|
||
|
makeNode('2', 'Two', '127.0.0.2:4646'),
|
||
|
makeNode('3', 'Three', '127.0.0.3:4646'),
|
||
|
makeNode('4', 'Four', '127.0.0.4:4646'),
|
||
|
];
|
||
|
|
||
|
let newPayload;
|
||
|
run(() => {
|
||
|
newPayload = this.subject().normalizeFindAllResponse(this.store, NodeModel, newFindAllResponse);
|
||
|
});
|
||
|
pushPayloadToStore(this.store, newPayload, NodeModel.modelName);
|
||
|
|
||
|
return wait().then(() => {
|
||
|
assert.equal(
|
||
|
newPayload.data.length,
|
||
|
newFindAllResponse.length,
|
||
|
'Each new record is returned in the response'
|
||
|
);
|
||
|
|
||
|
assert.equal(
|
||
|
this.store
|
||
|
.peekAll('node')
|
||
|
.filterBy('id')
|
||
|
.get('length'),
|
||
|
newFindAllResponse.length,
|
||
|
'The node length in the store reflects the new response'
|
||
|
);
|
||
|
|
||
|
assert.notOk(this.store.peekAll('node').findBy('id', '1'), 'Record One is no longer found');
|
||
|
});
|
||
|
});
|
||
|
|
||
|
function makeNode(id, name, ip) {
|
||
|
return { ID: id, Name: name, HTTPAddr: ip };
|
||
|
}
|