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  }