github.com/Ilhicas/nomad@v1.0.4-0.20210304152020-e86851182bc3/ui/tests/unit/serializers/recommendation-summary-test.js (about) 1 import { module, test } from 'qunit'; 2 import { setupTest } from 'ember-qunit'; 3 import RecommendationSummaryModel from 'nomad-ui/models/recommendation-summary'; 4 5 module('Unit | Serializer | RecommendationSummary', function(hooks) { 6 setupTest(hooks); 7 hooks.beforeEach(function() { 8 this.store = this.owner.lookup('service:store'); 9 this.subject = () => this.store.serializerFor('recommendation-summary'); 10 }); 11 12 const normalizationTestCases = [ 13 { 14 name: 'Normal', 15 in: [ 16 { 17 ID: '2345', 18 JobID: 'job-id', 19 Namespace: 'default', 20 Region: 'us-east-1', 21 Group: 'group-1', 22 Task: 'task-1', 23 Resource: 'MemoryMB', 24 Value: 500, 25 Current: 1000, 26 Stats: { 27 min: 25.0, 28 max: 575.0, 29 mean: 425.0, 30 media: 40.0, 31 }, 32 SubmitTime: 1600000002000000000, 33 }, 34 { 35 ID: '1234', 36 JobID: 'job-id', 37 Namespace: 'default', 38 Region: 'us-east-1', 39 Group: 'group-1', 40 Task: 'task-1', 41 Resource: 'CPU', 42 Value: 500, 43 Current: 1000, 44 Stats: { 45 min: 25.0, 46 max: 575.0, 47 mean: 425.0, 48 media: 40.0, 49 }, 50 SubmitTime: 1600000001000000000, 51 }, 52 { 53 ID: '6789', 54 JobID: 'other-job-id', 55 Namespace: 'other', 56 Region: 'us-east-1', 57 Group: 'group-2', 58 Task: 'task-2', 59 Resource: 'MemoryMB', 60 Value: 500, 61 Current: 1000, 62 Stats: { 63 min: 25.0, 64 max: 575.0, 65 mean: 425.0, 66 media: 40.0, 67 }, 68 SubmitTime: 1600000003000000000, 69 }, 70 ], 71 out: { 72 data: [ 73 { 74 attributes: { 75 jobId: 'job-id', 76 jobNamespace: 'default', 77 submitTime: new Date(1600000002000), 78 taskGroupName: 'group-1', 79 }, 80 id: '1234-2345', 81 relationships: { 82 job: { 83 data: { 84 id: '["job-id","default"]', 85 type: 'job', 86 }, 87 }, 88 recommendations: { 89 data: [ 90 { 91 id: '2345', 92 type: 'recommendation', 93 }, 94 { 95 id: '1234', 96 type: 'recommendation', 97 }, 98 ], 99 }, 100 }, 101 type: 'recommendation-summary', 102 }, 103 { 104 attributes: { 105 jobId: 'other-job-id', 106 jobNamespace: 'other', 107 submitTime: new Date(1600000003000), 108 taskGroupName: 'group-2', 109 }, 110 id: '6789', 111 relationships: { 112 job: { 113 data: { 114 id: '["other-job-id","other"]', 115 type: 'job', 116 }, 117 }, 118 recommendations: { 119 data: [ 120 { 121 id: '6789', 122 type: 'recommendation', 123 }, 124 ], 125 }, 126 }, 127 type: 'recommendation-summary', 128 }, 129 ], 130 included: [ 131 { 132 attributes: { 133 resource: 'MemoryMB', 134 stats: { 135 max: 575, 136 mean: 425, 137 media: 40, 138 min: 25, 139 }, 140 submitTime: new Date(1600000002000), 141 taskName: 'task-1', 142 value: 500, 143 }, 144 id: '2345', 145 relationships: { 146 job: { 147 links: { 148 related: '/v1/job/job-id', 149 }, 150 }, 151 }, 152 type: 'recommendation', 153 }, 154 { 155 attributes: { 156 resource: 'CPU', 157 stats: { 158 max: 575, 159 mean: 425, 160 media: 40, 161 min: 25, 162 }, 163 submitTime: new Date(1600000001000), 164 taskName: 'task-1', 165 value: 500, 166 }, 167 id: '1234', 168 relationships: { 169 job: { 170 links: { 171 related: '/v1/job/job-id', 172 }, 173 }, 174 }, 175 type: 'recommendation', 176 }, 177 { 178 attributes: { 179 resource: 'MemoryMB', 180 stats: { 181 max: 575, 182 mean: 425, 183 media: 40, 184 min: 25, 185 }, 186 submitTime: new Date(1600000003000), 187 taskName: 'task-2', 188 value: 500, 189 }, 190 id: '6789', 191 relationships: { 192 job: { 193 links: { 194 related: '/v1/job/other-job-id?namespace=other', 195 }, 196 }, 197 }, 198 type: 'recommendation', 199 }, 200 ], 201 }, 202 }, 203 ]; 204 205 normalizationTestCases.forEach(testCase => { 206 test(`normalization: ${testCase.name}`, async function(assert) { 207 assert.deepEqual( 208 this.subject().normalizeArrayResponse(this.store, RecommendationSummaryModel, testCase.in), 209 testCase.out 210 ); 211 }); 212 }); 213 });