From 51b36a590f9f6d1762a9dbede47196cbd4e7ee3d Mon Sep 17 00:00:00 2001
From: OZGCloud <ozgcloud@mgm-tp.com>
Date: Fri, 23 Feb 2024 21:14:02 +0100
Subject: [PATCH] OZG-4994 OZG-5078 show view if links exist

---
 .../src/lib/api-root.linkrel.ts               |  3 +++
 .../vorgang-views-menu.component.html         |  7 ++++++
 .../vorgang-views-menu.component.spec.ts      | 24 ++++++++++++++++++-
 3 files changed, 33 insertions(+), 1 deletion(-)

diff --git a/alfa-client/libs/api-root-shared/src/lib/api-root.linkrel.ts b/alfa-client/libs/api-root-shared/src/lib/api-root.linkrel.ts
index d8a70c20e7..f4f18e6557 100644
--- a/alfa-client/libs/api-root-shared/src/lib/api-root.linkrel.ts
+++ b/alfa-client/libs/api-root-shared/src/lib/api-root.linkrel.ts
@@ -51,6 +51,9 @@ export enum ApiRootLinkRel {
   ALL_WIEDERVORLAGEN = 'vorgaenge_wiedervorlagen_all',
   MY_WIEDERVORLAGEN = 'vorgaenge_wiedervorlagen_my',
   UNASSIGNED_WIEDERVORLAGEN = 'vorgaenge_wiedervorlagen_unassigned',
+  ALL_UNGELESENE_NACHRICHTEN = 'vorgaenge_ungelesene_nachrichten_all',
+  MY_UNGELESENE_NACHRICHTEN = 'vorgaenge_ungelesene_nachrichten_my',
+  UNASSIGNED_UNGELESENE_NACHRICHTEN = 'vorgaenge_ungelesene_nachrichten_unassigned',
   ALLE_VORGAENGE_ZU_LOESCHEN = 'vorgaenge_zu_loeschen_all',
   MEINE_VORGAENGE_ZU_LOESCHEN = 'vorgaenge_zu_loeschen_my',
   UNASSIGNED_ZU_LOESCHEN = 'vorgaenge_zu_loeschen_unassigned',
diff --git a/alfa-client/libs/vorgang/src/lib/vorgang-list-page-container/vorgang-list-page/vorgang-views-menu/vorgang-views-menu.component.html b/alfa-client/libs/vorgang/src/lib/vorgang-list-page-container/vorgang-list-page/vorgang-views-menu/vorgang-views-menu.component.html
index c5f2b64b85..6c874f1b35 100644
--- a/alfa-client/libs/vorgang/src/lib/vorgang-list-page-container/vorgang-list-page/vorgang-views-menu/vorgang-views-menu.component.html
+++ b/alfa-client/libs/vorgang/src/lib/vorgang-list-page-container/vorgang-list-page/vorgang-views-menu/vorgang-views-menu.component.html
@@ -131,6 +131,13 @@
       <div class="dot zu-loeschen"></div>
     </alfa-vorgang-view-item-container>
     <alfa-vorgang-view-item-container
+      *ngIf="
+        apiRootResource
+          | hasAnyLink
+            : apiRootLinkRel.ALL_UNGELESENE_NACHRICHTEN
+            : apiRootLinkRel.MY_UNGELESENE_NACHRICHTEN
+            : apiRootLinkRel.UNASSIGNED_UNGELESENE_NACHRICHTEN
+      "
       data-test-id="vorgang-ungelesene-nachrichten-view"
       label="Ungelesen"
       [view]="vorgangView.UNGELESENE_NACHRICHTEN"
diff --git a/alfa-client/libs/vorgang/src/lib/vorgang-list-page-container/vorgang-list-page/vorgang-views-menu/vorgang-views-menu.component.spec.ts b/alfa-client/libs/vorgang/src/lib/vorgang-list-page-container/vorgang-list-page/vorgang-views-menu/vorgang-views-menu.component.spec.ts
index cf4f8bd301..2d312f1902 100644
--- a/alfa-client/libs/vorgang/src/lib/vorgang-list-page-container/vorgang-list-page/vorgang-views-menu/vorgang-views-menu.component.spec.ts
+++ b/alfa-client/libs/vorgang/src/lib/vorgang-list-page-container/vorgang-list-page/vorgang-views-menu/vorgang-views-menu.component.spec.ts
@@ -25,7 +25,7 @@ import { ComponentFixture, TestBed } from '@angular/core/testing';
 import { ApiRootLinkRel } from '@alfa-client/api-root-shared';
 import { HasLinkPipe, createStateResource } from '@alfa-client/tech-shared';
 import { existsAsHtmlElement, notExistsAsHtmlElement } from '@alfa-client/test-utils';
-import { OzgcloudIconComponent } from '@alfa-client/ui';
+import { OzgcloudIconComponent, PostfachIconComponent } from '@alfa-client/ui';
 import { createApiRootResource } from 'libs/api-root-shared/test/api-root';
 import { HasAnyLinkPipe } from 'libs/tech-shared/src/lib/pipe/has-any-link.pipe';
 import { getDataTestIdOf } from 'libs/tech-shared/test/data-test';
@@ -48,6 +48,7 @@ describe('VorgangViewsMenuComponent', () => {
   const abgeschlossenView: string = getDataTestIdOf('vorgang-abgeschlossen-view');
   const verworfenView: string = getDataTestIdOf('vorgang-verworfen-view');
   const wiedervorlagenView: string = getDataTestIdOf('vorgang-wiedervorlagen-view');
+  const ungeleseneNachrichtenView: string = getDataTestIdOf('vorgang-ungelesene-nachrichten-view');
   const vorgangListView: string = getDataTestIdOf('vorgang-vorgang-list-view');
   const searchView: string = getDataTestIdOf('vorgang-search-view');
 
@@ -62,6 +63,7 @@ describe('VorgangViewsMenuComponent', () => {
         MockComponent(VorgangViewItemComponent),
         MockComponent(VorgangSearchViewItemContainerComponent),
         MockComponent(OzgcloudIconComponent),
+        MockComponent(PostfachIconComponent),
       ],
     }).compileComponents();
 
@@ -215,6 +217,26 @@ describe('VorgangViewsMenuComponent', () => {
     });
   });
 
+  describe('ungelesene nachrichten view', () => {
+    it.each([
+      ApiRootLinkRel.ALL_UNGELESENE_NACHRICHTEN,
+      ApiRootLinkRel.MY_UNGELESENE_NACHRICHTEN,
+      ApiRootLinkRel.UNASSIGNED_UNGELESENE_NACHRICHTEN,
+    ])('should show if %s link exists', (linkRel: string) => {
+      component.apiRootResource = createApiRootResource([linkRel]);
+      fixture.detectChanges();
+
+      existsAsHtmlElement(fixture, ungeleseneNachrichtenView);
+    });
+
+    it('should hide if link not exists', () => {
+      component.apiRootResource = createApiRootResource();
+      fixture.detectChanges();
+
+      notExistsAsHtmlElement(fixture, ungeleseneNachrichtenView);
+    });
+  });
+
   describe('vorgangList view', () => {
     it.each([
       ApiRootLinkRel.ALLE_VORGAENGE,
-- 
GitLab