diff --git a/goofy-client/libs/vorgang-shared-ui/src/lib/vorgang-search-container/vorgang-search-container.component.html b/goofy-client/libs/vorgang-shared-ui/src/lib/vorgang-search-container/vorgang-search-container.component.html index 491deb2d921487ee47ad6701bd679d1247e883f5..fa07fbfd26d959fca174ab5f402be3565007ead4 100644 --- a/goofy-client/libs/vorgang-shared-ui/src/lib/vorgang-search-container/vorgang-search-container.component.html +++ b/goofy-client/libs/vorgang-shared-ui/src/lib/vorgang-search-container/vorgang-search-container.component.html @@ -25,6 +25,7 @@ --> <ng-container *ngIf="apiRoot$ | async as apiRootStateResource"> <goofy-client-vorgang-search *ngIf="(apiRootStateResource.resource | hasLink: apiRootLinkRel.SEARCH) || (apiRootStateResource.resource | hasLink: apiRootLinkRel.SEARCH_MY_VORGAENGE)" data-test-id="vorgang-search" - [vorgangSearchPreviewList]="vorgangSearchPreviewList$ | async"> + [vorgangSearchPreviewList]="vorgangSearchPreviewList$ | async" + (clearEvent)="clearVorgangSearchPreviewList()"> </goofy-client-vorgang-search> </ng-container> \ No newline at end of file diff --git a/goofy-client/libs/vorgang-shared-ui/src/lib/vorgang-search-container/vorgang-search-container.component.spec.ts b/goofy-client/libs/vorgang-shared-ui/src/lib/vorgang-search-container/vorgang-search-container.component.spec.ts index 1b0d0621e9b6515a1f18de8f4fd87c68075d24d6..57276ac71693b2bf95c4aedb6a487c768dd79f22 100644 --- a/goofy-client/libs/vorgang-shared-ui/src/lib/vorgang-search-container/vorgang-search-container.component.spec.ts +++ b/goofy-client/libs/vorgang-shared-ui/src/lib/vorgang-search-container/vorgang-search-container.component.spec.ts @@ -110,4 +110,12 @@ describe('VorgangSearchContainerComponent', () => { expect(element).toBeInstanceOf(HTMLElement); }); }) + + describe('clear event', () => { + it('should call vorgangListService.clearSearchPreviewList()', () => { + component.clearVorgangSearchPreviewList(); + + expect(vorgangListService.clearSearchPreviewList).toHaveBeenCalled(); + }) + }) }); \ No newline at end of file diff --git a/goofy-client/libs/vorgang-shared-ui/src/lib/vorgang-search-container/vorgang-search-container.component.ts b/goofy-client/libs/vorgang-shared-ui/src/lib/vorgang-search-container/vorgang-search-container.component.ts index 3aa1bfda74cb73ea2b1683e4090b6c97352edaff..bba7c9fd167708d74e12dde736dce4e98776a6c0 100644 --- a/goofy-client/libs/vorgang-shared-ui/src/lib/vorgang-search-container/vorgang-search-container.component.ts +++ b/goofy-client/libs/vorgang-shared-ui/src/lib/vorgang-search-container/vorgang-search-container.component.ts @@ -46,4 +46,8 @@ export class VorgangSearchContainerComponent implements OnInit { this.apiRoot$ = this.apiRootFacade.getApiRoot(); this.vorgangSearchPreviewList$ = this.vorgangListService.getSearchPreviewList(); } + + clearVorgangSearchPreviewList() { + this.vorgangListService.clearSearchPreviewList(); + } } \ No newline at end of file diff --git a/goofy-client/libs/vorgang-shared-ui/src/lib/vorgang-search-container/vorgang-search/vorgang-search.component.spec.ts b/goofy-client/libs/vorgang-shared-ui/src/lib/vorgang-search-container/vorgang-search/vorgang-search.component.spec.ts index 71bc201f52a834b5987105b3716489185864a1ca..ee0d1710d99cdf651a1edae9b68ef50cd7702138 100644 --- a/goofy-client/libs/vorgang-shared-ui/src/lib/vorgang-search-container/vorgang-search/vorgang-search.component.spec.ts +++ b/goofy-client/libs/vorgang-shared-ui/src/lib/vorgang-search-container/vorgang-search/vorgang-search.component.spec.ts @@ -30,10 +30,10 @@ import { MatIcon } from '@angular/material/icon'; import { MatInputModule } from '@angular/material/input'; import { BrowserAnimationsModule } from '@angular/platform-browser/animations'; import { RouterTestingModule } from '@angular/router/testing'; -import { ConvertForDataTestPipe, createEmptyStateResource, createStateResource, EMPTY_STRING, HasLinkPipe, StateResource, ToEmbeddedResourcesPipe } from '@goofy-client/tech-shared'; +import { ConvertForDataTestPipe, createEmptyStateResource, createStateResource, EMPTY_STRING, HasLinkPipe, ToEmbeddedResourcesPipe } from '@goofy-client/tech-shared'; import { mock } from '@goofy-client/test-utils'; import { SpinnerComponent } from '@goofy-client/ui'; -import { SearchInfo, VorgangHeaderLinkRel, VorgangListResource, VorgangListService } from '@goofy-client/vorgang-shared'; +import { SearchInfo, VorgangHeaderLinkRel, VorgangListService } from '@goofy-client/vorgang-shared'; import { getDataTestClassOf } from 'libs/tech-shared/test/data-test'; import { createVorgangListResource } from 'libs/vorgang-shared/test/vorgang'; import { MockComponent } from 'ng-mocks'; @@ -48,9 +48,9 @@ describe('VorgangSearchComponent', () => { let fixture: ComponentFixture<VorgangSearchComponent>; const searchFormService = mock(VorgangSearchFormService); + const vorgangListService = { ...mock(VorgangListService), getSearchInfo: () => searchInfoSubj }; const searchInfoSubj: Subject<SearchInfo> = new BehaviorSubject({ searchString: EMPTY_STRING, changedAfterSearchDone: false }); - const vorgangListService = { ...mock(VorgangListService), getSearchInfo: () => searchInfoSubj }; const searchPreviewOption: string = getDataTestClassOf('search-preview-option'); @@ -121,13 +121,14 @@ describe('VorgangSearchComponent', () => { }) describe('clear event', () => { - it('should empty vorgangSearchPreviewList', () => { - const emptyResource: StateResource<VorgangListResource> = createEmptyStateResource(); + it('should emit clear event', () => { + jest.spyOn(component.clearEvent, 'emit'); + jest.spyOn(component.searchInput.nativeElement, 'focus'); component.clearVorgangSearchPreviewList(); - expect(component.vorgangSearchPreviewList).toEqual(emptyResource); - expect(vorgangListService.clearSearchPreviewList).toHaveBeenCalled(); + expect(component.clearEvent.emit).toHaveBeenCalled(); + expect(component.searchInput.nativeElement.focus).toHaveBeenCalled(); }) }) }); \ No newline at end of file diff --git a/goofy-client/libs/vorgang-shared-ui/src/lib/vorgang-search-container/vorgang-search/vorgang-search.component.ts b/goofy-client/libs/vorgang-shared-ui/src/lib/vorgang-search-container/vorgang-search/vorgang-search.component.ts index 525c7be86546c21482632600fbcd7ecf69fca314..57e5e9e8361cdd25b635cf32a3ca8693ddef8cbc 100644 --- a/goofy-client/libs/vorgang-shared-ui/src/lib/vorgang-search-container/vorgang-search/vorgang-search.component.ts +++ b/goofy-client/libs/vorgang-shared-ui/src/lib/vorgang-search-container/vorgang-search/vorgang-search.component.ts @@ -22,9 +22,9 @@ /// unter der Lizenz sind dem Lizenztext zu entnehmen. /// -import { Component, Input } from '@angular/core'; +import { Component, ElementRef, EventEmitter, Input, Output, ViewChild } from '@angular/core'; import { StateResource } from '@goofy-client/tech-shared'; -import { VorgangHeaderLinkRel, VorgangListLinkRel, VorgangListResource, VorgangListService } from '@goofy-client/vorgang-shared'; +import { VorgangHeaderLinkRel, VorgangListLinkRel, VorgangListResource } from '@goofy-client/vorgang-shared'; import { VorgangSearchFormService } from './vorgang-search.formservice'; @Component({ @@ -36,13 +36,16 @@ import { VorgangSearchFormService } from './vorgang-search.formservice'; export class VorgangSearchComponent { @Input() vorgangSearchPreviewList: StateResource<VorgangListResource>; + @Output() public clearEvent: EventEmitter<void> = new EventEmitter<void>(); + @ViewChild('searchInput') searchInput: ElementRef; readonly vorgangHeaderLinkRel = VorgangHeaderLinkRel; readonly vorgangListLinkRel = VorgangListLinkRel; - constructor(public formService: VorgangSearchFormService, public vorgangListService: VorgangListService) { } + constructor(public formService: VorgangSearchFormService) { } clearVorgangSearchPreviewList() { - this.vorgangListService.clearSearchPreviewList(); + this.clearEvent.emit(); + this.searchInput.nativeElement.focus(); } } \ No newline at end of file diff --git a/goofy-client/libs/vorgang-shared/src/lib/+state/vorgang.reducer.spec.ts b/goofy-client/libs/vorgang-shared/src/lib/+state/vorgang.reducer.spec.ts index b2ebc89c3da790eeb275e89767e580c4e18d8788..d2414820715e73f433a963e75d07fa2690c8848d 100644 --- a/goofy-client/libs/vorgang-shared/src/lib/+state/vorgang.reducer.spec.ts +++ b/goofy-client/libs/vorgang-shared/src/lib/+state/vorgang.reducer.spec.ts @@ -246,7 +246,7 @@ describe('Vorgang Reducer', () => { it('should set loading to true', () => { const state: VorgangState = reducer(initialState, action); - expect(state.searchPreviewList.resource).toStrictEqual(vorgangList); + expect(state.searchPreviewList).toStrictEqual(createStateResource(vorgangList)); }) }) @@ -273,7 +273,7 @@ describe('Vorgang Reducer', () => { const state: VorgangState = reducer(initialState, action); - expect(state.searchPreviewList.resource).toBeNull(); + expect(state.searchPreviewList).toStrictEqual(createEmptyStateResource()); }) }) })