2019-08-31 20:51:14 -07:00

65 lines
2.4 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import { module, test } from 'qunit';
import { setupRenderingTest } from 'ember-qunit';
import { render } from '@ember/test-helpers';
import hbs from 'htmlbars-inline-precompile';
import { INotification } from '@datahub/utils/types/notifications/service';
import { NotificationEvent, NotificationType } from '@datahub/utils/constants/notifications';
const toastBaseClass = '.notifications__toast';
const makeToast: (props?: { content?: string }) => INotification = (props = { content: 'Success!' }) => ({
props: {
type: NotificationEvent.success,
content: props.content
},
type: NotificationType.Toast,
notificationResolution: {
createPromiseToHandleThisNotification: () => Promise.resolve()
}
});
module('Integration | Component | notifications-toast', function(hooks) {
setupRenderingTest(hooks);
test('toast rendering', async function(assert) {
this.set('onDismiss', () => {});
await render(hbs`<NotificationsToast @onDismiss={{this.onDismiss}}/>`);
assert.dom(toastBaseClass).exists();
assert.dom(`${toastBaseClass}__dismiss`).hasText('×');
await render(hbs`
<NotificationsToast @onDismiss={{this.onDismiss}} as |Toast|>
{{Toast.content}}
</NotificationsToast>`);
assert.dom(`${toastBaseClass}__content__msg`).exists();
});
test('toast property rendering', async function(assert) {
const fakeToast = makeToast();
const { content = '' } = fakeToast.props;
this.setProperties({ onDismiss: () => {}, toast: fakeToast });
await render(hbs`<NotificationsToast @onDismiss={{this.onDismiss}} @toast={{this.toast}}/>`);
assert.dom(`${toastBaseClass}__content--success`).exists();
assert.dom(`${toastBaseClass}__content__msg`).hasText(content);
});
test('toast content truncation and content detail', async function(assert) {
const fakeToast = makeToast({
content:
'A long string of text for user notification that contains more than the required number of characters to be displayed in a toast'
});
this.setProperties({ onDismiss: () => {}, toast: fakeToast });
await render(
hbs`<NotificationsToast @onDismiss={{this.onDismiss}} @toast={{this.toast}} @onShowDetail={{this.onDismiss}} />`
);
assert
.dom(`${toastBaseClass}__content__msg`)
.hasText('A long string of text for user notification that...number of characters to be displayed in a toast');
assert.dom(`${toastBaseClass}__content-detail`).hasText('See Detail');
});
});