From 942653dbf13103fae57fd415448743473334f040 Mon Sep 17 00:00:00 2001
From: Martin <git@mail.de>
Date: Mon, 17 Feb 2025 22:26:44 +0100
Subject: [PATCH] OZG-6185 move link conditions to parent component

---
 ...zard-create-document-button.component.html | 22 +++--
 ...d-create-document-button.component.spec.ts | 19 +---
 ...wizard-create-document-button.component.ts |  1 -
 ...rd-dokumente-hochladen-form.component.html | 34 ++++---
 ...dokumente-hochladen-form.component.spec.ts | 90 ++++++++++++-------
 ...zard-dokumente-hochladen-form.component.ts |  2 +-
 ...upload-attachment-button.component.spec.ts |  4 -
 ...zard-upload-document-button.component.html |  1 -
 ...d-upload-document-button.component.spec.ts |  9 --
 9 files changed, 92 insertions(+), 90 deletions(-)

diff --git a/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/create-document-button-container/create-document-button/bescheid-wizard-create-document-button.component.html b/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/create-document-button-container/create-document-button/bescheid-wizard-create-document-button.component.html
index db9307187e..4b6a5edec7 100644
--- a/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/create-document-button-container/create-document-button/bescheid-wizard-create-document-button.component.html
+++ b/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/create-document-button-container/create-document-button/bescheid-wizard-create-document-button.component.html
@@ -1,12 +1,10 @@
-@if (bescheidResource | hasLink: BescheidLinkRel.CREATE_DOCUMENT) {
-  <ods-button-card
-    class="w-full max-w-72"
-    [isLoading]="bescheidDocument.create.loading"
-    (click)="clickEmitter.emit()"
-    text="Bescheiddokument"
-    subText="automatisch erstellen"
-    data-test-id="create-bescheid-document-button"
-  >
-    <ods-bescheid-generate-icon icon />
-  </ods-button-card>
-}
+<ods-button-card
+  class="w-full max-w-72"
+  [isLoading]="bescheidDocument.create.loading"
+  (click)="clickEmitter.emit()"
+  text="Bescheiddokument"
+  subText="automatisch erstellen"
+  data-test-id="create-bescheid-document-button"
+>
+  <ods-bescheid-generate-icon icon />
+</ods-button-card>
diff --git a/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/create-document-button-container/create-document-button/bescheid-wizard-create-document-button.component.spec.ts b/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/create-document-button-container/create-document-button/bescheid-wizard-create-document-button.component.spec.ts
index 0870d4c34b..9473e81b5c 100644
--- a/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/create-document-button-container/create-document-button/bescheid-wizard-create-document-button.component.spec.ts
+++ b/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/create-document-button-container/create-document-button/bescheid-wizard-create-document-button.component.spec.ts
@@ -1,13 +1,6 @@
 import { BescheidDocument, BescheidLinkRel, createEmptyBescheidDocument } from '@alfa-client/bescheid-shared';
 import { HasLinkPipe } from '@alfa-client/tech-shared';
-import {
-  existsAsHtmlElement,
-  getElementComponentFromFixtureByCss,
-  mock,
-  Mock,
-  notExistsAsHtmlElement,
-  triggerEvent,
-} from '@alfa-client/test-utils';
+import { existsAsHtmlElement, getElementComponentFromFixtureByCss, mock, Mock, triggerEvent } from '@alfa-client/test-utils';
 import { ComponentFixture, TestBed } from '@angular/core/testing';
 import { BescheidGenerateIconComponent, ButtonCardComponent } from '@ods/system';
 import { MockComponent } from 'ng-mocks';
