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 });