github.com/hernad/nomad@v1.6.112/ui/tests/unit/models/variable-test.js (about)

     1  /**
     2   * Copyright (c) HashiCorp, Inc.
     3   * SPDX-License-Identifier: MPL-2.0
     4   */
     5  
     6  import { module, test } from 'qunit';
     7  import { setupTest } from 'ember-qunit';
     8  
     9  module('Unit | Model | variable', function (hooks) {
    10    setupTest(hooks);
    11  
    12    test('it has basic fetchable properties', function (assert) {
    13      let store = this.owner.lookup('service:store');
    14  
    15      let model = store.createRecord('variable');
    16      model.setProperties({
    17        path: 'my/fun/path',
    18        namespace: 'default',
    19        keyValues: [
    20          { key: 'foo', value: 'bar' },
    21          { key: 'myVar', value: 'myValue' },
    22        ],
    23      });
    24      assert.ok(model.path);
    25      assert.equal(model.keyValues.length, 2);
    26    });
    27  
    28    test('it has a single keyValue by default', function (assert) {
    29      let store = this.owner.lookup('service:store');
    30  
    31      let model = store.createRecord('variable');
    32      model.setProperties({
    33        path: 'my/fun/path',
    34        namespace: 'default',
    35      });
    36      assert.equal(model.keyValues.length, 1);
    37    });
    38  
    39    test('it correctly moves between keyValues and items', function (assert) {
    40      let store = this.owner.lookup('service:store');
    41  
    42      let model = store.createRecord('variable');
    43      model.setProperties({
    44        path: 'my/fun/path',
    45        keyValues: [
    46          { key: 'foo', value: 'bar' },
    47          { key: 'myVar', value: 'myValue' },
    48        ],
    49      });
    50      assert.equal(model.keyValues.length, 2);
    51      assert.equal(Object.entries(model.items)[0][0], 'foo');
    52      assert.equal(Object.entries(model.items)[0][1], 'bar');
    53      assert.equal(Object.entries(model.items)[1][0], 'myVar');
    54      assert.equal(Object.entries(model.items)[1][1], 'myValue');
    55    });
    56  
    57    test('it computes linked entities', function (assert) {
    58      let store = this.owner.lookup('service:store');
    59  
    60      let model = store.createRecord('variable');
    61      model.setProperties({
    62        path: 'nomad/jobs/my-job-name/my-group-name/my-task-name',
    63      });
    64      assert.ok(model.pathLinkedEntities, 'generates a linked entities object');
    65      assert.equal(
    66        model.pathLinkedEntities.job,
    67        'my-job-name',
    68        'identifies the job name'
    69      );
    70      assert.equal(
    71        model.pathLinkedEntities.group,
    72        'my-group-name',
    73        'identifies the group name'
    74      );
    75      assert.equal(
    76        model.pathLinkedEntities.task,
    77        'my-task-name',
    78        'identifies the task name'
    79      );
    80  
    81      model.setProperties({
    82        path: 'nomad/jobs/my-job-name/my-group-name/my-task-name/too-long/oh-no',
    83      });
    84      assert.equal(
    85        model.pathLinkedEntities.job,
    86        '',
    87        'entities object lacks a job name if path goes beyond task'
    88      );
    89      assert.equal(
    90        model.pathLinkedEntities.group,
    91        '',
    92        'entities object lacks a group name if path goes beyond task'
    93      );
    94      assert.equal(
    95        model.pathLinkedEntities.task,
    96        '',
    97        'entities object lacks a task name if path goes beyond task'
    98      );
    99  
   100      model.setProperties({
   101        path: 'projects/some/job',
   102      });
   103      assert.ok(model.pathLinkedEntities, 'generates a linked entities object');
   104      assert.equal(
   105        model.pathLinkedEntities.job,
   106        '',
   107        'entities object lacks a job name if not prefixed with nomad/jobs/'
   108      );
   109      assert.equal(
   110        model.pathLinkedEntities.group,
   111        '',
   112        'entities object lacks a group name if not prefixed with nomad/jobs/'
   113      );
   114      assert.equal(
   115        model.pathLinkedEntities.task,
   116        '',
   117        'entities object lacks a task name if not prefixed with nomad/jobs/'
   118      );
   119    });
   120  });