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  }