github.com/iqoqo/nomad@v0.11.3-0.20200911112621-d7021c74d101/ui/tests/integration/components/lifecycle-chart-test.js (about) 1 import { module, test } from 'qunit'; 2 import { setupRenderingTest } from 'ember-qunit'; 3 import { render, settled } from '@ember/test-helpers'; 4 import hbs from 'htmlbars-inline-precompile'; 5 import { create } from 'ember-cli-page-object'; 6 import LifecycleChart from 'nomad-ui/tests/pages/components/lifecycle-chart'; 7 8 const Chart = create(LifecycleChart); 9 10 const tasks = [ 11 { 12 lifecycleName: 'main', 13 name: 'main two', 14 }, 15 { 16 lifecycleName: 'main', 17 name: 'main one', 18 }, 19 { 20 lifecycleName: 'prestart', 21 name: 'prestart', 22 }, 23 { 24 lifecycleName: 'sidecar', 25 name: 'sidecar', 26 }, 27 ]; 28 29 module('Integration | Component | lifecycle-chart', function(hooks) { 30 setupRenderingTest(hooks); 31 32 test('it renders stateless phases and lifecycle- and name-sorted tasks', async function(assert) { 33 this.set('tasks', tasks); 34 35 await render(hbs`{{lifecycle-chart tasks=tasks}}`); 36 assert.ok(Chart.isPresent); 37 38 assert.equal(Chart.phases[0].name, 'Prestart'); 39 assert.equal(Chart.phases[1].name, 'Main'); 40 41 Chart.phases.forEach(phase => assert.notOk(phase.isActive)); 42 43 assert.deepEqual(Chart.tasks.mapBy('name'), ['prestart', 'sidecar', 'main one', 'main two']); 44 assert.deepEqual(Chart.tasks.mapBy('lifecycle'), [ 45 'Prestart Task', 46 'Sidecar Task', 47 'Main Task', 48 'Main Task', 49 ]); 50 51 assert.ok(Chart.tasks[0].isPrestart); 52 assert.ok(Chart.tasks[1].isSidecar); 53 assert.ok(Chart.tasks[2].isMain); 54 55 Chart.tasks.forEach(task => { 56 assert.notOk(task.isActive); 57 assert.notOk(task.isFinished); 58 }); 59 }); 60 61 test('it doesn’t render when there’s only one phase', async function(assert) { 62 this.set('tasks', [ 63 { 64 lifecycleName: 'main', 65 }, 66 ]); 67 68 await render(hbs`{{lifecycle-chart tasks=tasks}}`); 69 assert.notOk(Chart.isPresent); 70 }); 71 72 test('it reflects phase and task states when states are passed in', async function(assert) { 73 this.set( 74 'taskStates', 75 tasks.map(task => { 76 return { task }; 77 }) 78 ); 79 80 await render(hbs`{{lifecycle-chart taskStates=taskStates}}`); 81 assert.ok(Chart.isPresent); 82 83 Chart.phases.forEach(phase => assert.notOk(phase.isActive)); 84 85 Chart.tasks.forEach(task => { 86 assert.notOk(task.isActive); 87 assert.notOk(task.isFinished); 88 }); 89 90 this.set('taskStates.firstObject.state', 'running'); 91 await settled(); 92 93 assert.ok(Chart.phases[1].isActive); 94 assert.ok(Chart.tasks[3].isActive); 95 96 this.set('taskStates.firstObject.finishedAt', new Date()); 97 await settled(); 98 99 assert.ok(Chart.tasks[3].isFinished); 100 }); 101 });