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(); + }); + }); +});