mirror of https://github.com/Squidex/squidex.git
33 changed files with 220 additions and 75 deletions
@ -0,0 +1,145 @@ |
|||||
|
/* |
||||
|
* 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()); |
||||
|
}); |
||||
|
}); |
||||
Binary file not shown.
|
Before Width: | Height: | Size: 104 KiB After Width: | Height: | Size: 104 KiB |
Binary file not shown.
Binary file not shown.
|
Before Width: | Height: | Size: 3.1 KiB After Width: | Height: | Size: 3.2 KiB |
File diff suppressed because one or more lines are too long
Loading…
Reference in new issue