import { module, test } from 'qunit';
import { setupRenderingTest } from 'ember-qunit';
import { render, click } from '@ember/test-helpers';
import { hbs } from 'ember-cli-htmlbars';
import { setupMirage } from 'ember-cli-mirage/test-support';
module('Integration | Component | mfa-login-enforcement-header', function (hooks) {
setupRenderingTest(hooks);
setupMirage(hooks);
test('it renders heading', async function (assert) {
await render(hbs``);
assert.dom('[data-test-mleh-title]').includesText('New enforcement');
assert.dom('[data-test-mleh-title] svg').hasClass('flight-icon-lock', 'Lock icon renders');
assert
.dom('[data-test-mleh-description]')
.includesText('An enforcement will define which auth types', 'Description renders');
assert.dom('[data-test-mleh-radio]').doesNotExist('Radio cards are hidden when not inline display mode');
assert
.dom('[data-test-component="search-select"]')
.doesNotExist('Search select is hidden when not inline display mode');
});
test('it renders inline', async function (assert) {
assert.expect(7);
this.server.get('/identity/mfa/login-enforcement', () => {
assert.ok(true, 'Request made to fetch enforcements');
return {
data: {
key_info: {
foo: { name: 'foo' },
},
keys: ['foo'],
},
};
});
await render(hbs`
`);
assert.dom('[data-test-mleh-title]').includesText('Enforcement');
assert
.dom('[data-test-mleh-description]')
.includesText('An enforcement includes the authentication types', 'Description renders');
for (const option of ['new', 'existing', 'skip']) {
await click(`[data-test-mleh-radio="${option}"] input`);
assert.equal(this.value, option, 'Value is updated on radio select');
if (option === 'existing') {
await click('.ember-basic-dropdown-trigger');
await click('.ember-power-select-option');
}
}
assert.equal(this.enforcement.name, 'foo', 'Existing enforcement is selected');
});
});