/** * Copyright (c) HashiCorp, Inc. * SPDX-License-Identifier: BUSL-1.1 */ import { module, test } from 'qunit'; import { setupRenderingTest } from 'vault/tests/helpers'; import { setupMirage } from 'ember-cli-mirage/test-support'; import { setupEngine } from 'ember-engines/test-support'; import { render } from '@ember/test-helpers'; import { hbs } from 'ember-cli-htmlbars'; import { dateFormat } from 'core/helpers/date-format'; const allFields = [ { label: 'Active', key: 'active' }, { label: 'Type', key: 'type' }, { label: 'Authenticated', key: 'authenticated' }, { label: 'Title', key: 'title' }, { label: 'Message', key: 'message' }, { label: 'Start time', key: 'startTime' }, { label: 'End time', key: 'endTime' }, { label: 'Link', key: 'link' }, ]; module('Integration | Component | messages/page/details', function (hooks) { setupRenderingTest(hooks); setupEngine(hooks, 'config-ui'); setupMirage(hooks); hooks.beforeEach(function () { this.context = { owner: this.engine }; this.server.post('/sys/capabilities-self', () => ({ data: { capabilities: ['root'], }, })); this.message = { id: '01234567-89ab-cdef-0123-456789abcdef', active: true, type: 'banner', authenticated: true, title: 'Message title 1', message: 'Some long long long message', link: { here: 'www.example.com' }, startTime: new Date('2021-08-01T00:00:00Z'), endTime: undefined, canEditCustomMessages: true, }; this.capabilities = { canDelete: true, canUpdate: true }; }); test('it should show the message details', async function (assert) { await render( hbs``, this.context ); assert.dom('[data-test-page-title]').hasText('Message title 1'); assert .dom('[data-test-component="info-table-row"]') .exists({ count: allFields.length }, 'Correct number of filtered fields render'); allFields.forEach((field) => { assert .dom(`[data-test-row-label="${field.label}"]`) .hasText(field.label, `${field.label} label renders`); if (field.key === 'startTime' || field.key === 'endTime') { const formattedDate = dateFormat([this.message[field.key], 'MMM d, yyyy hh:mm aaa'], { withTimeZone: true, }); assert .dom(`[data-test-row-value="${field.label}"]`) .hasText(formattedDate || 'Never', `${field.label} value renders`); } else if (field.key === 'authenticated' || field.key === 'active') { assert .dom(`[data-test-value-div="${field.label}"]`) .hasText(this.message[field.key] ? 'Yes' : 'No', `${field.label} value renders`); } else if (field.key === 'link') { assert.dom('[data-test-value-div="Link"]').exists(); assert.dom('[data-test-value-div="Link"] [data-test-link="message link"]').hasText('here'); } else { assert .dom(`[data-test-row-value="${field.label}"]`) .hasText(this.message[field.key], `${field.label} value renders`); } }); assert.dom('[data-test-confirm-action="Delete message"]').exists(); assert.dom('[data-test-link="edit"]').exists(); }); });