From a89d05afc8b71ae0301689e721061f5855b84b43 Mon Sep 17 00:00:00 2001
From: OZGCloud <ozgcloud@mgm-tp.com>
Date: Thu, 31 Oct 2024 15:57:51 +0100
Subject: [PATCH] OZG-6959 add test file and adjust steps

---
 .../vorgang-zusammenarbeit.e2e.component.ts   |  11 +-
 ...rgang-zusammenarbeit-anfragen-extern.cy.ts | 144 ++++++++++++++++++
 ...zusammenarbeit-anfragen-oeffentlich.cy.ts} |   4 +-
 3 files changed, 156 insertions(+), 3 deletions(-)
 create mode 100644 alfa-client/apps/alfa-e2e/src/e2e/main-tests/vorgang-zusammenarbeit/vorgang-zusammenarbeit-anfragen-extern.cy.ts
 rename alfa-client/apps/alfa-e2e/src/e2e/main-tests/vorgang-zusammenarbeit/{vorgang-zusammenarbeit-anfragen.cy.ts => vorgang-zusammenarbeit-anfragen-oeffentlich.cy.ts} (97%)

diff --git a/alfa-client/apps/alfa-e2e/src/components/vorgang/vorgang-zusammenarbeit.e2e.component.ts b/alfa-client/apps/alfa-e2e/src/components/vorgang/vorgang-zusammenarbeit.e2e.component.ts
index 1ab522e98d..0a42bb6b43 100644
--- a/alfa-client/apps/alfa-e2e/src/components/vorgang/vorgang-zusammenarbeit.e2e.component.ts
+++ b/alfa-client/apps/alfa-e2e/src/components/vorgang/vorgang-zusammenarbeit.e2e.component.ts
@@ -3,8 +3,9 @@ import { contains, enterWith, haveValue } from '../../support/cypress.util';
 export class VorgangZusammenarbeitE2EComponent {
   private readonly anfrageButton: string = 'anfrage-erstellen-button';
   private readonly zustaendigeStelleButton: string = 'organisations-einheit-search-button';
+  private readonly externeStelleButton: string = 'externe-fachstelle-button';
   private readonly titelText: string = 'Titel-text-input';
-  private readonly messageText: string = 'Nachricht-textarea';
+  private readonly messageText: string = 'Beschreibung-textarea';
   private readonly sendButton: string = 'collaboration-request-submit-button';
   private readonly cancelButton: string = 'collaboration-request-cancel-button';
   private readonly searchText: string = 'instant_search-text-input';
@@ -26,10 +27,18 @@ export class VorgangZusammenarbeitE2EComponent {
     return cy.getTestElement(this.zustaendigeStelleButton);
   }
 
+  public getExterneStelleButton(): Cypress.Chainable<JQuery<HTMLElement>> {
+    return cy.getTestElement(this.externeStelleButton);
+  }
+
   public searchZustaendigeStelle(): void {
     this.getZustaendigeStelleButton().click();
   }
 
+  public searchExterneStelle(): void {
+    this.getExterneStelleButton().click();
+  }
+
   public getStelleTitel(): Cypress.Chainable<JQuery<HTMLElement>> {
     return cy.getTestElement(this.titelText);
   }
diff --git a/alfa-client/apps/alfa-e2e/src/e2e/main-tests/vorgang-zusammenarbeit/vorgang-zusammenarbeit-anfragen-extern.cy.ts b/alfa-client/apps/alfa-e2e/src/e2e/main-tests/vorgang-zusammenarbeit/vorgang-zusammenarbeit-anfragen-extern.cy.ts
new file mode 100644
index 0000000000..56569f985a
--- /dev/null
+++ b/alfa-client/apps/alfa-e2e/src/e2e/main-tests/vorgang-zusammenarbeit/vorgang-zusammenarbeit-anfragen-extern.cy.ts
@@ -0,0 +1,144 @@
+import { registerLocaleData } from '@angular/common';
+import localeDe from '@angular/common/locales/de';
+import localeDeExtra from '@angular/common/locales/extra/de';
+import { SnackBarE2EComponent } from 'apps/alfa-e2e/src/components/ui/snackbar.e2e.component';
+import { VorgangZusammenarbeitE2EComponent } from 'apps/alfa-e2e/src/components/vorgang/vorgang-zusammenarbeit.e2e.component';
+import { VorgangE2E, VorgangMessagesE2E, VorgangStatusE2E } from 'apps/alfa-e2e/src/model/vorgang';
+import 'cypress-real-events/support';
+import { VorgangListE2EComponent } from '../../../components/vorgang/vorgang-list.e2e.component';
+import { MainPage, waitForSpinnerToDisappear } from '../../../page-objects/main.po';
+import { VorgangPage } from '../../../page-objects/vorgang.po';
+import { dropCollections } from '../../../support/cypress-helper';
+import { contains, exist, notExist } from '../../../support/cypress.util';
+import { initUsermanagerUsers, loginAsSabine } from '../../../support/user-util';
+import { buildVorgang, initVorgaenge, objectIds } from '../../../support/vorgang-util';
+
+registerLocaleData(localeDe, 'de', localeDeExtra);
+
+describe('Vorgang Zusammenarbeit externe Stelle anfragen', () => {
+  const mainPage: MainPage = new MainPage();
+  const vorgangList: VorgangListE2EComponent = mainPage.getVorgangList();
+
+  const vorgangPage: VorgangPage = new VorgangPage();
+  const zusammenarbeitContainer: VorgangZusammenarbeitE2EComponent = vorgangPage.getZusammenarbeitContainer();
+
+  const zusammenarbeitVorgang: VorgangE2E = {
+    ...buildVorgang(objectIds[0], 'Zusammenarbeit extern Vorgang'),
+    status: VorgangStatusE2E.IN_BEARBEITUNG,
+  };
+
+  const titleText: string = 'Dies ist ein Test-Titel !"§$%&';
+  const messageText: string =
+    'Sehr geehrter Tester\n\n Dies ist ein !"§$%& Test\n zum Testen der Nachricht.\n\n\n\nhier sollte eine \nScrollbar\nangezeigt\nwerden!\n\nMfG!';
+  const stelleSearch1: string = 'k';
+  const stelleSearch2: string = 'Kiel';
+  const snackBar: SnackBarE2EComponent = mainPage.getSnackBar();
+
+  before(() => {
+    initVorgaenge([zusammenarbeitVorgang]);
+    initUsermanagerUsers();
+
+    loginAsSabine();
+
+    waitForSpinnerToDisappear();
+    exist(vorgangList.getRoot());
+  });
+
+  after(() => {
+    dropCollections();
+  });
+
+  describe('create new Anfrage', () => {
+    it('should show button for Zusammenarbeit', () => {
+      vorgangList.getListItem(zusammenarbeitVorgang.name).getRoot().click();
+      waitForSpinnerToDisappear();
+
+      exist(zusammenarbeitContainer.getAnfrageButton());
+    });
+
+    it('should show input elements on externe Anfrage click', () => {
+      zusammenarbeitContainer.createAnfrage(1);
+
+      exist(zusammenarbeitContainer.getExterneStelleButton());
+      exist(zusammenarbeitContainer.getStelleTitel());
+      exist(zusammenarbeitContainer.getMessageText());
+      exist(zusammenarbeitContainer.getSendButton());
+      exist(zusammenarbeitContainer.getCancelButton());
+    });
+
+    it('should close elements on Cancel click', () => {
+      zusammenarbeitContainer.cancelAnfrage();
+
+      notExist(zusammenarbeitContainer.getExterneStelleButton());
+      notExist(zusammenarbeitContainer.getStelleTitel());
+      notExist(zusammenarbeitContainer.getMessageText());
+      notExist(zusammenarbeitContainer.getSendButton());
+      notExist(zusammenarbeitContainer.getCancelButton());
+      exist(zusammenarbeitContainer.getAnfrageButton());
+    });
+
+    it('should open new search label for Zustaendige Stelle', () => {
+      zusammenarbeitContainer.createAnfrage(1);
+      zusammenarbeitContainer.searchExterneStelle();
+
+      exist(zusammenarbeitContainer.getCloseSearchButton());
+      exist(zusammenarbeitContainer.getSearchText());
+    });
+
+    it('should close layer on Cancel click', () => {
+      zusammenarbeitContainer.closeSearch();
+
+      notExist(zusammenarbeitContainer.getCloseSearchButton());
+      notExist(zusammenarbeitContainer.getSearchText());
+      exist(zusammenarbeitContainer.getExterneStelleButton());
+    });
+
+    it('should delete search term on clicking X', () => {
+      zusammenarbeitContainer.searchExterneStelle();
+      zusammenarbeitContainer.enterSearchInput(stelleSearch1);
+      zusammenarbeitContainer.clearSearch();
+
+      zusammenarbeitContainer.hasSearchText('');
+    });
+
+    it.skip('TODO: Setup Jenkins --- should find 2 results after entering kiel', () => {
+      zusammenarbeitContainer.enterSearchInput(stelleSearch2);
+
+      zusammenarbeitContainer.expectNumberOfEntriesToBe(2);
+    });
+
+    it.skip('should close layer after click on search entry', () => {
+      zusammenarbeitContainer.clickSearchEntry(0);
+
+      exist(zusammenarbeitContainer.getSendButton());
+      notExist(zusammenarbeitContainer.getSearchText());
+    });
+
+    it.skip('should show part of address in Zufi header', () => {
+      zusammenarbeitContainer.addressContains(stelleSearch2);
+    });
+
+    it.skip('should be able to enter title and message, and show scrollbar on long text', () => {
+      zusammenarbeitContainer.enterTitel(titleText);
+      zusammenarbeitContainer.enterMessage(messageText);
+
+      zusammenarbeitContainer.messageScrollbarIsPresent();
+    });
+
+    it.skip('should show title and message, show snackbar, and remove buttons after sending', () => {
+      zusammenarbeitContainer.sendAnfrage();
+
+      notExist(zusammenarbeitContainer.getSendButton());
+      notExist(zusammenarbeitContainer.getCancelButton());
+
+      zusammenarbeitContainer.anfrageResultContains(titleText);
+
+      //TODO: Zeilenumbrüche (OZG-6682)
+      //zusammenarbeitContainer.anfrageResultContains(messageText);
+
+      //TODO: Datum wird angezeigt (OZG-6675)
+
+      contains(snackBar.getMessage(), VorgangMessagesE2E.ZUARBEIT_ANGEFRAGT);
+    });
+  });
+});
diff --git a/alfa-client/apps/alfa-e2e/src/e2e/main-tests/vorgang-zusammenarbeit/vorgang-zusammenarbeit-anfragen.cy.ts b/alfa-client/apps/alfa-e2e/src/e2e/main-tests/vorgang-zusammenarbeit/vorgang-zusammenarbeit-anfragen-oeffentlich.cy.ts
similarity index 97%
rename from alfa-client/apps/alfa-e2e/src/e2e/main-tests/vorgang-zusammenarbeit/vorgang-zusammenarbeit-anfragen.cy.ts
rename to alfa-client/apps/alfa-e2e/src/e2e/main-tests/vorgang-zusammenarbeit/vorgang-zusammenarbeit-anfragen-oeffentlich.cy.ts
index 4805403d3a..6ff2d230d5 100644
--- a/alfa-client/apps/alfa-e2e/src/e2e/main-tests/vorgang-zusammenarbeit/vorgang-zusammenarbeit-anfragen.cy.ts
+++ b/alfa-client/apps/alfa-e2e/src/e2e/main-tests/vorgang-zusammenarbeit/vorgang-zusammenarbeit-anfragen-oeffentlich.cy.ts
@@ -15,7 +15,7 @@ import { buildVorgang, initVorgaenge, objectIds } from '../../../support/vorgang
 
 registerLocaleData(localeDe, 'de', localeDeExtra);
 
-describe('Vorgang Zusammenarbeit anfragen', () => {
+describe('Vorgang Zusammenarbeit öffentliche Stelle anfragen', () => {
   const mainPage: MainPage = new MainPage();
   const vorgangList: VorgangListE2EComponent = mainPage.getVorgangList();
 
@@ -56,7 +56,7 @@ describe('Vorgang Zusammenarbeit anfragen', () => {
       exist(zusammenarbeitContainer.getAnfrageButton());
     });
 
-    it('should show input elements on Anfrage click', () => {
+    it('should show input elements on öffentliche Anfrage click', () => {
       zusammenarbeitContainer.createAnfrage(0);
 
       exist(zusammenarbeitContainer.getZustaendigeStelleButton());
-- 
GitLab