diff --git a/ui/app/templates/components/placement-failure.hbs b/ui/app/templates/components/placement-failure.hbs index 16aa49a63..63f49a826 100644 --- a/ui/app/templates/components/placement-failure.hbs +++ b/ui/app/templates/components/placement-failure.hbs @@ -14,25 +14,25 @@ {{/if}} {{/each-in}} {{#each-in failures.classFiltered as |class count|}} -
  • Class {{class}} filtered {{count}} {{pluralize "node" count}}
  • +
  • Class {{class}} filtered {{count}} {{pluralize "node" count}}
  • {{/each-in}} {{#each-in failures.constraintFiltered as |constraint count|}} -
  • Constraint {{constraint}} filtered {{count}} {{pluralize "node" count}}
  • +
  • Constraint {{constraint}} filtered {{count}} {{pluralize "node" count}}
  • {{/each-in}} {{#if failures.nodesExhausted}} -
  • Resources exhausted on {{failures.nodesExhausted}} {{pluralize "node" failures.nodesExhausted}}
  • +
  • Resources exhausted on {{failures.nodesExhausted}} {{pluralize "node" failures.nodesExhausted}}
  • {{/if}} {{#each-in failures.classExhausted as |class count|}} -
  • Class {{class}} exhausted on {{count}} {{pluralize "node" count}}
  • +
  • Class {{class}} exhausted on {{count}} {{pluralize "node" count}}
  • {{/each-in}} {{#each-in failures.dimensionExhausted as |dimension count|}} -
  • Dimension {{dimension}} exhausted on {{count}} {{pluralize "node" count}}
  • +
  • Dimension {{dimension}} exhausted on {{count}} {{pluralize "node" count}}
  • {{/each-in}} {{#each-in failures.quotaExhausted as |quota dimension|}} -
  • Quota limit hit {{dimension}}
  • +
  • Quota limit hit {{dimension}}
  • {{/each-in}} {{#each-in failures.scores as |name score|}} -
  • Score {{name}} = {{score}}
  • +
  • Score {{name}} = {{score}}
  • {{/each-in}} {{/with}} diff --git a/ui/tests/integration/placement-failure-test.js b/ui/tests/integration/placement-failure-test.js index c7612441f..338b04cb3 100644 --- a/ui/tests/integration/placement-failure-test.js +++ b/ui/tests/integration/placement-failure-test.js @@ -41,69 +41,101 @@ test('should render the placement failure (basic render)', function(assert) { ); assert.equal( findAll('[data-test-placement-failure-no-evaluated-nodes]').length, - 0, + 1, 'No evaluated nodes message shown' ); + assert.equal( + findAll('[data-test-placement-failure-no-nodes-available]').length, + 1, + 'No nodes in datacenter message shown' + ); + assert.equal( + findAll('[data-test-placement-failure-class-filtered]').length, + 1, + 'Class filtered message shown' + ); + assert.equal( + findAll('[data-test-placement-failure-constraint-filtered]').length, + 1, + 'Constraint filtered message shown' + ); + assert.equal( + findAll('[data-test-placement-failure-nodes-exhausted]').length, + 1, + 'Node exhausted message shown' + ); + assert.equal( + findAll('[data-test-placement-failure-class-exhausted]').length, + 1, + 'Class exhausted message shown' + ); + assert.equal( + findAll('[data-test-placement-failure-dimension-exhausted]').length, + 1, + 'Dimension exhausted message shown' + ); + assert.equal( + findAll('[data-test-placement-failure-quota-exhausted]').length, + 1, + 'Quota exhausted message shown' + ); + assert.equal( + findAll('[data-test-placement-failure-scores]').length, + 1, + 'Scores message shown' + ); }); test('should render correctly when a node is not evaluated', function(assert) { this.set( 'taskGroup', createFixture( { - nodesEvaluated: 0 + nodesEvaluated: 1, + nodesExhausted: 0 } ) ); this.render(commonTemplate); assert.equal( findAll('[data-test-placement-failure-no-evaluated-nodes]').length, - 1, + 0, 'No evaluated nodes message shown' ); + assert.equal( + findAll('[data-test-placement-failure-nodes-exhausted]').length, + 0, + 'Nodes exhausted message NOT shown when there are no nodes exausted' + ); }); -function createFixture(obj = {}, name = "Placement Failure") { +function createFixture(obj = {}, name = 'Placement Failure') { return { name: name, placementFailures: Object.assign({ coalescedFailures: 10, - nodesEvaluated: 1, - nodesAvailable: [ - { - datacenter: 0, - }, - ], - classFiltered: [ - { - filtered: 1, - }, - ], - constraintFiltered: [ - { - 'prop = val': 1, - }, - ], + nodesEvaluated: 0, + nodesAvailable: { + datacenter: 0, + }, + classFiltered: { + filtered: 1, + }, + constraintFiltered: { + 'prop = val': 1, + }, nodesExhausted: 3, - classExhausted: [ - { - class: 3, - }, - ], - dimensionExhausted: [ - { - iops: 3, - }, - ], - quotaExhausted: [ - { - quota: 'dimension', - }, - ], - scores: [ - { - name: 3, - }, - ], + classExhausted: { + class: 3, + }, + dimensionExhausted: { + iops: 3, + }, + quotaExhausted: { + quota: 'dimension', + }, + scores: { + name: 3, + }, }, obj )