From c234b8b8570e8df555e3effd06631fc9e595fa5d Mon Sep 17 00:00:00 2001
From: OZGCloud <ozgcloud@mgm-tp.com>
Date: Wed, 9 Nov 2022 14:57:19 +0100
Subject: [PATCH] OZG-2943 OZG-3103 empty State too if Clear event

---
 .../vorgang-search.component.spec.ts               |  1 +
 .../vorgang-search/vorgang-search.component.ts     |  8 ++++----
 .../src/lib/+state/vorgang.actions.ts              |  2 ++
 .../src/lib/+state/vorgang.facade.spec.ts          |  9 +++++++++
 .../src/lib/+state/vorgang.facade.ts               |  4 ++++
 .../src/lib/+state/vorgang.reducer.spec.ts         | 14 ++++++++++++++
 .../src/lib/+state/vorgang.reducer.ts              |  7 ++++++-
 .../src/lib/vorgang-list.service.spec.ts           |  8 ++++++++
 .../vorgang-shared/src/lib/vorgang-list.service.ts |  4 ++++
 9 files changed, 52 insertions(+), 5 deletions(-)

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 513fff43ff..185519656b 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
@@ -103,6 +103,7 @@ describe('VorgangSearchComponent', () => {
 			component.clearVorgangSearchPreviewList();
 
 			expect(component.vorgangSearchPreviewList).toEqual(emptyResource);
+			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/vorgang-search.component.ts b/goofy-client/libs/vorgang-shared-ui/src/lib/vorgang-search-container/vorgang-search/vorgang-search.component.ts
index 6d8a2ce47e..1e906af44e 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
@@ -1,6 +1,6 @@
 import { Component, Input } from '@angular/core';
-import { createEmptyStateResource, StateResource } from '@goofy-client/tech-shared';
-import { VorgangHeaderLinkRel, VorgangListLinkRel, VorgangListResource } from '@goofy-client/vorgang-shared';
+import { StateResource } from '@goofy-client/tech-shared';
+import { VorgangHeaderLinkRel, VorgangListLinkRel, VorgangListResource, VorgangListService } from '@goofy-client/vorgang-shared';
 import { VorgangSearchFormService } from './vorgang-search.formservice';
 
 @Component({
@@ -16,9 +16,9 @@ export class VorgangSearchComponent {
 	readonly vorgangHeaderLinkRel = VorgangHeaderLinkRel;
 	readonly vorgangListLinkRel = VorgangListLinkRel;
 
-	constructor(public formService: VorgangSearchFormService) { }
+	constructor(public formService: VorgangSearchFormService, public vorgangListService: VorgangListService) { }
 
 	clearVorgangSearchPreviewList() {
-		this.vorgangSearchPreviewList = createEmptyStateResource();
+		this.vorgangListService.clearSearchPreviewList();
 	}
 }
\ No newline at end of file
diff --git a/goofy-client/libs/vorgang-shared/src/lib/+state/vorgang.actions.ts b/goofy-client/libs/vorgang-shared/src/lib/+state/vorgang.actions.ts
index 6d272741c3..2e91099de8 100644
--- a/goofy-client/libs/vorgang-shared/src/lib/+state/vorgang.actions.ts
+++ b/goofy-client/libs/vorgang-shared/src/lib/+state/vorgang.actions.ts
@@ -50,3 +50,5 @@ export const loadNextPageSuccess: VorgangActionCreator<VorgangListAction> = crea
 export const searchForPreview: VorgangActionCreator<StringBasedProps> = createAction('[Vorgang] Search for preview', props<StringBasedProps>());
 export const searchForPreviewSuccess: VorgangActionCreator<VorgangListAction> = createAction('[Vorgang] Search for preview Success', props<VorgangListAction>());
 export const searchForPreviewFailure: VorgangActionCreator<HttpErrorAction> = createAction('[Vorgang] Search for preview Failure', props<HttpErrorAction>());
+
+export const clearSearchPreviewList: TypedActionCreator = createAction('[Vorgang] Clear search preview list');
\ No newline at end of file
diff --git a/goofy-client/libs/vorgang-shared/src/lib/+state/vorgang.facade.spec.ts b/goofy-client/libs/vorgang-shared/src/lib/+state/vorgang.facade.spec.ts
index 3125938143..f8b7534f40 100644
--- a/goofy-client/libs/vorgang-shared/src/lib/+state/vorgang.facade.spec.ts
+++ b/goofy-client/libs/vorgang-shared/src/lib/+state/vorgang.facade.spec.ts
@@ -138,4 +138,13 @@ describe('VorgangFacade', () => {
 			selectionSubject.next(saerchPreviewListStateResource);
 		});
 	})
+
+	describe('clearSearchPreviewList', () => {
+
+		it('should dispatch "clearSearchPreviewList" action', () => {
+			facade.clearSearchPreviewList();
+
+			expect(store.dispatch).toHaveBeenCalledWith(VorgangActions.clearSearchPreviewList());
+		});
+	})
 })
