From 3ed15a724be5585aea7e779ec6437abede341330 Mon Sep 17 00:00:00 2001
From: OZGCloud <ozgcloud@mgm-tp.com>
Date: Thu, 19 Sep 2024 10:41:44 +0200
Subject: [PATCH] OZG-6376 OZG-6694 Add unsubscribe logic

---
 .../vorgang-list-item.component.spec.ts              | 12 ++++++++----
 .../vorgang-list-item/vorgang-list-item.component.ts |  3 +++
 2 files changed, 11 insertions(+), 4 deletions(-)

diff --git a/alfa-client/libs/vorgang/src/lib/vorgang-list-container/vorgang-list/vorgang-list-item/vorgang-list-item.component.spec.ts b/alfa-client/libs/vorgang/src/lib/vorgang-list-container/vorgang-list/vorgang-list-item/vorgang-list-item.component.spec.ts
index 0338037203..0c9700bd02 100644
--- a/alfa-client/libs/vorgang/src/lib/vorgang-list-container/vorgang-list/vorgang-list-item/vorgang-list-item.component.spec.ts
+++ b/alfa-client/libs/vorgang/src/lib/vorgang-list-container/vorgang-list/vorgang-list-item/vorgang-list-item.component.spec.ts
@@ -24,6 +24,7 @@
 import {
   convertForDataTest,
   ConvertForDataTestPipe,
+  createEmptyStateResource,
   EnumToLabelPipe,
   HasLinkPipe,
   ToResourceUriPipe,
@@ -53,6 +54,7 @@ import { RouterTestingModule } from '@angular/router/testing';
 import { getDataTestClassOf, getDataTestIdOf } from 'libs/tech-shared/test/data-test';
 import { createVorgangResource } from 'libs/vorgang-shared/test/vorgang';
 import { MockComponent, MockModule } from 'ng-mocks';
+import { of } from 'rxjs';
 import { VorgangBescheidStatusComponent } from './vorgang-bescheid-status/vorgang-bescheid-status.component';
 import { VorgangCreatedAtComponent } from './vorgang-created-at/vorgang-created-at.component';
 import { VorgangListItemComponent } from './vorgang-list-item.component';
@@ -129,8 +131,13 @@ describe('VorgangListItemComponent', () => {
     });
 
     describe('user profile', () => {
+      beforeEach(() => {
+        component.userProfileService.getAssignedUserProfile = jest
+          .fn()
+          .mockReturnValue(of(createEmptyStateResource()));
+      });
+
       it('should not get profile if vorgang has no "assigned to" link', () => {
-        component.userProfileService.getAssignedUserProfile = jest.fn();
         component.vorgang = createVorgangResource();
 
         component.ngOnInit();
@@ -139,9 +146,6 @@ describe('VorgangListItemComponent', () => {
       });
 
       it('should get profile', () => {
-        component.userProfileService.getAssignedUserProfile = jest
-          .fn()
-          .mockReturnValue({ subscribe: jest.fn() });
         component.vorgang = createVorgangResource([VorgangHeaderLinkRel.ASSIGNED_TO]);
 
         component.ngOnInit();
diff --git a/alfa-client/libs/vorgang/src/lib/vorgang-list-container/vorgang-list/vorgang-list-item/vorgang-list-item.component.ts b/alfa-client/libs/vorgang/src/lib/vorgang-list-container/vorgang-list/vorgang-list-item/vorgang-list-item.component.ts
index 3743fbda34..b695b0b374 100644
--- a/alfa-client/libs/vorgang/src/lib/vorgang-list-container/vorgang-list/vorgang-list-item/vorgang-list-item.component.ts
+++ b/alfa-client/libs/vorgang/src/lib/vorgang-list-container/vorgang-list/vorgang-list-item/vorgang-list-item.component.ts
@@ -26,6 +26,7 @@ import {
   EnumToLabelPipe,
   formatFullDateWithTimeWithoutSeconds,
   formatToPrettyDate,
+  isNotNull,
   StateResource,
 } from '@alfa-client/tech-shared';
 import {
@@ -42,6 +43,7 @@ import { getAktenzeichenText } from '@alfa-client/vorgang-shared-ui';
 import { Component, Input, OnInit } from '@angular/core';
 import { hasLink } from '@ngxp/rest';
 import { isNil } from 'lodash-es';
+import { first } from 'rxjs';
 
 @Component({
   selector: 'alfa-vorgang-list-item',
@@ -62,6 +64,7 @@ export class VorgangListItemComponent implements OnInit {
     if (hasLink(this.vorgang, VorgangHeaderLinkRel.ASSIGNED_TO)) {
       this.userProfileService
         .getAssignedUserProfile(this.vorgang, VorgangHeaderLinkRel.ASSIGNED_TO)
+        .pipe(first(isNotNull))
         .subscribe((userProfileStateResource: StateResource<UserProfileResource>) => {
           this.userProfile = userProfileStateResource;
         });
-- 
GitLab