github.com/Ilhicas/nomad@v1.0.4-0.20210304152020-e86851182bc3/ui/tests/integration/components/placement-failure-test.js (about)

     1  import { find, findAll, render } from '@ember/test-helpers';
     2  import { module, test } from 'qunit';
     3  import { setupRenderingTest } from 'ember-qunit';
     4  import { assign } from '@ember/polyfills';
     5  import hbs from 'htmlbars-inline-precompile';
     6  import cleanWhitespace from '../../utils/clean-whitespace';
     7  import { componentA11yAudit } from 'nomad-ui/tests/helpers/a11y-audit';
     8  
     9  module('Integration | Component | placement failures', function(hooks) {
    10    setupRenderingTest(hooks);
    11  
    12    const commonTemplate = hbs`
    13        <PlacementFailure @taskGroup={{taskGroup}} />
    14    `;
    15  
    16    test('should render the placement failure (basic render)', async function(assert) {
    17      const name = 'Placement Failure';
    18      const failures = 11;
    19      this.set(
    20        'taskGroup',
    21        createFixture(
    22          {
    23            coalescedFailures: failures - 1,
    24          },
    25          name
    26        )
    27      );
    28  
    29      await render(commonTemplate);
    30  
    31      assert.equal(
    32        cleanWhitespace(find('[data-test-placement-failure-task-group]').firstChild.wholeText),
    33        name,
    34        'Title is rendered with the name of the placement failure'
    35      );
    36      assert.equal(
    37        parseInt(find('[data-test-placement-failure-coalesced-failures]').textContent),
    38        failures,
    39        'Title is rendered correctly with a count of unplaced'
    40      );
    41      assert.equal(
    42        findAll('[data-test-placement-failure-no-evaluated-nodes]').length,
    43        1,
    44        'No evaluated nodes message shown'
    45      );
    46      assert.equal(
    47        findAll('[data-test-placement-failure-no-nodes-available]').length,
    48        1,
    49        'No nodes in datacenter message shown'
    50      );
    51      assert.equal(
    52        findAll('[data-test-placement-failure-class-filtered]').length,
    53        1,
    54        'Class filtered message shown'
    55      );
    56      assert.equal(
    57        findAll('[data-test-placement-failure-constraint-filtered]').length,
    58        1,
    59        'Constraint filtered message shown'
    60      );
    61      assert.equal(
    62        findAll('[data-test-placement-failure-nodes-exhausted]').length,
    63        1,
    64        'Node exhausted message shown'
    65      );
    66      assert.equal(
    67        findAll('[data-test-placement-failure-class-exhausted]').length,
    68        1,
    69        'Class exhausted message shown'
    70      );
    71      assert.equal(
    72        findAll('[data-test-placement-failure-dimension-exhausted]').length,
    73        1,
    74        'Dimension exhausted message shown'
    75      );
    76      assert.equal(
    77        findAll('[data-test-placement-failure-quota-exhausted]').length,
    78        1,
    79        'Quota exhausted message shown'
    80      );
    81      assert.equal(findAll('[data-test-placement-failure-scores]').length, 1, 'Scores message shown');
    82  
    83      await componentA11yAudit(this.element, assert);
    84    });
    85  
    86    test('should render correctly when a node is not evaluated', async function(assert) {
    87      this.set(
    88        'taskGroup',
    89        createFixture({
    90          nodesEvaluated: 1,
    91          nodesExhausted: 0,
    92        })
    93      );
    94  
    95      await render(commonTemplate);
    96  
    97      assert.equal(
    98        findAll('[data-test-placement-failure-no-evaluated-nodes]').length,
    99        0,
   100        'No evaluated nodes message shown'
   101      );
   102      assert.equal(
   103        findAll('[data-test-placement-failure-nodes-exhausted]').length,
   104        0,
   105        'Nodes exhausted message NOT shown when there are no nodes exhausted'
   106      );
   107  
   108      await componentA11yAudit(this.element, assert);
   109    });
   110  
   111    function createFixture(obj = {}, name = 'Placement Failure') {
   112      return {
   113        name: name,
   114        placementFailures: assign(
   115          {
   116            name: name,
   117            coalescedFailures: 10,
   118            nodesEvaluated: 0,
   119            nodesAvailable: {
   120              datacenter: 0,
   121            },
   122            classFiltered: {
   123              filtered: 1,
   124            },
   125            constraintFiltered: {
   126              'prop = val': 1,
   127            },
   128            nodesExhausted: 3,
   129            classExhausted: {
   130              class: 3,
   131            },
   132            dimensionExhausted: {
   133              iops: 3,
   134            },
   135            quotaExhausted: {
   136              quota: 'dimension',
   137            },
   138            scores: {
   139              name: 3,
   140            },
   141          },
   142          obj
   143        ),
   144      };
   145    }
   146  });