\ No newline at end of file
diff --git a/goofy-client/libs/vorgang-shared/src/lib/+state/vorgang.facade.ts b/goofy-client/libs/vorgang-shared/src/lib/+state/vorgang.facade.ts
index a6f7d6721f..9a6c674019 100644
--- a/goofy-client/libs/vorgang-shared/src/lib/+state/vorgang.facade.ts
+++ b/goofy-client/libs/vorgang-shared/src/lib/+state/vorgang.facade.ts
@@ -47,4 +47,8 @@ export class VorgangFacade {
 	public getSearchPreviewList(): Observable<StateResource<VorgangListResource>> {
 		return this.store.select(VorgangSelectors.searchPreviewList);
 	}
+
+	public clearSearchPreviewList(): void {
+		this.store.dispatch(VorgangActions.clearSearchPreviewList());
+	}
 }
\ 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 ef806d5a61..5a44869e34 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
@@ -240,6 +240,20 @@ describe('Vorgang Reducer', () => {
 		})
 	})
 
+	describe('clearSearchPreviewList', () => {
+
+		describe('on "clearSearchPreviewList" action', () => {
+
+			it('should empty searchPreviewList', () => {
+				const action = VorgangActions.clearSearchPreviewList();
+
+				const state: VorgangState = reducer(initialState, action);
+
+				expect(state.searchPreviewList.resource).toBeNull();
+			})
+		})
+	})
+
 	describe('on "updateCurrentReouteData" action', () => {
 
 		const routeData: RouteData = createRouteData();
diff --git a/goofy-client/libs/vorgang-shared/src/lib/+state/vorgang.reducer.ts b/goofy-client/libs/vorgang-shared/src/lib/+state/vorgang.reducer.ts
index 2d525b16e4..53dae15839 100644
--- a/goofy-client/libs/vorgang-shared/src/lib/+state/vorgang.reducer.ts
+++ b/goofy-client/libs/vorgang-shared/src/lib/+state/vorgang.reducer.ts
@@ -97,7 +97,12 @@ const vorgangReducer = createReducer(
 
 	on(NavigationActions.updateCurrentRouteData, (state, action): VorgangState => {
 		return buildStateOnNavigation(state, action.routeData);
-	})
+	}),
+
+	on(VorgangActions.clearSearchPreviewList, (state: VorgangState): VorgangState => ({
+		...state,
+		searchPreviewList: createEmptyStateResource()
+	}))
 );
 
 function buildStateOnNavigation(state: VorgangState, routeData: RouteData): VorgangState {
diff --git a/goofy-client/libs/vorgang-shared/src/lib/vorgang-list.service.spec.ts b/goofy-client/libs/vorgang-shared/src/lib/vorgang-list.service.spec.ts
index 16f44fbc21..deb1b0256a 100644
--- a/goofy-client/libs/vorgang-shared/src/lib/vorgang-list.service.spec.ts
+++ b/goofy-client/libs/vorgang-shared/src/lib/vorgang-list.service.spec.ts
@@ -254,4 +254,12 @@ describe('VorgangListService', () => {
 			})
 		})
 	})
+
+	describe('clearSearchPreviewList', () => {
+		it('should call facade clearSearchPreviewList', () => {
+			service.clearSearchPreviewList();
+
+			expect(vorgangFacade.clearSearchPreviewList).toHaveBeenCalled();
+		})
+	})
 })
\ No newline at end of file
diff --git a/goofy-client/libs/vorgang-shared/src/lib/vorgang-list.service.ts b/goofy-client/libs/vorgang-shared/src/lib/vorgang-list.service.ts
index b52870f4d9..b750344d0f 100644
--- a/goofy-client/libs/vorgang-shared/src/lib/vorgang-list.service.ts
+++ b/goofy-client/libs/vorgang-shared/src/lib/vorgang-list.service.ts
@@ -66,4 +66,8 @@ export class VorgangListService {
 	shouldSearchForPreview(previewList: StateResource<VorgangListResource>, searchString: string): boolean {
 		return previewList.reload && !previewList.loading && (searchString != EMPTY_STRING);
 	}
+
+	public clearSearchPreviewList(): void {
+		this.vorgangFacade.clearSearchPreviewList();
+	}
 }
\ No newline at end of file
-- 
GitLab