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  });