mirror of
https://github.com/datahub-project/datahub.git
synced 2025-07-29 04:20:00 +00:00
88 lines
3.0 KiB
TypeScript
88 lines
3.0 KiB
TypeScript
import { module, test } from 'qunit';
|
|
import { setupRenderingTest } from 'ember-qunit';
|
|
import { render, click, find } from '@ember/test-helpers';
|
|
import hbs from 'htmlbars-inline-precompile';
|
|
import sinon from 'sinon';
|
|
|
|
const modalFooterBaseClass = '.notification-confirm-modal__footer';
|
|
|
|
module('Integration | Component | notifications/dialog/dialog-footer', function(hooks) {
|
|
setupRenderingTest(hooks);
|
|
|
|
test('Footer component rendering', async function(assert) {
|
|
await render(hbs`{{notifications/dialog/dialog-footer}}`);
|
|
|
|
assert.dom(modalFooterBaseClass).exists();
|
|
assert
|
|
.dom(`${modalFooterBaseClass}__secondary`)
|
|
.doesNotExist('Expected secondary footer element to not be rendered');
|
|
|
|
this.set('dismiss', 'Dismiss');
|
|
|
|
await render(hbs`{{#notifications/dialog/dialog-footer dismissButtonText=this.dismiss as |footer|}}
|
|
{{footer.dismissButtonText}}
|
|
{{/notifications/dialog/dialog-footer}}`);
|
|
|
|
assert.dom(modalFooterBaseClass).hasText('Dismiss');
|
|
});
|
|
|
|
test('Footer component primary & secondary actions', async function(assert) {
|
|
const dismissButtonText = 'Dismiss';
|
|
const confirmButtonText = 'OK';
|
|
const onConfirm = sinon.fake();
|
|
const onDismiss = sinon.fake();
|
|
|
|
this.setProperties({
|
|
dismissButtonText,
|
|
confirmButtonText,
|
|
onConfirm,
|
|
onDismiss
|
|
});
|
|
|
|
await render(hbs`
|
|
{{notifications/dialog/dialog-footer
|
|
dismissButtonText=this.dismissButtonText
|
|
confirmButtonText=this.confirmButtonText
|
|
onConfirm=this.onConfirm
|
|
onDismiss=this.onDismiss
|
|
}}
|
|
`);
|
|
|
|
assert.dom(`${modalFooterBaseClass}__confirm`).hasText(confirmButtonText);
|
|
assert.dom(`${modalFooterBaseClass}__dismiss`).hasText(dismissButtonText);
|
|
|
|
await click(`${modalFooterBaseClass}__confirm`);
|
|
assert.ok(onConfirm.calledOnce, 'Expected onConfirmAction to be called once when confirm button clicked');
|
|
|
|
await click(`${modalFooterBaseClass}__dismiss`);
|
|
assert.ok(onDismiss.calledOnce, 'Expected onDismiss action to be called when dismiss button clicked');
|
|
});
|
|
|
|
test('Footer component tertiary action: Dialog Toggle', async function(assert) {
|
|
const toggleText = 'Toggle Dialog';
|
|
const toggleRef = '#notifications-confirmation-toggle-input';
|
|
const onDialogToggle = sinon.fake();
|
|
|
|
this.setProperties({ toggleText, onDialogToggle });
|
|
|
|
await render(hbs`
|
|
{{notifications/dialog/dialog-footer
|
|
toggleText=this.toggleText
|
|
onDialogToggle=this.onDialogToggle
|
|
}}
|
|
`);
|
|
|
|
assert.dom(`${modalFooterBaseClass}__secondary`).hasText(toggleText);
|
|
const toggleElement = find(toggleRef);
|
|
assert.ok(
|
|
toggleElement && String(toggleElement.getAttribute('type')).toLowerCase() === 'checkbox',
|
|
'Expected the dialog toggle element to be a checkbox'
|
|
);
|
|
assert.dom(toggleRef).isNotChecked();
|
|
|
|
await click(toggleRef);
|
|
|
|
assert.ok(onDialogToggle.calledOnce, 'Expected the dialog toggle action to be called when checkbox is toggled');
|
|
});
|
|
});
|