From 7548685b99b35b67c4247439c5b8144d8558da3b Mon Sep 17 00:00:00 2001
From: "Zickermann, Jan" <jan.zickermann@dataport.de>
Date: Wed, 27 Mar 2024 09:47:21 +0100
Subject: [PATCH] OZG-4995 Use `hasLink` pipe

---
 alfa-client/apps/admin/src/app/app.component.html    |  9 ++++++---
 alfa-client/apps/admin/src/app/app.component.spec.ts | 11 +----------
 alfa-client/apps/admin/src/app/app.component.ts      |  6 +-----
 alfa-client/apps/admin/src/app/app.module.ts         |  2 ++
 alfa-client/libs/admin-settings/src/index.ts         |  3 ---
 5 files changed, 10 insertions(+), 21 deletions(-)

diff --git a/alfa-client/apps/admin/src/app/app.component.html b/alfa-client/apps/admin/src/app/app.component.html
index 65908eea9a..87dbc4de9c 100644
--- a/alfa-client/apps/admin/src/app/app.component.html
+++ b/alfa-client/apps/admin/src/app/app.component.html
@@ -11,18 +11,21 @@
     <div class="w-72 bg-slate-100 p-6">
       <nav>
         <admin-navigation
-          *ngIf="hasConfigurationLink(apiRoot)"
+          *ngIf="apiRoot | hasLink: ApiRootLinkRel.CONFIGURATION"
           data-test-id="navigation"
         ></admin-navigation>
       </nav>
     </div>
     <main class="flex-auto overflow-y-auto bg-slate-200 p-6">
       <router-outlet
-        *ngIf="hasConfigurationLink(apiRoot); else configurationResourceLinkNotAvailable"
+        *ngIf="
+          apiRoot | hasLink: ApiRootLinkRel.CONFIGURATION;
+          else configurationResourceLinkNotAvailable
+        "
         data-test-id="router-outlet"
       ></router-outlet>
       <ng-template #configurationResourceLinkNotAvailable>
-        <unavailable-page>Content to render when condition is false.</unavailable-page>
+        <unavailable-page></unavailable-page>
       </ng-template>
     </main>
   </div>
diff --git a/alfa-client/apps/admin/src/app/app.component.spec.ts b/alfa-client/apps/admin/src/app/app.component.spec.ts
index 1aa58ae35d..3fa47f553b 100644
--- a/alfa-client/apps/admin/src/app/app.component.spec.ts
+++ b/alfa-client/apps/admin/src/app/app.component.spec.ts
@@ -36,13 +36,10 @@ describe('AppComponent', () => {
     login: jest.fn().mockResolvedValue(Promise.resolve()),
   };
 
-  let configurationService: Mock<ConfigurationService>;
-
   const router: Mock<Router> = mock(Router);
   const apiRootService: Mock<ApiRootService> = mock(ApiRootService);
 
   beforeEach(async () => {
-    configurationService = mock(ConfigurationService);
     await TestBed.configureTestingModule({
       declarations: [
         AppComponent,
@@ -80,12 +77,6 @@ describe('AppComponent', () => {
   });
 
   describe('ngOnInit', () => {
-    beforeEach(() => {
-      configurationService.getConfigurationResource.mockReturnValue(
-        of(createEmptyStateResource<ApiRootResource>()),
-      );
-    });
-
     it('should call authService login', () => {
       component.ngOnInit();
 
@@ -136,7 +127,7 @@ describe('AppComponent', () => {
 
   describe('navigation', () => {
     beforeEach(() => {});
-    it('should exist if configuration resource available', () => {
+    it('should exist if configuration link exists', () => {
       component.apiRootStateResource$ = of(
         createStateResource(createApiRootResource([ApiRootLinkRel.CONFIGURATION])),
       );
diff --git a/alfa-client/apps/admin/src/app/app.component.ts b/alfa-client/apps/admin/src/app/app.component.ts
index babbbc304a..cffa4bd597 100644
--- a/alfa-client/apps/admin/src/app/app.component.ts
+++ b/alfa-client/apps/admin/src/app/app.component.ts
@@ -4,7 +4,6 @@ import { Observable } from 'rxjs';
 import { StateResource } from '@alfa-client/tech-shared';
 import { Router } from '@angular/router';
 import { AuthenticationService } from 'libs/authentication/src/lib/authentication.service';
-import { hasLink } from '@ngxp/rest';
 
 @Component({
   selector: 'app-root',
@@ -15,7 +14,6 @@ export class AppComponent implements OnInit {
   readonly title = 'admin';
 
   public apiRootStateResource$: Observable<StateResource<ApiRootResource>>;
-  configurationResourceAvailable$: Observable<boolean>;
 
   constructor(
     public authenticationService: AuthenticationService,
@@ -32,7 +30,5 @@ export class AppComponent implements OnInit {
     this.router.navigate(['/']);
   }
 
-  hasConfigurationLink(apiRootResource: ApiRootResource): boolean {
-    return hasLink(apiRootResource, ApiRootLinkRel.CONFIGURATION);
-  }
+  protected readonly ApiRootLinkRel = ApiRootLinkRel;
 }
diff --git a/alfa-client/apps/admin/src/app/app.module.ts b/alfa-client/apps/admin/src/app/app.module.ts
index 66f8d20d91..5036e2f54c 100644
--- a/alfa-client/apps/admin/src/app/app.module.ts
+++ b/alfa-client/apps/admin/src/app/app.module.ts
@@ -22,6 +22,7 @@ import { OAuthModule } from 'angular-oauth2-oidc';
 import { HttpUnauthorizedInterceptor } from 'libs/authentication/src/lib/http-unauthorized.interceptor';
 import { OrganisationseinheitPageComponent } from '../pages/organisationseinheit/organisationseinheit-page/organisationseinheit-page.component';
 import { UnavailablePageComponent } from '../pages/unavailable/unavailable-page/unavailable-page.component';
+import { TechSharedModule } from '@alfa-client/tech-shared';
 
 @NgModule({
   declarations: [
@@ -52,6 +53,7 @@ import { UnavailablePageComponent } from '../pages/unavailable/unavailable-page/
         sendAccessToken: true,
       },
     }),
+    TechSharedModule,
   ],
   providers: [
     {
diff --git a/alfa-client/libs/admin-settings/src/index.ts b/alfa-client/libs/admin-settings/src/index.ts
index 2687bf6f3f..3d084df97d 100644
--- a/alfa-client/libs/admin-settings/src/index.ts
+++ b/alfa-client/libs/admin-settings/src/index.ts
@@ -1,7 +1,4 @@
 export * from './lib/admin-settings.module';
 export * from './lib/postfach/postfach-container/postfach-container.component';
 export * from './lib/organisationseinheit/organisationseinheit-container/organisationseinheit-container.component';
-export * from './lib/configuration/configuration.model';
-export * from './lib/configuration/configuration.linkrel';
-export * from './lib/configuration/configuration.service';
 export * from './lib/shared/navigation-item/navigation-item.component';
-- 
GitLab