github.com/iqoqo/nomad@v0.11.3-0.20200911112621-d7021c74d101/ui/tests/integration/job-page/parts/task-groups-test.js (about) 1 import { assign } from '@ember/polyfills'; 2 import hbs from 'htmlbars-inline-precompile'; 3 import { click, findAll, find } from '@ember/test-helpers'; 4 import { module, test } from 'qunit'; 5 import sinon from 'sinon'; 6 import { startMirage } from 'nomad-ui/initializers/ember-cli-mirage'; 7 import { setupRenderingTest } from 'ember-qunit'; 8 9 module('Integration | Component | job-page/parts/task-groups', function(hooks) { 10 setupRenderingTest(hooks); 11 12 hooks.beforeEach(function() { 13 window.localStorage.clear(); 14 this.store = this.owner.lookup('service:store'); 15 this.server = startMirage(); 16 this.server.create('namespace'); 17 }); 18 19 hooks.afterEach(function() { 20 this.server.shutdown(); 21 }); 22 23 const props = (job, options = {}) => 24 assign( 25 { 26 job, 27 sortProperty: 'name', 28 sortDescending: true, 29 gotoTaskGroup: () => {}, 30 }, 31 options 32 ); 33 34 test('the job detail page should list all task groups', async function(assert) { 35 this.server.create('job', { 36 createAllocations: false, 37 }); 38 39 await this.store.findAll('job').then(jobs => { 40 jobs.forEach(job => job.reload()); 41 }); 42 43 const job = this.store.peekAll('job').get('firstObject'); 44 this.setProperties(props(job)); 45 46 await this.render(hbs` 47 {{job-page/parts/task-groups 48 job=job 49 sortProperty=sortProperty 50 sortDescending=sortDescending 51 gotoTaskGroup=gotoTaskGroup}} 52 `); 53 54 assert.equal( 55 findAll('[data-test-task-group]').length, 56 job.get('taskGroups.length'), 57 'One row per task group' 58 ); 59 }); 60 61 test('each row in the task group table should show basic information about the task group', async function(assert) { 62 this.server.create('job', { 63 createAllocations: false, 64 }); 65 66 const job = await this.store.findAll('job').then(async jobs => { 67 return await jobs.get('firstObject').reload(); 68 }); 69 70 const taskGroups = await job.get('taskGroups'); 71 const taskGroup = taskGroups 72 .sortBy('name') 73 .reverse() 74 .get('firstObject'); 75 76 this.setProperties(props(job)); 77 78 await this.render(hbs` 79 {{job-page/parts/task-groups 80 job=job 81 sortProperty=sortProperty 82 sortDescending=sortDescending 83 gotoTaskGroup=gotoTaskGroup}} 84 `); 85 86 const taskGroupRow = find('[data-test-task-group]'); 87 88 assert.equal( 89 taskGroupRow.querySelector('[data-test-task-group-name]').textContent.trim(), 90 taskGroup.get('name'), 91 'Name' 92 ); 93 assert.equal( 94 taskGroupRow.querySelector('[data-test-task-group-count]').textContent.trim(), 95 taskGroup.get('count'), 96 'Count' 97 ); 98 assert.equal( 99 taskGroupRow.querySelector('[data-test-task-group-volume]').textContent.trim(), 100 taskGroup.get('volumes.length') ? 'Yes' : '', 101 'Volumes' 102 ); 103 assert.equal( 104 taskGroupRow.querySelector('[data-test-task-group-cpu]').textContent.trim(), 105 `${taskGroup.get('reservedCPU')} MHz`, 106 'Reserved CPU' 107 ); 108 assert.equal( 109 taskGroupRow.querySelector('[data-test-task-group-mem]').textContent.trim(), 110 `${taskGroup.get('reservedMemory')} MiB`, 111 'Reserved Memory' 112 ); 113 assert.equal( 114 taskGroupRow.querySelector('[data-test-task-group-disk]').textContent.trim(), 115 `${taskGroup.get('reservedEphemeralDisk')} MiB`, 116 'Reserved Disk' 117 ); 118 }); 119 120 test('gotoTaskGroup is called when task group rows are clicked', async function(assert) { 121 this.server.create('job', { 122 createAllocations: false, 123 }); 124 125 const job = await this.store.findAll('job').then(async jobs => { 126 return await jobs.get('firstObject').reload(); 127 }); 128 129 const taskGroupSpy = sinon.spy(); 130 131 const taskGroups = await job.get('taskGroups'); 132 const taskGroup = taskGroups 133 .sortBy('name') 134 .reverse() 135 .get('firstObject'); 136 137 this.setProperties( 138 props(job, { 139 gotoTaskGroup: taskGroupSpy, 140 }) 141 ); 142 143 await this.render(hbs` 144 {{job-page/parts/task-groups 145 job=job 146 sortProperty=sortProperty 147 sortDescending=sortDescending 148 gotoTaskGroup=gotoTaskGroup}} 149 `); 150 151 await click('[data-test-task-group]'); 152 153 assert.ok( 154 taskGroupSpy.withArgs(taskGroup).calledOnce, 155 'Clicking the task group row calls the gotoTaskGroup action' 156 ); 157 }); 158 });