diff --git a/alfa-client/libs/admin/keycloak-shared/src/lib/keycloak-formservice.spec.ts b/alfa-client/libs/admin/keycloak-shared/src/lib/keycloak-formservice.spec.ts index 6e71337e1f2789dd36b80944ca9795d595729966..16736b029cc38ba110105e478509ff4664306e23 100644 --- a/alfa-client/libs/admin/keycloak-shared/src/lib/keycloak-formservice.spec.ts +++ b/alfa-client/libs/admin/keycloak-shared/src/lib/keycloak-formservice.spec.ts @@ -180,6 +180,7 @@ describe('KeycloakFormService', () => { service._patchConfig = patchConfig; service._load = jest.fn().mockReturnValue(singleHot(dummyStateResource)); service._patchIfLoaded = jest.fn(); + service._doAfterPatch = jest.fn(); }); it('should call load', () => { @@ -196,6 +197,14 @@ describe('KeycloakFormService', () => { expect(service._patchIfLoaded).toHaveBeenCalledWith(dummyStateResource); }); + it('should call do after patch', () => { + service._load = jest.fn().mockReturnValue(of(dummyStateResource)); + + service._initLoading().subscribe(); + + expect(service._doAfterPatch).toHaveBeenCalledWith(dummyStateResource); + }); + it('should return loaded value', () => { const loadedDummyStateResource: Observable<StateResource<Dummy>> = service._initLoading(); @@ -777,6 +786,8 @@ export class TestKeycloakFormService extends KeycloakFormService<Dummy> { return TestKeycloakFormService.LOAD_OBSERVABLE(); } + _doAfterPatch(stateResource: StateResource<Dummy>) {} + _doSubmit(): Observable<StateResource<Dummy>> { return TestKeycloakFormService.SUBMIT_OBSERVABLE(); } diff --git a/alfa-client/libs/admin/keycloak-shared/src/lib/keycloak-formservice.ts b/alfa-client/libs/admin/keycloak-shared/src/lib/keycloak-formservice.ts index e7de668f01b046cf32d702026be570290ad440ca..c8287dbaba567bfefb376671bba26a35e2dd8ad7 100644 --- a/alfa-client/libs/admin/keycloak-shared/src/lib/keycloak-formservice.ts +++ b/alfa-client/libs/admin/keycloak-shared/src/lib/keycloak-formservice.ts @@ -69,11 +69,16 @@ export abstract class KeycloakFormService<T> { } _initLoading(): Observable<StateResource<T>> { - return this._load(this._patchConfig.id).pipe(tap((stateResource: StateResource<T>) => this._patchIfLoaded(stateResource))); + return this._load(this._patchConfig.id).pipe( + tap((stateResource: StateResource<T>) => this._patchIfLoaded(stateResource)), + tap((stateResource: StateResource<T>) => this._doAfterPatch(stateResource)), + ); } abstract _load(id: string): Observable<StateResource<T>>; + abstract _doAfterPatch(stateResource: StateResource<T>): void; + _patchIfLoaded(stateResource: StateResource<T>): void { if (isLoaded(stateResource)) this._patch(stateResource.resource); } diff --git a/alfa-client/libs/admin/user/src/lib/user-form/user.formservice.spec.ts b/alfa-client/libs/admin/user/src/lib/user-form/user.formservice.spec.ts index 71ea6569bdcc5da1257ec1078b124e8259c0b61f..452e72c34a42911c7868c5f2ee15609d750b295f 100644 --- a/alfa-client/libs/admin/user/src/lib/user-form/user.formservice.spec.ts +++ b/alfa-client/libs/admin/user/src/lib/user-form/user.formservice.spec.ts @@ -168,6 +168,16 @@ describe('UserFormService', () => { }); }); + describe('doAfterPatch', () => { + it('should call _updateAlfaRoleStates', () => { + service._updateAlfaRoleStates = jest.fn(); + + service._doAfterPatch(createStateResource(createUser())); + + expect(service._updateAlfaRoleStates).toHaveBeenCalled(); + }); + }); + describe('initOrganisationsEinheiten', () => { beforeEach(() => { service._addOrganisationsEinheitenToForm = jest.fn(); diff --git a/alfa-client/libs/admin/user/src/lib/user-form/user.formservice.ts b/alfa-client/libs/admin/user/src/lib/user-form/user.formservice.ts index 2e717f691285c8079a9fcc0434a824a17cd5399c..616a0e9553f766fb7f02808ec700db71f202cfe3 100644 --- a/alfa-client/libs/admin/user/src/lib/user-form/user.formservice.ts +++ b/alfa-client/libs/admin/user/src/lib/user-form/user.formservice.ts @@ -95,10 +95,11 @@ export class UserFormService extends KeycloakFormService<User> { } _load(id: string): Observable<StateResource<User>> { - return this.userService.getUserById(id).pipe( - filter(isLoaded), - tap(() => this._updateAlfaRoleStates()), - ); + return this.userService.getUserById(id); + } + + _doAfterPatch(stateResource: StateResource<User>): void { + this._updateAlfaRoleStates(); } _initForm(): UntypedFormGroup {