From 75e7746a84b16bb86341654a9783868da3ed895b Mon Sep 17 00:00:00 2001 From: thediaval Date: Tue, 19 Nov 2019 16:21:02 +0300 Subject: [PATCH] test(core): add missing form-submit directive test --- .../lib/tests/form-submit.directive.spec.ts | 46 +++++++++++++++++++ 1 file changed, 46 insertions(+) create mode 100644 npm/ng-packs/packages/core/src/lib/tests/form-submit.directive.spec.ts diff --git a/npm/ng-packs/packages/core/src/lib/tests/form-submit.directive.spec.ts b/npm/ng-packs/packages/core/src/lib/tests/form-submit.directive.spec.ts new file mode 100644 index 0000000000..a1858cc34b --- /dev/null +++ b/npm/ng-packs/packages/core/src/lib/tests/form-submit.directive.spec.ts @@ -0,0 +1,46 @@ +import { createDirectiveFactory, SpectatorDirective } from '@ngneat/spectator/jest'; +import { FormSubmitDirective } from '../directives/form-submit.directive'; +import { FormsModule, ReactiveFormsModule, FormGroup } from '@angular/forms'; +import { timer } from 'rxjs'; + +describe('FormSubmitDirective', () => { + let spectator: SpectatorDirective; + let directive: FormSubmitDirective; + + let formGroup = new FormGroup({}); + const submitEventFn = jest.fn(() => {}); + + const createDirective = createDirectiveFactory({ + directive: FormSubmitDirective, + imports: [FormsModule, ReactiveFormsModule], + }); + + beforeEach(() => { + spectator = createDirective( + '
form content
', + { + hostProps: { + submitEventFn, + formGroup, + }, + }, + ); + directive = spectator.directive; + }); + + test('should be created', () => { + expect(directive).toBeTruthy(); + }); + + test('should have 20ms debounce time', () => { + expect(directive.debounce).toBe(20); + }); + + test('should dispatch submit event on keyup event triggered after given debounce time', done => { + spectator.dispatchKeyboardEvent('form', 'keyup', 'Enter'); + timer(directive.debounce + 1).subscribe(() => { + expect(submitEventFn).toHaveBeenCalled(); + done(); + }); + }); +});