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