218 lines
5.4 KiB
JavaScript
218 lines
5.4 KiB
JavaScript
import { module, test } from 'qunit';
|
|
import { setupTest } from 'ember-qunit';
|
|
import RecommendationSummaryModel from 'nomad-ui/models/recommendation-summary';
|
|
|
|
module('Unit | Serializer | RecommendationSummary', function (hooks) {
|
|
setupTest(hooks);
|
|
hooks.beforeEach(function () {
|
|
this.store = this.owner.lookup('service:store');
|
|
this.subject = () => this.store.serializerFor('recommendation-summary');
|
|
});
|
|
|
|
const normalizationTestCases = [
|
|
{
|
|
name: 'Normal',
|
|
in: [
|
|
{
|
|
ID: '2345',
|
|
JobID: 'job-id',
|
|
Namespace: 'default',
|
|
Region: 'us-east-1',
|
|
Group: 'group-1',
|
|
Task: 'task-1',
|
|
Resource: 'MemoryMB',
|
|
Value: 500,
|
|
Current: 1000,
|
|
Stats: {
|
|
min: 25.0,
|
|
max: 575.0,
|
|
mean: 425.0,
|
|
media: 40.0,
|
|
},
|
|
SubmitTime: 1600000002000000000,
|
|
},
|
|
{
|
|
ID: '1234',
|
|
JobID: 'job-id',
|
|
Namespace: 'default',
|
|
Region: 'us-east-1',
|
|
Group: 'group-1',
|
|
Task: 'task-1',
|
|
Resource: 'CPU',
|
|
Value: 500,
|
|
Current: 1000,
|
|
Stats: {
|
|
min: 25.0,
|
|
max: 575.0,
|
|
mean: 425.0,
|
|
media: 40.0,
|
|
},
|
|
SubmitTime: 1600000001000000000,
|
|
},
|
|
{
|
|
ID: '6789',
|
|
JobID: 'other-job-id',
|
|
Namespace: 'other',
|
|
Region: 'us-east-1',
|
|
Group: 'group-2',
|
|
Task: 'task-2',
|
|
Resource: 'MemoryMB',
|
|
Value: 500,
|
|
Current: 1000,
|
|
Stats: {
|
|
min: 25.0,
|
|
max: 575.0,
|
|
mean: 425.0,
|
|
media: 40.0,
|
|
},
|
|
SubmitTime: 1600000003000000000,
|
|
},
|
|
],
|
|
out: {
|
|
data: [
|
|
{
|
|
attributes: {
|
|
jobId: 'job-id',
|
|
jobNamespace: 'default',
|
|
submitTime: new Date(1600000002000),
|
|
taskGroupName: 'group-1',
|
|
},
|
|
id: '1234-2345',
|
|
relationships: {
|
|
job: {
|
|
data: {
|
|
id: '["job-id","default"]',
|
|
type: 'job',
|
|
},
|
|
},
|
|
recommendations: {
|
|
data: [
|
|
{
|
|
id: '2345',
|
|
type: 'recommendation',
|
|
},
|
|
{
|
|
id: '1234',
|
|
type: 'recommendation',
|
|
},
|
|
],
|
|
},
|
|
},
|
|
type: 'recommendation-summary',
|
|
},
|
|
{
|
|
attributes: {
|
|
jobId: 'other-job-id',
|
|
jobNamespace: 'other',
|
|
submitTime: new Date(1600000003000),
|
|
taskGroupName: 'group-2',
|
|
},
|
|
id: '6789',
|
|
relationships: {
|
|
job: {
|
|
data: {
|
|
id: '["other-job-id","other"]',
|
|
type: 'job',
|
|
},
|
|
},
|
|
recommendations: {
|
|
data: [
|
|
{
|
|
id: '6789',
|
|
type: 'recommendation',
|
|
},
|
|
],
|
|
},
|
|
},
|
|
type: 'recommendation-summary',
|
|
},
|
|
],
|
|
included: [
|
|
{
|
|
attributes: {
|
|
resource: 'MemoryMB',
|
|
stats: {
|
|
max: 575,
|
|
mean: 425,
|
|
media: 40,
|
|
min: 25,
|
|
},
|
|
submitTime: new Date(1600000002000),
|
|
taskName: 'task-1',
|
|
value: 500,
|
|
},
|
|
id: '2345',
|
|
relationships: {
|
|
job: {
|
|
links: {
|
|
related: '/v1/job/job-id',
|
|
},
|
|
},
|
|
},
|
|
type: 'recommendation',
|
|
},
|
|
{
|
|
attributes: {
|
|
resource: 'CPU',
|
|
stats: {
|
|
max: 575,
|
|
mean: 425,
|
|
media: 40,
|
|
min: 25,
|
|
},
|
|
submitTime: new Date(1600000001000),
|
|
taskName: 'task-1',
|
|
value: 500,
|
|
},
|
|
id: '1234',
|
|
relationships: {
|
|
job: {
|
|
links: {
|
|
related: '/v1/job/job-id',
|
|
},
|
|
},
|
|
},
|
|
type: 'recommendation',
|
|
},
|
|
{
|
|
attributes: {
|
|
resource: 'MemoryMB',
|
|
stats: {
|
|
max: 575,
|
|
mean: 425,
|
|
media: 40,
|
|
min: 25,
|
|
},
|
|
submitTime: new Date(1600000003000),
|
|
taskName: 'task-2',
|
|
value: 500,
|
|
},
|
|
id: '6789',
|
|
relationships: {
|
|
job: {
|
|
links: {
|
|
related: '/v1/job/other-job-id?namespace=other',
|
|
},
|
|
},
|
|
},
|
|
type: 'recommendation',
|
|
},
|
|
],
|
|
},
|
|
},
|
|
];
|
|
|
|
normalizationTestCases.forEach((testCase) => {
|
|
test(`normalization: ${testCase.name}`, async function (assert) {
|
|
assert.deepEqual(
|
|
this.subject().normalizeArrayResponse(
|
|
this.store,
|
|
RecommendationSummaryModel,
|
|
testCase.in
|
|
),
|
|
testCase.out
|
|
);
|
|
});
|
|
});
|
|
});
|