diff --git a/goofy-client/libs/tech-shared/src/lib/services/navigation.service.ts b/goofy-client/libs/tech-shared/src/lib/services/navigation.service.ts index 34942ef99f3de41e506237ccdade9bfe3baf5f50..eec5cf07f0af8b13038661a69a1e2c00cacdfd30 100644 --- a/goofy-client/libs/tech-shared/src/lib/services/navigation.service.ts +++ b/goofy-client/libs/tech-shared/src/lib/services/navigation.service.ts @@ -45,15 +45,10 @@ export class NavigationService { } public getDecodedParam(paramName: string): string { - if (isEmptyObject(this.routeParameter$.value) || isUndefined(this.routeParameter$.value[paramName])) return undefined; + if (this.isParamPresent(paramName)) return undefined; return NavigationService.decodeParamUrl(this.routeParameter$.value[paramName]); } - public getDecodedUriParam(paramName: string): string { - if (isEmptyObject(this.routeParameter$.value) || isUndefined(this.routeParameter$.value[paramName])) return undefined; - return decodeURI(this.routeParameter$.value[paramName]); - } - static decodeParamUrl(encodedUrl: string): string { let decodeUrl: string; @@ -65,6 +60,15 @@ export class NavigationService { return decodeUrl; } + public getDecodedUriParam(paramName: string): string { + if (this.isParamPresent(paramName)) return undefined; + return decodeURI(this.routeParameter$.value[paramName]); + } + + private isParamPresent(paramName: string): boolean { + return isEmptyObject(this.routeParameter$.value) || isUndefined(this.routeParameter$.value[paramName]); + } + static isVorgangListPage(params: Params): boolean { return isEmptyObject(params); } @@ -80,8 +84,4 @@ export class NavigationService { public navigateRelativeTo(relativePath: string, relativeTo: ActivatedRoute): void { this.router.navigate([relativePath], { relativeTo }); } - - public isStartPage(): boolean { - return isEmptyObject(this.routeParameter$.value); - } } \ No newline at end of file diff --git a/goofy-client/libs/ui/src/lib/snackbar/snackbar.service.spec.ts b/goofy-client/libs/ui/src/lib/snackbar/snackbar.service.spec.ts index 60e14b061acb8d23fbada8d79e2533fedcb6d7ed..b6fec7478081c13e82377a076450b74e491ab33b 100644 --- a/goofy-client/libs/ui/src/lib/snackbar/snackbar.service.spec.ts +++ b/goofy-client/libs/ui/src/lib/snackbar/snackbar.service.spec.ts @@ -1,11 +1,17 @@ import { MatSnackBar } from '@angular/material/snack-bar'; +import { CommandResource } from '@goofy-client/command-shared'; import { Mock, mock, useFromMock } from '@goofy-client/test-utils'; +import { createCommandResource } from 'libs/command-shared/test/command'; +import { SnackbarComponent } from './snackbar.component'; import { SnackBarService } from './snackbar.service'; describe('SnackBarService', () => { - let service; + let service: SnackBarService; let snackBar: Mock<MatSnackBar>; + const commandResource: CommandResource = createCommandResource(); + const message: string = 'Snackbar Message'; + beforeEach(() => { snackBar = mock(MatSnackBar); @@ -15,4 +21,32 @@ describe('SnackBarService', () => { it('should create', () => { expect(service).toBeDefined(); }) + + describe('show snackbar', () => { + + beforeEach(() => { + service.listenOnAction = jest.fn(); + service.listenOnAfterDismissed = jest.fn(); + }) + + it('should open from component', () => { + service.showSnackbar(commandResource, message); + + expect(snackBar.openFromComponent).toHaveBeenCalledWith(SnackbarComponent, { + data: { message, commandResource }, duration: 10000, + }); + }) + + it('should listen to snackbar action', () => { + service.showSnackbar(commandResource, message, null); + + expect(service.listenOnAction).toHaveBeenCalledWith(null); + }) + + it('should listen to snackbar after dismissed', () => { + service.showSnackbar(commandResource, message, null); + + expect(service.listenOnAfterDismissed).toHaveBeenCalled(); + }) + }) }) \ No newline at end of file diff --git a/goofy-client/libs/ui/src/lib/snackbar/snackbar.service.ts b/goofy-client/libs/ui/src/lib/snackbar/snackbar.service.ts index 34140738995cc4ceb9cc9204189ef7fee50ef735..9ad51872b4beb71997e19ed5cdb2a80efc3f01eb 100644 --- a/goofy-client/libs/ui/src/lib/snackbar/snackbar.service.ts +++ b/goofy-client/libs/ui/src/lib/snackbar/snackbar.service.ts @@ -26,10 +26,18 @@ export class SnackBarService { } private listenToActions(revokeAction: () => void): void { + this.listenOnAction(revokeAction); + this.listenOnAfterDismissed(); + } + + listenOnAction(revokeAction: () => void): void { this.subscription = this.snackBarRef.onAction().subscribe(() => { revokeAction(); this.closeSnackBar(); }); + } + + listenOnAfterDismissed() { this.subscription.add(this.snackBarRef.afterDismissed().subscribe(() => this.closeSnackBar())); } diff --git a/goofy-client/libs/wiedervorlage-shared/src/lib/wiedervorlage.service.spec.ts b/goofy-client/libs/wiedervorlage-shared/src/lib/wiedervorlage.service.spec.ts index 26649747bb512ada76df2dfa77e5c772e7e8b566..aff422929f877c8f83215193fadae86537aa39fd 100644 --- a/goofy-client/libs/wiedervorlage-shared/src/lib/wiedervorlage.service.spec.ts +++ b/goofy-client/libs/wiedervorlage-shared/src/lib/wiedervorlage.service.spec.ts @@ -330,10 +330,6 @@ describe('WiedervorlageService', () => { describe('to vorgang list', () => { - beforeEach(() => { - navigationService.isStartPage.mockReturnValue(true); - }) - it('should clear list', () => { service.onNavigation({}); diff --git a/goofy-client/libs/wiedervorlage-shared/src/lib/wiedervorlage.service.ts b/goofy-client/libs/wiedervorlage-shared/src/lib/wiedervorlage.service.ts index 8fea481150c64fca6a3f0e412383b42eed02875d..650360d77259e643a061e091892d479443061de1 100644 --- a/goofy-client/libs/wiedervorlage-shared/src/lib/wiedervorlage.service.ts +++ b/goofy-client/libs/wiedervorlage-shared/src/lib/wiedervorlage.service.ts @@ -120,7 +120,7 @@ export class WiedervorlageService implements OnDestroy { this.submitInProgress$.next(createEmptyStateResource()); this.clearAttachmentList(); } - if (this.navigateToStartPage()) { + if (NavigationService.isVorgangListPage(params)) { this.clearWiedervorlagenList(); this.submitInProgress$.next(createEmptyStateResource()); this.clearAttachmentList(); @@ -143,10 +143,6 @@ export class WiedervorlageService implements OnDestroy { return isUndefined(params[WiedervorlageService.encodedWiedervorlageUriParam] && !isUndefined(params[VorgangService.VORGANG_WITH_EINGANG_URL])); } - private navigateToStartPage(): boolean { - return this.navigationService.isStartPage(); - } - private getWiedervorlageUri(): ResourceUri { return this.navigationService.getDecodedParam(WiedervorlageService.encodedWiedervorlageUriParam); }