From 3099a4ba83b0c4b0bbe19611ef2485881bea16e4 Mon Sep 17 00:00:00 2001
From: Albert <Albert.Bruns@mgm-tp.com>
Date: Sat, 12 Apr 2025 00:26:32 +0200
Subject: [PATCH] OZG-7974 small fix

---
 .../src/lib/keycloak-formservice.spec.ts              | 11 +++++++++++
 .../keycloak-shared/src/lib/keycloak-formservice.ts   |  7 ++++++-
 .../user/src/lib/user-form/user.formservice.spec.ts   | 10 ++++++++++
 .../admin/user/src/lib/user-form/user.formservice.ts  |  9 +++++----
 4 files changed, 32 insertions(+), 5 deletions(-)

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 6e71337e1f..16736b029c 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 e7de668f01..c8287dbaba 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 71ea6569bd..452e72c34a 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 2e717f6912..616a0e9553 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 {
-- 
GitLab