@@ -73,21 +66,11 @@ describe('BescheidWizardAutomatischErstellenButtonComponent', () => {
   describe('template', () => {
     describe('create button', () => {
       it('should exists', () => {
-        component.bescheidResource = createBescheidResource([BescheidLinkRel.CREATE_DOCUMENT]);
-
         fixture.detectChanges();
 
         existsAsHtmlElement(fixture, createButtonTestId);
       });
 
-      it('should NOT exists', () => {
-        component.bescheidResource = createBescheidResource();
-
-        fixture.detectChanges();
-
-        notExistsAsHtmlElement(fixture, createButtonTestId);
-      });
-
       it('should have been called with inputs', () => {
         component.bescheidResource = createBescheidResource([BescheidLinkRel.CREATE_DOCUMENT]);
         component.bescheidDocument = bescheidDocument;
diff --git a/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/create-document-button-container/create-document-button/bescheid-wizard-create-document-button.component.ts b/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/create-document-button-container/create-document-button/bescheid-wizard-create-document-button.component.ts
index 083aec95ac..5f268e4608 100644
--- a/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/create-document-button-container/create-document-button/bescheid-wizard-create-document-button.component.ts
+++ b/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/create-document-button-container/create-document-button/bescheid-wizard-create-document-button.component.ts
@@ -8,7 +8,6 @@ import { BescheidFormService } from '../../../bescheid.formservice';
 })
 export class BescheidWizardCreateDocumentButtonComponent {
   @Input() bescheidResource: BescheidResource;
-
   @Input() set bescheidDocument(value: BescheidDocument) {
     this._bescheidDocument = value;
     this.formService.updateBescheidDocumentFile(value.documentUri);
diff --git a/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/dokumente-hochladen-container/form/bescheid-wizard-dokumente-hochladen-form.component.html b/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/dokumente-hochladen-container/form/bescheid-wizard-dokumente-hochladen-form.component.html
index fd2a2ab6c4..edd8aff832 100644
--- a/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/dokumente-hochladen-container/form/bescheid-wizard-dokumente-hochladen-form.component.html
+++ b/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/dokumente-hochladen-container/form/bescheid-wizard-dokumente-hochladen-form.component.html
@@ -24,23 +24,29 @@
 
 -->
 <div class="mt-4 flex flex-col gap-4">
-  <alfa-bescheid-wizard-create-document-button-container
-    [bescheidResource]="bescheidResource"
-    data-test-id="create-document-button"
-  ></alfa-bescheid-wizard-create-document-button-container>
-  <alfa-bescheid-wizard-upload-document-button-container
-    [bescheidResource]="bescheidResource"
-    data-test-id="upload-document-button"
-  ></alfa-bescheid-wizard-upload-document-button-container>
-  <alfa-bescheid-wizard-upload-attachment-button-container
-    [bescheidResource]="bescheidResource"
-    data-test-id="upload-attachment-button"
-  ></alfa-bescheid-wizard-upload-attachment-button-container>
-  @if (bescheidResource | hasLink: bescheidLinkRel.UPDATE) {
+  @if (bescheidResource | hasLink: BescheidLinkRel.CREATE_DOCUMENT) {
+    <alfa-bescheid-wizard-create-document-button-container
+      [bescheidResource]="bescheidResource"
+      data-test-id="create-document-button"
+    />
+  }
+  @if (bescheidResource | hasLink: BescheidLinkRel.UPLOAD_BESCHEID_FILE) {
+    <alfa-bescheid-wizard-upload-document-button-container
+      [bescheidResource]="bescheidResource"
+      data-test-id="upload-document-button"
+    />
+  }
+  @if (bescheidResource | hasLink: BescheidLinkRel.UPLOAD_ATTACHMENT) {
+    <alfa-bescheid-wizard-upload-attachment-button-container
+      [bescheidResource]="bescheidResource"
+      data-test-id="upload-attachment-button"
+    />
+  }
+  @if (bescheidResource | hasLink: BescheidLinkRel.UPDATE) {
     <alfa-bescheid-wizard-weiter-button
       [submitStateResource]="submitStateResource$ | async"
       (clickEmitter)="gotoNextStep()"
       data-test-id="weiter-button"
-    ></alfa-bescheid-wizard-weiter-button>
+    />
   }
 </div>
diff --git a/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/dokumente-hochladen-container/form/bescheid-wizard-dokumente-hochladen-form.component.spec.ts b/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/dokumente-hochladen-container/form/bescheid-wizard-dokumente-hochladen-form.component.spec.ts
index 02452fe302..80a36774ef 100644
--- a/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/dokumente-hochladen-container/form/bescheid-wizard-dokumente-hochladen-form.component.spec.ts
+++ b/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/dokumente-hochladen-container/form/bescheid-wizard-dokumente-hochladen-form.component.spec.ts
@@ -21,10 +21,10 @@
  * Die sprachspezifischen Genehmigungen und Beschränkungen
  * unter der Lizenz sind dem Lizenztext zu entnehmen.
  */
-import { BescheidDocument, BescheidLinkRel, createEmptyBescheidDocument } from '@alfa-client/bescheid-shared';
+import { BescheidDocument, BescheidLinkRel, BescheidResource, createEmptyBescheidDocument } from '@alfa-client/bescheid-shared';
 import { CommandResource } from '@alfa-client/command-shared';
 import { HasLinkPipe, StateResource } from '@alfa-client/tech-shared';
-import { existsAsHtmlElement, getElementComponentFromFixtureByCss, mock, Mock, notExistsAsHtmlElement, triggerEvent, } from '@alfa-client/test-utils';
+import { existsAsHtmlElement, getMockComponent, mock, Mock, notExistsAsHtmlElement, triggerEvent } from '@alfa-client/test-utils';
 import { ComponentFixture, TestBed } from '@angular/core/testing';
 import { MockComponent } from 'ng-mocks';
 import { EMPTY, of } from 'rxjs';
@@ -129,59 +129,92 @@ describe('BescheidWizardDokumenteHochladenFormComponent', () => {
 
   describe('template', () => {
     describe('create document button', () => {
-      it('should exists', () => {
+      const bescheidResourceWithLink: BescheidResource = createBescheidResource([BescheidLinkRel.CREATE_DOCUMENT]);
+
+      it('should be visible if link is present', () => {
+        component.bescheidResource = bescheidResourceWithLink;
+
+        fixture.detectChanges();
+
         existsAsHtmlElement(fixture, createDocumentButtonTestId);
       });
 
-      it('should have been called with inputs', () => {
+      it('should hide if link is missing', () => {
         component.bescheidResource = createBescheidResource();
 
         fixture.detectChanges();
-        const createDocumentButton: BescheidWizardCreateDocumentButtonContainerComponent =
-          getElementComponentFromFixtureByCss<BescheidWizardCreateDocumentButtonContainerComponent>(
-            fixture,
-            createDocumentButtonTestId,
-          );
 
-        expect(createDocumentButton.bescheidResource).toEqual(component.bescheidResource);
+        notExistsAsHtmlElement(fixture, createDocumentButtonTestId);
+      });
+
+      it('should have been called with inputs', () => {
+        component.bescheidResource = bescheidResourceWithLink;
+
+        fixture.detectChanges();
+
+        expect(getMockComponent(fixture, BescheidWizardCreateDocumentButtonContainerComponent).bescheidResource).toEqual(
+          bescheidResourceWithLink,
+        );
       });
     });
 
     describe('upload document button', () => {
-      it('should exists', () => {
+      const bescheidResourceWithLink: BescheidResource = createBescheidResource([BescheidLinkRel.UPLOAD_BESCHEID_FILE]);
+
+      it('should be visible if link is present', () => {
+        component.bescheidResource = bescheidResourceWithLink;
+
+        fixture.detectChanges();
+
         existsAsHtmlElement(fixture, uploadDocumentButtonTestId);
       });
 
-      it('should have been called with inputs', () => {
+      it('should hide if link is missing', () => {
         component.bescheidResource = createBescheidResource();
 
         fixture.detectChanges();
-        const uploadDocumentButton: BescheidWizardUploadDocumentButtonContainerComponent =
-          getElementComponentFromFixtureByCss<BescheidWizardUploadDocumentButtonContainerComponent>(
-            fixture,
-            uploadDocumentButtonTestId,
-          );
 
-        expect(uploadDocumentButton.bescheidResource).toEqual(component.bescheidResource);
+        notExistsAsHtmlElement(fixture, uploadDocumentButtonTestId);
+      });
+
+      it('should have been called with inputs', () => {
+        component.bescheidResource = bescheidResourceWithLink;
+
+        fixture.detectChanges();
+
+        expect(getMockComponent(fixture, BescheidWizardUploadDocumentButtonContainerComponent).bescheidResource).toEqual(
+          bescheidResourceWithLink,
+        );
       });
     });
 
     describe('upload attachment button', () => {
-      it('should exists', () => {
+      const bescheidResourceWithLink: BescheidResource = createBescheidResource([BescheidLinkRel.UPLOAD_ATTACHMENT]);
+
+      it('should be visible if link is present', () => {
+        component.bescheidResource = bescheidResourceWithLink;
+
+        fixture.detectChanges();
+
         existsAsHtmlElement(fixture, uploadAttachmentButtonTestId);
       });
 
-      it('should have been called with inputs', () => {
+      it('should hide if link is missing', () => {
         component.bescheidResource = createBescheidResource();
 
         fixture.detectChanges();
-        const uploadAttachmentButton: BescheidWizardUploadAttachmentButtonContainerComponent =
-          getElementComponentFromFixtureByCss<BescheidWizardUploadAttachmentButtonContainerComponent>(
-            fixture,
-            uploadDocumentButtonTestId,
-          );
 
-        expect(uploadAttachmentButton.bescheidResource).toEqual(component.bescheidResource);
+        notExistsAsHtmlElement(fixture, uploadAttachmentButtonTestId);
+      });
+
+      it('should have been called with inputs', () => {
+        component.bescheidResource = bescheidResourceWithLink;
+
+        fixture.detectChanges();
+
+        expect(getMockComponent(fixture, BescheidWizardUploadAttachmentButtonContainerComponent).bescheidResource).toEqual(
+          bescheidResourceWithLink,
+        );
       });
     });
 
@@ -208,11 +241,8 @@ describe('BescheidWizardDokumenteHochladenFormComponent', () => {
         component.bescheidResource = createBescheidResource([BescheidLinkRel.UPDATE]);
 
         fixture.detectChanges();
-        const weiterButton: BescheidWizardWeiterButtonComponent =
-          getElementComponentFromFixtureByCss<BescheidWizardWeiterButtonComponent>(fixture, weiterButtonTestId);
-        component.submitStateResource$.subscribe();
 
-        expect(weiterButton.submitStateResource).toEqual(commandStateResource);
+        expect(getMockComponent(fixture, BescheidWizardWeiterButtonComponent).submitStateResource).toEqual(commandStateResource);
       });
 
       describe('output', () => {
diff --git a/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/dokumente-hochladen-container/form/bescheid-wizard-dokumente-hochladen-form.component.ts b/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/dokumente-hochladen-container/form/bescheid-wizard-dokumente-hochladen-form.component.ts
index d09a24bce3..0aafb95573 100644
--- a/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/dokumente-hochladen-container/form/bescheid-wizard-dokumente-hochladen-form.component.ts
+++ b/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/dokumente-hochladen-container/form/bescheid-wizard-dokumente-hochladen-form.component.ts
@@ -53,7 +53,7 @@ export class BescheidWizardDokumenteHochladenFormComponent {
 
   private _bescheidDocument: BescheidDocument;
 
-  protected readonly bescheidLinkRel = BescheidLinkRel;
+  protected readonly BescheidLinkRel = BescheidLinkRel;
 
   public gotoNextStep(): void {
     if (isNil(this._bescheidDocument.resource)) {
diff --git a/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/upload-attachment-button-container/upload-attachment-button/bescheid-wizard-upload-attachment-button.component.spec.ts b/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/upload-attachment-button-container/upload-attachment-button/bescheid-wizard-upload-attachment-button.component.spec.ts
index 7aff85b5a3..91693776e3 100644
--- a/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/upload-attachment-button-container/upload-attachment-button/bescheid-wizard-upload-attachment-button.component.spec.ts
+++ b/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/upload-attachment-button-container/upload-attachment-button/bescheid-wizard-upload-attachment-button.component.spec.ts
@@ -1,4 +1,3 @@
-import { BescheidAttachments } from '@alfa-client/bescheid-shared';
 import { createEmptyStateResource, createStateResource } from '@alfa-client/tech-shared';
 import { getElementComponentFromFixtureByCss, triggerEvent } from '@alfa-client/test-utils';
 import { ComponentFixture, TestBed } from '@angular/core/testing';
@@ -6,7 +5,6 @@ import { FormBuilder, ReactiveFormsModule } from '@angular/forms';
 import { faker } from '@faker-js/faker';
 import { FileUploadEditorComponent } from '@ods/component';
 import { MockComponent } from 'ng-mocks';
-import { createBescheidAttachments } from '../../../../../../../bescheid-shared/src/test/bescheid';
 import { createBinaryFileResource } from '../../../../../../../binary-file-shared/test/binary-file';
 import { getDataTestIdOf } from '../../../../../../../tech-shared/test/data-test';
 import { createFile } from '../../../../../../../tech-shared/test/file';
@@ -19,8 +17,6 @@ describe('BescheidWizardUploadAttachmentButtonComponent', () => {
 
   const uploadEditorTestId: string = getDataTestIdOf('bescheid-wizard-upload-editor');
 
-  const bescheidAttachments: BescheidAttachments = createBescheidAttachments();
-
   let formService: BescheidFormService;
 
   beforeEach(() => {
diff --git a/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/upload-document-button-container/upload-document-button/bescheid-wizard-upload-document-button.component.html b/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/upload-document-button-container/upload-document-button/bescheid-wizard-upload-document-button.component.html
index 0b04ceb6fc..6ddb97a03c 100644
--- a/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/upload-document-button-container/upload-document-button/bescheid-wizard-upload-document-button.component.html
+++ b/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/upload-document-button-container/upload-document-button/bescheid-wizard-upload-document-button.component.html
@@ -1,6 +1,5 @@
 <div [formGroup]="formService.form" class="w-full">
   <ods-single-file-upload-editor
-    *ngIf="bescheidResource | hasLink: bescheidLinkRel.UPLOAD_BESCHEID_FILE"
     [uploadInProgress]="upload.loading"
     [formControlName]="formServiceClass.FIELD_BESCHEID_DOCUMENT"
     (newFile)="uploadFile($event)"
diff --git a/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/upload-document-button-container/upload-document-button/bescheid-wizard-upload-document-button.component.spec.ts b/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/upload-document-button-container/upload-document-button/bescheid-wizard-upload-document-button.component.spec.ts
index d6616d3731..66689e97b5 100644
--- a/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/upload-document-button-container/upload-document-button/bescheid-wizard-upload-document-button.component.spec.ts
+++ b/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid-wizard/upload-document-button-container/upload-document-button/bescheid-wizard-upload-document-button.component.spec.ts
@@ -4,7 +4,6 @@ import {
   existsAsHtmlElement,
   getElementComponentFromFixtureByCss,
   mock,
-  notExistsAsHtmlElement,
   triggerEvent,
   useFromMock,
 } from '@alfa-client/test-utils';
@@ -110,14 +109,6 @@ describe('BescheidWizardDokumentHochladenButtonComponent', () => {
         existsAsHtmlElement(fixture, fileUploadEditorTestId);
       });
 
-      it('should NOT exists', () => {
-        component.bescheidResource = createBescheidResource();
-
-        fixture.detectChanges();
-
-        notExistsAsHtmlElement(fixture, fileUploadEditorTestId);
-      });
-
       it('should have been called with inputs', () => {
         component.bescheidResource = createBescheidResource([BescheidLinkRel.UPLOAD_BESCHEID_FILE]);
         component.upload = createPendingUpload();
-- 
GitLab