github.com/anth0d/nomad@v0.0.0-20221214183521-ae3a0a2cad06/ui/tests/acceptance/server-detail-test.js (about) 1 /* eslint-disable qunit/require-expect */ 2 import { currentURL } from '@ember/test-helpers'; 3 import { module, test } from 'qunit'; 4 import { setupApplicationTest } from 'ember-qunit'; 5 import { setupMirage } from 'ember-cli-mirage/test-support'; 6 import a11yAudit from 'nomad-ui/tests/helpers/a11y-audit'; 7 import ServerDetail from 'nomad-ui/tests/pages/servers/detail'; 8 import formatHost from 'nomad-ui/utils/format-host'; 9 10 let agent; 11 12 module('Acceptance | server detail', function (hooks) { 13 setupApplicationTest(hooks); 14 setupMirage(hooks); 15 16 hooks.beforeEach(async function () { 17 server.createList('agent', 3); 18 agent = server.db.agents[0]; 19 await ServerDetail.visit({ name: agent.name }); 20 }); 21 22 test('it passes an accessibility audit', async function (assert) { 23 await a11yAudit(assert); 24 }); 25 26 test('visiting /servers/:server_name', async function (assert) { 27 assert.equal(currentURL(), `/servers/${encodeURIComponent(agent.name)}`); 28 assert.equal(document.title, `Server ${agent.name} - Nomad`); 29 }); 30 31 test('when the server is the leader, the title shows a leader badge', async function (assert) { 32 assert.ok(ServerDetail.title.includes(agent.name)); 33 assert.ok(ServerDetail.hasLeaderBadge); 34 }); 35 36 test('the details ribbon displays basic information about the server', async function (assert) { 37 assert.ok(ServerDetail.serverStatus.includes(agent.member.Status)); 38 assert.ok( 39 ServerDetail.address.includes( 40 formatHost(agent.member.Address, agent.member.Tags.port) 41 ) 42 ); 43 assert.ok(ServerDetail.datacenter.includes(agent.member.Tags.dc)); 44 }); 45 46 test('the server detail page should list all tags for the server', async function (assert) { 47 const tags = Object.keys(agent.member.Tags) 48 .map((name) => ({ name, value: agent.member.Tags[name] })) 49 .sortBy('name'); 50 51 assert.equal(ServerDetail.tags.length, tags.length, '# of tags'); 52 ServerDetail.tags.forEach((tagRow, index) => { 53 const tag = tags[index]; 54 assert.equal(tagRow.name, tag.name, `Label: ${tag.name}`); 55 assert.equal(tagRow.value, tag.value, `Value: ${tag.value}`); 56 }); 57 }); 58 59 test('when the server is not the leader, there is no leader badge', async function (assert) { 60 await ServerDetail.visit({ name: server.db.agents[1].name }); 61 assert.notOk(ServerDetail.hasLeaderBadge); 62 }); 63 64 test('when the server is not found, an error message is shown, but the URL persists', async function (assert) { 65 await ServerDetail.visit({ name: 'not-a-real-server' }); 66 67 assert.equal( 68 currentURL(), 69 '/servers/not-a-real-server', 70 'The URL persists' 71 ); 72 assert.equal( 73 ServerDetail.error.title, 74 'Not Found', 75 'Error message is for 404' 76 ); 77 }); 78 });