From 0a9faaa80589ecb0e1543abc39401b68e7345824 Mon Sep 17 00:00:00 2001 From: John Cowen Date: Thu, 18 Jan 2018 11:52:49 +0000 Subject: [PATCH] Add in data-test attrs to hook into, decide on test case granularity --- .../components/placement-failure.hbs | 20 +-- .../integration/placement-failure-test.js | 136 +++++++++++------- 2 files changed, 96 insertions(+), 60 deletions(-) diff --git a/ui/app/templates/components/placement-failure.hbs b/ui/app/templates/components/placement-failure.hbs index 026700069..16aa49a63 100644 --- a/ui/app/templates/components/placement-failure.hbs +++ b/ui/app/templates/components/placement-failure.hbs @@ -2,37 +2,37 @@ {{#with taskGroup.placementFailures as |failures|}}

{{taskGroup.name}} - {{inc failures.coalescedFailures}} unplaced + {{inc failures.coalescedFailures}} unplaced

{{/with}} diff --git a/ui/tests/integration/placement-failure-test.js b/ui/tests/integration/placement-failure-test.js index 0d70f0853..c7612441f 100644 --- a/ui/tests/integration/placement-failure-test.js +++ b/ui/tests/integration/placement-failure-test.js @@ -1,9 +1,9 @@ -import { find } from 'ember-native-dom-helpers'; +import { find, findAll } from 'ember-native-dom-helpers'; import { test, moduleForComponent } from 'ember-qunit'; import hbs from 'htmlbars-inline-precompile'; import cleanWhitespace from '../utils/clean-whitespace'; -moduleForComponent('placement-failure', 'Integration | Component | placement failure', { +moduleForComponent('placement-failure', 'Integration | Component | placement failures', { integration: true, }); @@ -15,61 +15,97 @@ const commonTemplate = hbs` `; -const name = 'My Name'; -const failures = 10; -test('placement failures report', function(assert) { - this.set('taskGroup', { - name: name, - placementFailures: createFailures(failures), - }); +test('should render the placement failure (basic render)', function(assert) { + const name = 'Placement Failure'; + const failures = 11; + this.set( + 'taskGroup', + createFixture( + { + coalescedFailures: failures - 1 + }, + name + ) + ); this.render(commonTemplate); assert.equal( - cleanWhitespace(find('.title').textContent), - `${name} ${failures + 1} unplaced`, + cleanWhitespace(find('[data-test-placement-failure-task-group]').firstChild.wholeText), + name, + 'Title is rendered with the name of the placement failure' + ); + assert.equal( + parseInt(find('[data-test-placement-failure-coalesced-failures]').textContent), + failures, 'Title is rendered correctly with a count of unplaced' ); + assert.equal( + findAll('[data-test-placement-failure-no-evaluated-nodes]').length, + 0, + 'No evaluated nodes message shown' + ); +}); +test('should render correctly when a node is not evaluated', function(assert) { + this.set( + 'taskGroup', + createFixture( + { + nodesEvaluated: 0 + } + ) + ); + this.render(commonTemplate); + assert.equal( + findAll('[data-test-placement-failure-no-evaluated-nodes]').length, + 1, + 'No evaluated nodes message shown' + ); }); -function createFailures(count) { +function createFixture(obj = {}, name = "Placement Failure") { return { - coalescedFailures: count, - 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, - }, - ], + name: name, + placementFailures: Object.assign({ + coalescedFailures: 10, + nodesEvaluated: 1, + nodesAvailable: [ + { + datacenter: 0, + }, + ], + classFiltered: [ + { + filtered: 1, + }, + ], + constraintFiltered: [ + { + 'prop = val': 1, + }, + ], + nodesExhausted: 3, + classExhausted: [ + { + class: 3, + }, + ], + dimensionExhausted: [ + { + iops: 3, + }, + ], + quotaExhausted: [ + { + quota: 'dimension', + }, + ], + scores: [ + { + name: 3, + }, + ], + }, + obj + ) }; }