github.com/anth0d/nomad@v0.0.0-20221214183521-ae3a0a2cad06/ui/tests/unit/models/variable-test.js (about)

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