From be8d11af8f57feee8573bfc161001fa51189fdef Mon Sep 17 00:00:00 2001
From: OZGCloud <ozgcloud@mgm-tp.com>
Date: Tue, 6 Sep 2022 10:50:44 +0200
Subject: [PATCH] =?UTF-8?q?OZG-2792=20Refactoring=20nach=20PR=20Review,=20?=
 =?UTF-8?q?Unit=20Tests=20hinzuf=C3=BCgen?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 goofy-client/libs/tech-shared/test/error.ts   |  3 +-
 .../src/lib/+state/vorgang.effects.spec.ts    | 32 ++++++++++++++++++-
 .../src/lib/+state/vorgang.effects.ts         |  6 ++--
 3 files changed, 35 insertions(+), 6 deletions(-)

diff --git a/goofy-client/libs/tech-shared/test/error.ts b/goofy-client/libs/tech-shared/test/error.ts
index 3795d07a44..216da5aa42 100644
--- a/goofy-client/libs/tech-shared/test/error.ts
+++ b/goofy-client/libs/tech-shared/test/error.ts
@@ -30,8 +30,7 @@ export function createError(): unknown {
 }
 
 export function createHttpErrorResponse(apiError: ApiError = null): HttpErrorResponse {
-	return {
-		...<HttpErrorResponse>{},
+	return <HttpErrorResponse>{
 		error: {
 			error: apiError ?? createApiError()
 		}
diff --git a/goofy-client/libs/vorgang-shared/src/lib/+state/vorgang.effects.spec.ts b/goofy-client/libs/vorgang-shared/src/lib/+state/vorgang.effects.spec.ts
index 8f1d170902..fde4f3688a 100644
--- a/goofy-client/libs/vorgang-shared/src/lib/+state/vorgang.effects.spec.ts
+++ b/goofy-client/libs/vorgang-shared/src/lib/+state/vorgang.effects.spec.ts
@@ -1,4 +1,4 @@
-import { HttpErrorResponse } from '@angular/common/http';
+import { HttpErrorResponse, HttpStatusCode } from '@angular/common/http';
 import { TestBed } from '@angular/core/testing';
 import { ApiRootFacade, ApiRootLinkRel, ApiRootResource } from '@goofy-client/api-root-shared';
 import { NavigationFacade } from '@goofy-client/navigation-shared';
@@ -274,4 +274,34 @@ describe('VorgangEffects', () => {
 			expect(effects.searchForPreview$).toBeObservable(expected);
 		})
 	})
+
+	describe('search error', () => {
+		const action = VorgangActions.searchForPreviewFailure({ httpErrorResponse: null });
+		const error: HttpErrorResponse = createHttpErrorResponse();
+
+		it('should trigger showSearchError$', () => {
+			actions = of(action);
+			effects.showSearchError = jest.fn();
+
+			effects.showSearchError$.subscribe();
+
+			expect(effects.showSearchError).toHaveBeenCalled();
+		})
+
+		it('should call snackbarService.showError if HTTP status code is NOT 503 ', () => {
+			error.error.status = HttpStatusCode.ExpectationFailed;
+
+			effects.showSearchError(error);
+
+			expect(snackbarService.showError).not.toHaveBeenCalled();
+		})
+
+		it('should call snackbarService.showError if HTTP status code is 503 ', () => {
+			error.error.status = HttpStatusCode.ServiceUnavailable;
+
+			effects.showSearchError(error);
+
+			expect(snackbarService.showError).toHaveBeenCalled();
+		})
+	})
 });
\ No newline at end of file
diff --git a/goofy-client/libs/vorgang-shared/src/lib/+state/vorgang.effects.ts b/goofy-client/libs/vorgang-shared/src/lib/+state/vorgang.effects.ts
index afd330953b..ca2f9eff00 100644
--- a/goofy-client/libs/vorgang-shared/src/lib/+state/vorgang.effects.ts
+++ b/goofy-client/libs/vorgang-shared/src/lib/+state/vorgang.effects.ts
@@ -12,7 +12,7 @@ import { getSearchLinkRel } from '../vorgang-navigation.util';
 import { VorgangMessages } from '../vorgang.messages';
 import { VorgangRepository } from '../vorgang.repository';
 import * as VorgangActions from './vorgang.actions';
-import { ApiRootAction, SearchVorgaengeByProps } from './vorgang.actions';
+import { ApiRootAction, HttpErrorAction, SearchVorgaengeByProps } from './vorgang.actions';
 import * as VorgangSelectors from './vorgang.selectors';
 
 @Injectable()
@@ -84,11 +84,11 @@ export class VorgangEffects {
 				VorgangActions.searchForPreviewFailure,
 				VorgangActions.searchVorgaengeByFailure
 			),
-			map(({ httpErrorResponse }) => this.showSearchError(httpErrorResponse)),
+			map((action: HttpErrorAction) => this.showSearchError(action.httpErrorResponse)),
 		), { dispatch: false }
 	);
 
-	private showSearchError(error: HttpErrorResponse): void {
+	showSearchError(error: HttpErrorResponse): void {
 		if (isServiceUnavailable(error.error.status)) {
 			this.snackbarService.showError(VorgangMessages.SEARCH_UNAVAILABLE);
 		}
-- 
GitLab