mirror of https://github.com/Squidex/squidex.git
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
145 lines
4.6 KiB
145 lines
4.6 KiB
/*
|
|
* Squidex Headless CMS
|
|
*
|
|
* @license
|
|
* Copyright (c) Sebastian Stehle. All rights r vbeserved
|
|
*/
|
|
|
|
import { DialogService } from '@app/framework/internal';
|
|
import { of } from 'rxjs';
|
|
import { IMock, It, Mock, Times } from 'typemoq';
|
|
import { ConfirmClickDirective } from './confirm-click.directive';
|
|
|
|
describe('ConfirmClickDirective', () => {
|
|
let dialogs: IMock<DialogService>;
|
|
let confirmClickDirective: ConfirmClickDirective;
|
|
|
|
beforeEach(() => {
|
|
dialogs = Mock.ofType<DialogService>();
|
|
|
|
confirmClickDirective = new ConfirmClickDirective(dialogs.object);
|
|
});
|
|
|
|
it('Should invoke action directly when disabled', () => {
|
|
confirmClickDirective.confirmRequired = false;
|
|
confirmClickDirective.confirmText = 'confirmText';
|
|
confirmClickDirective.confirmTitle = 'confirmTitle';
|
|
confirmClickDirective.confirmRememberKey = 'confirmKey';
|
|
|
|
let invoked = false;
|
|
|
|
confirmClickDirective.clickConfirmed.subscribe(() => {
|
|
invoked = true;
|
|
});
|
|
|
|
confirmClickDirective.onClick(new Event('click'));
|
|
|
|
expect(invoked).toBeTrue();
|
|
|
|
dialogs.verify(x => x.confirm(It.isAnyString(), It.isAnyString(), It.isAny()), Times.never());
|
|
});
|
|
|
|
it('Should invoke action when confirmed', () => {
|
|
dialogs.setup(x => x.confirm('confirmTitle', 'confirmText', 'confirmKey'))
|
|
.returns(() => of(true));
|
|
|
|
confirmClickDirective.confirmText = 'confirmText';
|
|
confirmClickDirective.confirmTitle = 'confirmTitle';
|
|
confirmClickDirective.confirmRememberKey = 'confirmKey';
|
|
|
|
let invoked = false;
|
|
|
|
confirmClickDirective.clickConfirmed.subscribe(() => {
|
|
invoked = true;
|
|
});
|
|
|
|
confirmClickDirective.onClick(new Event('click'));
|
|
|
|
expect(invoked).toBeTrue();
|
|
});
|
|
|
|
it('Should invoke action when unsubscribed in between', () => {
|
|
dialogs.setup(x => x.confirm('confirmTitle', 'confirmText', 'confirmKey'))
|
|
.returns(() => of(true));
|
|
|
|
confirmClickDirective.confirmText = 'confirmText';
|
|
confirmClickDirective.confirmTitle = 'confirmTitle';
|
|
confirmClickDirective.confirmRememberKey = 'confirmKey';
|
|
|
|
let invoked = false;
|
|
|
|
const subscription = confirmClickDirective.clickConfirmed.subscribe(() => {
|
|
invoked = true;
|
|
});
|
|
|
|
confirmClickDirective.beforeClick.subscribe(() => {
|
|
subscription.unsubscribe();
|
|
});
|
|
|
|
confirmClickDirective.onClick(new Event('click'));
|
|
|
|
expect(invoked).toBeTrue();
|
|
});
|
|
|
|
it('Should not invoke action when not confirmed', () => {
|
|
dialogs.setup(x => x.confirm('confirmTitle', 'confirmText', 'confirmKey'))
|
|
.returns(() => of(false));
|
|
|
|
confirmClickDirective.confirmText = 'confirmText';
|
|
confirmClickDirective.confirmTitle = 'confirmTitle';
|
|
confirmClickDirective.confirmRememberKey = 'confirmKey';
|
|
|
|
let invoked = false;
|
|
|
|
confirmClickDirective.clickConfirmed.subscribe(() => {
|
|
invoked = true;
|
|
});
|
|
|
|
confirmClickDirective.onClick(new Event('click'));
|
|
|
|
expect(invoked).toBeFalse();
|
|
});
|
|
|
|
it('Should invoke action when unsubscribed before', () => {
|
|
dialogs.setup(x => x.confirm('confirmTitle', 'confirmText', 'confirmKey'))
|
|
.returns(() => of(true));
|
|
|
|
confirmClickDirective.confirmText = 'confirmText';
|
|
confirmClickDirective.confirmTitle = 'confirmTitle';
|
|
confirmClickDirective.confirmRememberKey = 'confirmKey';
|
|
|
|
let invoked = false;
|
|
|
|
confirmClickDirective.clickConfirmed.subscribe(() => {
|
|
invoked = true;
|
|
}).unsubscribe();
|
|
|
|
confirmClickDirective.onClick(new Event('click'));
|
|
|
|
expect(invoked).toBeFalse();
|
|
});
|
|
|
|
it('Should not confirm when text is empty', () => {
|
|
dialogs.setup(x => x.confirm('confirmTitle', 'confirmText', 'confirmKey'))
|
|
.returns(() => of(false));
|
|
|
|
confirmClickDirective.confirmTitle = 'confirmTitle';
|
|
confirmClickDirective.onClick(new Event('click'));
|
|
|
|
expect().nothing();
|
|
|
|
dialogs.verify(x => x.confirm(It.isAnyString(), It.isAnyString(), It.isAny()), Times.never());
|
|
});
|
|
|
|
it('Should not confirm when title is empty', () => {
|
|
dialogs.setup(x => x.confirm('confirmTitle', 'confirmText', 'confirmKey'))
|
|
.returns(() => of(false));
|
|
|
|
confirmClickDirective.confirmText = 'confirmText';
|
|
confirmClickDirective.onClick(new Event('click'));
|
|
|
|
expect().nothing();
|
|
|
|
dialogs.verify(x => x.confirm(It.isAnyString(), It.isAnyString(), It.isAny()), Times.never());
|
|
});
|
|
});
|
|
|