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