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