diff --git a/.astro-i18n/generated.d.ts b/.astro-i18n/generated.d.ts index 52bf1762..ec53c8f8 100644 --- a/.astro-i18n/generated.d.ts +++ b/.astro-i18n/generated.d.ts @@ -1,8 +1,8 @@ type DefaultLangCode = "de" type SupportedLangCode = "en" | "fr" type LangCode = DefaultLangCode | SupportedLangCode -type RouteUri = | "/bedarfsausweis" | "/velopers" | "/faq" | "/pdf/ansichtsausweis" | "/pdf/datenblatt" | "/user" | "/verbrauchsausweis/erstellen" | "/verbrauchsausweis" | "/verbrauchsausweis-gewerbe" | "/" | "/kaufabschluss" | "/kundendaten" | "/login" | "/logout" | "/signup" -type RouteParams = {"/bedarfsausweis": undefined; "/velopers": undefined; "/faq": undefined; "/pdf/ansichtsausweis": undefined; "/pdf/datenblatt": undefined; "/user": undefined; "/verbrauchsausweis/erstellen": undefined; "/verbrauchsausweis": undefined; "/verbrauchsausweis-gewerbe": undefined; "/": undefined; "/kaufabschluss": undefined; "/kundendaten": undefined; "/login": undefined; "/logout": undefined; "/signup": undefined; } +type RouteUri = | "/bedarfsausweis" | "/velopers" | "/faq" | "/pdf/ansichtsausweis" | "/pdf/datenblatt" | "/user" | "/energieausweis-erstellen/verbrauchsausweis-wohnenerstellen" | "/energieausweis-erstellen/verbrauchsausweis-wohnen" | "/energieausweis-erstellen/verbrauchsausweis-wohnen-gewerbe" | "/" | "/kaufabschluss" | "/kundendaten" | "/login" | "/logout" | "/signup" +type RouteParams = {"/bedarfsausweis": undefined; "/velopers": undefined; "/faq": undefined; "/pdf/ansichtsausweis": undefined; "/pdf/datenblatt": undefined; "/user": undefined; "/energieausweis-erstellen/verbrauchsausweis-wohnenerstellen": undefined; "/energieausweis-erstellen/verbrauchsausweis-wohnen": undefined; "/energieausweis-erstellen/verbrauchsausweis-wohnen-gewerbe": undefined; "/": undefined; "/kaufabschluss": undefined; "/kundendaten": undefined; "/login": undefined; "/logout": undefined; "/signup": undefined; } type TranslationPath = "header.profil" | "header.kontakt" | "header.login" type TranslationOptions = { "header.profil": {} | undefined; "header.kontakt": {} | undefined; "header.login": {} | undefined; } diff --git a/cypress/e2e/VerbrauchsausweisGewerbe/erstellen.cy.ts b/cypress/e2e/VerbrauchsausweisGewerbe/erstellen.cy.ts new file mode 100644 index 00000000..851884d0 --- /dev/null +++ b/cypress/e2e/VerbrauchsausweisGewerbe/erstellen.cy.ts @@ -0,0 +1,272 @@ +import fuelList from "#components/Ausweis/brennstoffListe"; +import { faker } from "@faker-js/faker"; +import { Enums } from "@ibcornelsen/database/client"; +import "cypress-file-upload" + +describe("Verbrauchsausweis erstellen Schritt 1", () => { + it("erstellt einen neuen Verbrauchsausweis Wohngebäude.", () => { + cy.visit("/energieausweis-erstellen/verbrauchsausweis-gewerbe"); + + cy.wait(1000); + + // Wir überprüfen, ob alle Ausstelgründe vorhanden sind, diese sollten genau so viele sein wie in der Datenbank vorhanden sind. + cy.get("input[name='ausstellgrund']") + .should("have.length", Object.values(Enums.Ausstellgrund).length) + .eq( + faker.number.int({ + min: 0, + max: Object.values(Enums.Ausstellgrund).length - 1, + }) + ) + .check(); + + // Jetzt Füllen wir das Baujahr vom Gebäude aus. + cy.get("input[name='baujahr_gebaeude']") + .should("have.attr", "type", "number") + .type( + faker.number.int({ min: 1900, max: 2021 }).toString() + + "{enter}", + { delay: 50 } + ); + + // Jetzt Füllen wir das Baujahr der Heizung aus. + cy.get("input[name='baujahr_heizung']") + .should("have.attr", "type", "number") + .type( + faker.number.int({ min: 1900, max: 2021 }).toString() + + "{enter}", + { delay: 50 } + ); + + // Anzahl Einheiten + cy.get("input[name='einheiten']") + .should("have.attr", "type", "number") + .type(faker.number.int({ min: 1, max: 5 }).toString()); + + // Sanierungsstatus + cy.get("select[name='saniert']").select( + Math.random() > 0.5 ? "true" : "false" + ); + + // Adresse + cy.get("input[name='adresse']").type(faker.location.streetAddress()); + + // Postleitzahl + cy.get("input[name='plz']").type( + faker.location.zipCode({ + format: "#####", + }) + ); + + // TODO: Ort - Dieser wird aus der Datenbank abgefragt, wir müssen also warten, bis der Dropdown da ist. + + // Flaeche + cy.get("input[name='flaeche']") + .should("have.attr", "type", "number") + .type(faker.number.int({ min: 50, max: 1000 }).toString()); + + // Keller + cy.get("select[name='keller']").find("option:not([disabled])").should("have.length", Object.values(Enums.Heizungsstatus).length).parent().select(faker.number.int({ + max: Object.values(Enums.Heizungsstatus).length, + min: 1 + })); + + // Dachgeschoss + cy.get("select[name='dachgeschoss']").find("option:not([disabled])").should("have.length", Object.values(Enums.Heizungsstatus).length).parent().select(faker.number.int({ + max: Object.values(Enums.Heizungsstatus).length, + min: 1 + })); + + // Brennstoff und Einheit 1 + const brennstoffKombo = fuelList[faker.number.int({ min: 0, max: fuelList.length - 1 })]; + + cy.get("select[name='brennstoff_1']").select(brennstoffKombo[0]); + cy.get("select[name='einheit_1']").select(brennstoffKombo[1]); + + // Verbrauchszeitraum + cy.get("select[name='energieverbrauch_zeitraum_monat']").select(faker.number.int({ min: 1, max: 12 }).toString()); + cy.get("select[name='energieverbrauch_zeitraum_jahr']").select(faker.number.int({ min: 2018, max: 2019 }).toString()); + + // Verbrauch + cy.get("input[name='verbrauch_1']").type(faker.number.int({ min: 4000, max: 15000 }).toString()); + cy.get("input[name='verbrauch_2']").type(faker.number.int({ min: 4000, max: 15000 }).toString()); + cy.get("input[name='verbrauch_3']").type(faker.number.int({ min: 4000, max: 15000 }).toString()); + + + const zusaetzlicheHeizquelle = Math.random() > 0.5; + + if (zusaetzlicheHeizquelle) { + cy.get("input[name='zusaetzliche_heizquelle']").check(); + + // Brennstoff und Einheit 2 + const brennstoffKombo2 = fuelList[faker.number.int({ min: 0, max: fuelList.length - 1 })]; + + cy.get("select[name='brennstoff_2']").select(brennstoffKombo2[0]); + cy.get("select[name='einheit_2']").select(brennstoffKombo2[1]); + + // Verbrauch + cy.get("input[name='verbrauch_4']").type(faker.number.int({ min: 4000, max: 15000 }).toString()); + cy.get("input[name='verbrauch_5']").type(faker.number.int({ min: 4000, max: 15000 }).toString()); + cy.get("input[name='verbrauch_6']").type(faker.number.int({ min: 4000, max: 15000 }).toString()); + } + + // Gebäudestrom + cy.get("input[name='strom_1']").type(faker.number.int({ min: 4000, max: 15000 }).toString()); + cy.get("input[name='strom_2']").type(faker.number.int({ min: 4000, max: 15000 }).toString()); + cy.get("input[name='strom_3']").type(faker.number.int({ min: 4000, max: 15000 }).toString()); + + // Stromverbrauch Enthält + if (Math.random() > 0.5) cy.get("input[name='stromverbrauch_enthaelt_heizung']").check(); + if (Math.random() > 0.5) cy.get("input[name='stromverbrauch_enthaelt_warmwasser']").check(); + if (Math.random() > 0.5) cy.get("input[name='stromverbrauch_enthaelt_lueftung']").check(); + if (Math.random() > 0.5) cy.get("input[name='stromverbrauch_enthaelt_beleuchtung']").check(); + if (Math.random() > 0.5) cy.get("input[name='stromverbrauch_enthaelt_kuehlung']").check(); + + // Warmwasser enthalten und bekannt + const warmwasserEnthalten = Math.random() > 0.5; + const anteilBekannt = Math.random() > 0.5; + + if (warmwasserEnthalten) { + cy.get("input[name='warmwasser_enthalten']").check(); + + if (anteilBekannt) { + // Der Anteil ist bekannt, wir müssen ihn also angeben. + cy.get("input[name='warmwasser_anteil_bekannt']").check(); + + cy.get("input[name='anteil_warmwasser_1']").type(faker.number.int({ min: 0, max: 50 }).toString()); + + if (zusaetzlicheHeizquelle) { + // Zusätzliche Heizquelle existiert, also müssen wir auch hier den Anteil angeben. + cy.get("input[name='anteil_warmwasser_1']").type(faker.number.int({ min: 0, max: 50 }).toString()); + } + } + } + + // Thermische Kühlung enthalten + const kuehlungEnthalten = Math.random() > 0.5; + + if (kuehlungEnthalten) { + cy.get("input[name='kuehlung_enthalten']").check(); + + cy.get("input[name='anteil_kuehlung_1']").type(faker.number.int({ min: 0, max: 50 }).toString()); + + if (zusaetzlicheHeizquelle) { + // Zusätzliche Heizquelle existiert, also müssen wir auch hier den Anteil angeben. + cy.get("input[name='anteil_kuehlung_2']").type(faker.number.int({ min: 0, max: 50 }).toString()); + } + } + + // Alternative Energieversorgungssysteme + if (Math.random() > 0.5) cy.get("input[name='alternative_heizung']").check(); + if (Math.random() > 0.5) cy.get("input[name='alternative_warmwasser']").check(); + if (Math.random() > 0.5) cy.get("input[name='alternative_lueftung']").check(); + if (Math.random() > 0.5) cy.get("input[name='alternative_kuehlung']").check(); + + // Gebäudetyp + cy.get("select[name='gebaeudetyp']").then(($dropdown) => { + const options = $dropdown.find('option'); + // Select the option at the random index + cy.get("select[name='gebaeudetyp']").select(options.eq(faker.number.int({ min: 1, max: options.length - 1 })).val() as string); + }); + + // Gebäudeteil + cy.get("select[name='gebaeudeteil']").then(($dropdown) => { + const options = $dropdown.find('option'); + // Select the option at the random index + cy.get("select[name='gebaeudeteil']").select(options.eq(faker.number.int({ min: 1, max: options.length - 1 })).val() as string); + }); + + // Lüftung + cy.get("select[name='lueftung']").then(($dropdown) => { + const options = $dropdown.find('option'); + // Select the option at the random index + cy.get("select[name='lueftung']").select(options.eq(faker.number.int({ min: 1, max: options.length - 1 })).val() as string); + }); + + // Kühlung + cy.get("select[name='kuehlung']").then(($dropdown) => { + const options = $dropdown.find('option'); + // Select the option at the random index + cy.get("select[name='kuehlung']").select(options.eq(faker.number.int({ min: 1, max: options.length - 1 })).val() as string); + }); + + // Leerstand + cy.get("input[name='leerstand']").should("have.attr", "type", "number").type(faker.number.int({ min: 0, max: 30 }).toString()); + + // Heizungsanlage Daten + if (Math.random() > 0.5) cy.get("input[name='zentralheizung']").check(); + if (Math.random() > 0.5) cy.get("input[name='einzelofen']").check(); + if (Math.random() > 0.5) cy.get("input[name='durchlauf_erhitzer']").check(); + if (Math.random() > 0.5) cy.get("input[name='standard_kessel']").check(); + if (Math.random() > 0.5) cy.get("input[name='solarsystem_warmwasser']").check(); + if (Math.random() > 0.5) cy.get("input[name='waermepumpe']").check(); + if (Math.random() > 0.5) cy.get("input[name='niedertemperatur_kessel']").check(); + if (Math.random() > 0.5) cy.get("input[name='brennwert_kessel']").check(); + if (Math.random() > 0.5) cy.get("input[name='warmwasser_rohre_gedaemmt']").check(); + if (Math.random() > 0.5) cy.get("input[name='heizungsrohre_gedaemmt']").check(); + if (Math.random() > 0.5) cy.get("input[name='zirkulation']").check(); + if (Math.random() > 0.5) cy.get("input[name='raum_temperatur_regler']").check(); + + // Heizungsanlage Bilder + cy.get("input[name='heizung_image']").should("have.attr", "type", "file").attachFile("images/heizungsanlage/1.jpeg", { subjectType: "input" }); + cy.get("input[name='heizung_image']").should("have.attr", "type", "file").attachFile("images/heizungsanlage/2.jpeg", { subjectType: "input" }); + + // Fenster Daten + if (Math.random() > 0.5) cy.get("input[name='einfach_verglasung']").check(); + if (Math.random() > 0.5) cy.get("input[name='doppel_verglasung']").check(); + if (Math.random() > 0.5) cy.get("input[name='isolier_verglasung']").check(); + if (Math.random() > 0.5) cy.get("input[name='dreifach_verglasung']").check(); + if (Math.random() > 0.5) cy.get("input[name='fenster_dicht']").check(); + if (Math.random() > 0.5) cy.get("input[name='fenster_teilweise_undicht']").check(); + if (Math.random() > 0.5) cy.get("input[name='tueren_dicht']").check(); + if (Math.random() > 0.5) cy.get("input[name='tueren_undicht']").check(); + if (Math.random() > 0.5) cy.get("input[name='rolllaeden_kaesten_gedaemmt']").check(); + + // Fenster Bilder + cy.get("input[name='fenster_image']").should("have.attr", "type", "file").attachFile("images/fenster/1.jpeg", { subjectType: "input" }); + cy.get("input[name='fenster_image']").should("have.attr", "type", "file").attachFile("images/fenster/2.jpeg", { subjectType: "input" }); + + // Wärmedämmung Daten + if (Math.random() > 0.5) cy.get("input[name='aussenwand_gedaemmt']").check(); + if (Math.random() > 0.5) cy.get("input[name='keller_wand_gedaemmt']").check(); + if (Math.random() > 0.5) cy.get("input[name='keller_decke_gedaemmt']").check(); + if (Math.random() > 0.5) cy.get("input[name='dachgeschoss_gedaemmt']").check(); + if (Math.random() > 0.5) cy.get("input[name='oberste_geschossdecke_gedaemmt']").check(); + if (Math.random() > 0.5) cy.get("input[name='oberste_geschossdecke_min_12cm_gedaemmt']").check(); + + // Wärmedämmung Bilder + cy.get("input[name='daemmung_image']").should("have.attr", "type", "file").attachFile("images/daemmung/1.jpeg", { subjectType: "input" }); + cy.get("input[name='daemmung_image']").should("have.attr", "type", "file").attachFile("images/daemmung/2.jpeg", { subjectType: "input" }); + + // Gebäude Bild + cy.get("input[name='gebaeude_image']").should("have.attr", "type", "file").attachFile("images/gebaeude/1.jpeg", { subjectType: "input" }); + + // Jetzt können wir den Verbrauchsausweis erstellen. + cy.get("form[name='ausweis'] button[type='submit']").click({ force: true }); + + // Wir sind nicht eingeloggt also sollte jetzt ein Login Screen erscheinen. + // Wir klicken auf registrieren und erstellen einen neuen Benutzer, danach loggen wir uns mit diesem ein. + cy.get("button[name='registrieren']").click(); + + const email = faker.internet.email(); + const passwort = faker.internet.password(); + const vorname = faker.person.firstName(); + const nachname = faker.person.lastName(); + + cy.get("form[name='signup'] input[name='email']").should("be.visible").should("have.attr", "type", "email").type(email); + cy.get("form[name='signup'] input[name='passwort']").should("be.visible").should("have.attr", "type", "password").type(passwort); + cy.get("form[name='signup'] input[name='vorname']").should("be.visible").should("have.attr", "type", "text").type(vorname); + cy.get("form[name='signup'] input[name='nachname']").should("be.visible").should("have.attr", "type", "text").type(nachname); + + cy.get("form[name='signup'] button[type='submit']").click(); + + // Wir sind jetzt registriert und können uns nun einloggen. + // Die Email sollte automatisch eingetragen sein, da wir uns gerade registriert haben. + cy.get("form[name='login'] input[name='email']").should("be.visible").should("have.attr", "type", "email").should("contain.value", email); + cy.get("form[name='login'] input[name='passwort']").should("be.visible").should("have.attr", "type", "password").type(passwort); + + cy.get("form[name='login'] button[type='submit']").click(); + + // Der Ausweis sollte jetzt schon erstellt worden sein. + }); +}); diff --git a/cypress/e2e/VerbrauchsausweisWohnen/erstellen.cy.ts b/cypress/e2e/VerbrauchsausweisWohnen/erstellen.cy.ts index 7252d70c..f7425691 100644 --- a/cypress/e2e/VerbrauchsausweisWohnen/erstellen.cy.ts +++ b/cypress/e2e/VerbrauchsausweisWohnen/erstellen.cy.ts @@ -1,10 +1,11 @@ -import fuelList from "#components/Ausweis/fuelList"; +import fuelList from "#components/Ausweis/brennstoffListe"; import { faker } from "@faker-js/faker"; import { Enums } from "@ibcornelsen/database/client"; +import "cypress-file-upload" describe("Verbrauchsausweis erstellen Schritt 1", () => { it("erstellt einen neuen Verbrauchsausweis Wohngebäude.", () => { - cy.visit("/verbrauchsausweis"); + cy.visit("/energieausweis-erstellen/verbrauchsausweis-wohnen"); cy.wait(1000); @@ -108,5 +109,138 @@ describe("Verbrauchsausweis erstellen Schritt 1", () => { cy.get("input[name='verbrauch_5']").type(faker.number.int({ min: 4000, max: 15000 }).toString()); cy.get("input[name='verbrauch_6']").type(faker.number.int({ min: 4000, max: 15000 }).toString()); } - }); + + // Warmwasser enthalten und bekannt + const warmwasserEnthalten = Math.random() > 0.5; + const anteilBekannt = Math.random() > 0.5; + + if (warmwasserEnthalten) { + cy.get("input[name='warmwasser_enthalten']").check(); + + if (anteilBekannt) { + // Der Anteil ist bekannt, wir müssen ihn also angeben. + cy.get("input[name='warmwasser_anteil_bekannt']").check(); + + cy.get("input[name='anteil_warmwasser_1']").type(faker.number.int({ min: 0, max: 50 }).toString()); + + if (zusaetzlicheHeizquelle) { + // Zusätzliche Heizquelle existiert, also müssen wir auch hier den Anteil angeben. + cy.get("input[name='anteil_warmwasser_2']").type(faker.number.int({ min: 0, max: 50 }).toString()); + } + } + } + + // Alternative Energieversorgungssysteme + if (Math.random() > 0.5) cy.get("input[name='alternative_heizung']").check(); + if (Math.random() > 0.5) cy.get("input[name='alternative_warmwasser']").check(); + if (Math.random() > 0.5) cy.get("input[name='alternative_lueftung']").check(); + if (Math.random() > 0.5) cy.get("input[name='alternative_kuehlung']").check(); + + // Gebäudetyp + cy.get("select[name='gebaeudetyp']").then(($dropdown) => { + const options = $dropdown.find('option'); + // Select the option at the random index + cy.get("select[name='gebaeudetyp']").select(options.eq(faker.number.int({ min: 1, max: options.length - 1 })).val() as string); + }); + + // Gebäudeteil + cy.get("select[name='gebaeudeteil']").then(($dropdown) => { + const options = $dropdown.find('option'); + // Select the option at the random index + cy.get("select[name='gebaeudeteil']").select(options.eq(faker.number.int({ min: 1, max: options.length - 1 })).val() as string); + }); + + // Lüftung + cy.get("select[name='lueftung']").then(($dropdown) => { + const options = $dropdown.find('option'); + // Select the option at the random index + cy.get("select[name='lueftung']").select(options.eq(faker.number.int({ min: 1, max: options.length - 1 })).val() as string); + }); + + // Kühlung + cy.get("select[name='kuehlung']").then(($dropdown) => { + const options = $dropdown.find('option'); + // Select the option at the random index + cy.get("select[name='kuehlung']").select(options.eq(faker.number.int({ min: 1, max: options.length - 1 })).val() as string); + }); + + // Leerstand + cy.get("input[name='leerstand']").should("have.attr", "type", "number").type(faker.number.int({ min: 0, max: 30 }).toString()); + + // Heizungsanlage Daten + if (Math.random() > 0.5) cy.get("input[name='zentralheizung']").check(); + if (Math.random() > 0.5) cy.get("input[name='einzelofen']").check(); + if (Math.random() > 0.5) cy.get("input[name='durchlauf_erhitzer']").check(); + if (Math.random() > 0.5) cy.get("input[name='standard_kessel']").check(); + if (Math.random() > 0.5) cy.get("input[name='solarsystem_warmwasser']").check(); + if (Math.random() > 0.5) cy.get("input[name='waermepumpe']").check(); + if (Math.random() > 0.5) cy.get("input[name='niedertemperatur_kessel']").check(); + if (Math.random() > 0.5) cy.get("input[name='brennwert_kessel']").check(); + if (Math.random() > 0.5) cy.get("input[name='warmwasser_rohre_gedaemmt']").check(); + if (Math.random() > 0.5) cy.get("input[name='heizungsrohre_gedaemmt']").check(); + if (Math.random() > 0.5) cy.get("input[name='zirkulation']").check(); + if (Math.random() > 0.5) cy.get("input[name='raum_temperatur_regler']").check(); + + // Heizungsanlage Bilder + cy.get("input[name='heizung_image']").should("have.attr", "type", "file").attachFile("images/heizungsanlage/1.jpeg", { subjectType: "input" }); + cy.get("input[name='heizung_image']").should("have.attr", "type", "file").attachFile("images/heizungsanlage/2.jpeg", { subjectType: "input" }); + + // Fenster Daten + if (Math.random() > 0.5) cy.get("input[name='einfach_verglasung']").check(); + if (Math.random() > 0.5) cy.get("input[name='doppel_verglasung']").check(); + if (Math.random() > 0.5) cy.get("input[name='isolier_verglasung']").check(); + if (Math.random() > 0.5) cy.get("input[name='dreifach_verglasung']").check(); + if (Math.random() > 0.5) cy.get("input[name='fenster_dicht']").check(); + if (Math.random() > 0.5) cy.get("input[name='fenster_teilweise_undicht']").check(); + if (Math.random() > 0.5) cy.get("input[name='tueren_dicht']").check(); + if (Math.random() > 0.5) cy.get("input[name='tueren_undicht']").check(); + if (Math.random() > 0.5) cy.get("input[name='rolllaeden_kaesten_gedaemmt']").check(); + + // Fenster Bilder + cy.get("input[name='fenster_image']").should("have.attr", "type", "file").attachFile("images/fenster/1.jpeg", { subjectType: "input" }); + cy.get("input[name='fenster_image']").should("have.attr", "type", "file").attachFile("images/fenster/2.jpeg", { subjectType: "input" }); + + // Wärmedämmung Daten + if (Math.random() > 0.5) cy.get("input[name='aussenwand_gedaemmt']").check(); + if (Math.random() > 0.5) cy.get("input[name='keller_wand_gedaemmt']").check(); + if (Math.random() > 0.5) cy.get("input[name='keller_decke_gedaemmt']").check(); + if (Math.random() > 0.5) cy.get("input[name='dachgeschoss_gedaemmt']").check(); + if (Math.random() > 0.5) cy.get("input[name='oberste_geschossdecke_gedaemmt']").check(); + if (Math.random() > 0.5) cy.get("input[name='oberste_geschossdecke_min_12cm_gedaemmt']").check(); + + // Wärmedämmung Bilder + cy.get("input[name='daemmung_image']").should("have.attr", "type", "file").attachFile("images/daemmung/1.jpeg", { subjectType: "input" }); + cy.get("input[name='daemmung_image']").should("have.attr", "type", "file").attachFile("images/daemmung/2.jpeg", { subjectType: "input" }); + + // Gebäude Bild + cy.get("input[name='gebaeude_image']").should("have.attr", "type", "file").attachFile("images/gebaeude/1.jpeg", { subjectType: "input" }); + + // Jetzt können wir den Verbrauchsausweis erstellen. + cy.get("form[name='ausweis'] button[type='submit']").click({ force: true }); + + // Wir sind nicht eingeloggt also sollte jetzt ein Login Screen erscheinen. + // Wir klicken auf registrieren und erstellen einen neuen Benutzer, danach loggen wir uns mit diesem ein. + cy.get("button[name='registrieren']").click(); + + const email = faker.internet.email(); + const passwort = faker.internet.password(); + const vorname = faker.person.firstName(); + const nachname = faker.person.lastName(); + + cy.get("form[name='signup'] input[name='email']").should("be.visible").should("have.attr", "type", "email").type(email); + cy.get("form[name='signup'] input[name='passwort']").should("be.visible").should("have.attr", "type", "password").type(passwort); + cy.get("form[name='signup'] input[name='vorname']").should("be.visible").should("have.attr", "type", "text").type(vorname); + cy.get("form[name='signup'] input[name='nachname']").should("be.visible").should("have.attr", "type", "text").type(nachname); + + cy.get("form[name='signup'] button[type='submit']").click(); + + // Wir sind jetzt registriert und können uns nun einloggen. + // Die Email sollte automatisch eingetragen sein, da wir uns gerade registriert haben. + cy.get("form[name='login'] input[name='email']").should("be.visible").should("have.attr", "type", "email").should("contain.value", email); + cy.get("form[name='login'] input[name='passwort']").should("be.visible").should("have.attr", "type", "password").type(passwort); + + cy.get("form[name='login'] button[type='submit']").click(); + + // Der Ausweis sollte jetzt schon erstellt worden sein. + }); }); diff --git a/cypress/e2e/auth/index.cy.ts b/cypress/e2e/auth/index.cy.ts index a0bd34f2..de54b95d 100644 --- a/cypress/e2e/auth/index.cy.ts +++ b/cypress/e2e/auth/index.cy.ts @@ -35,4 +35,10 @@ describe('Benutzer Authentifizierung', () => { cy.getCookie(API_ACCESS_TOKEN_COOKIE_NAME).should("exist") cy.getCookie(API_REFRESH_TOKEN_COOKIE_NAME).should("exist") }) + + it("meldet einen Nutzer ab und leitet auf die Login Seite weiter", () => { + cy.visit("/auth/logout") + + cy.url().should("include", "/auth/login") + }) }) \ No newline at end of file diff --git a/cypress/fixtures/images/daemmung/1.jpeg b/cypress/fixtures/images/daemmung/1.jpeg new file mode 100644 index 00000000..f3e970db Binary files /dev/null and b/cypress/fixtures/images/daemmung/1.jpeg differ diff --git a/cypress/fixtures/images/daemmung/2.jpeg b/cypress/fixtures/images/daemmung/2.jpeg new file mode 100644 index 00000000..8cefbf92 Binary files /dev/null and b/cypress/fixtures/images/daemmung/2.jpeg differ diff --git a/cypress/fixtures/images/fenster/1.jpeg b/cypress/fixtures/images/fenster/1.jpeg new file mode 100644 index 00000000..3da228ca Binary files /dev/null and b/cypress/fixtures/images/fenster/1.jpeg differ diff --git a/cypress/fixtures/images/fenster/2.jpeg b/cypress/fixtures/images/fenster/2.jpeg new file mode 100644 index 00000000..96aac8b9 Binary files /dev/null and b/cypress/fixtures/images/fenster/2.jpeg differ diff --git a/cypress/fixtures/images/gebaeude/1.jpeg b/cypress/fixtures/images/gebaeude/1.jpeg new file mode 100644 index 00000000..c506016e Binary files /dev/null and b/cypress/fixtures/images/gebaeude/1.jpeg differ diff --git a/cypress/fixtures/images/heizungsanlage/1.jpeg b/cypress/fixtures/images/heizungsanlage/1.jpeg new file mode 100644 index 00000000..fa0b4958 Binary files /dev/null and b/cypress/fixtures/images/heizungsanlage/1.jpeg differ diff --git a/cypress/fixtures/images/heizungsanlage/2.jpeg b/cypress/fixtures/images/heizungsanlage/2.jpeg new file mode 100644 index 00000000..57d6d3e4 Binary files /dev/null and b/cypress/fixtures/images/heizungsanlage/2.jpeg differ diff --git a/docker-compose.yml b/docker-compose.yml index e8db76cb..874d32b6 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -14,7 +14,7 @@ services: - ./node_modules/@ibcornelsen/ui:/online-energieausweis/node_modules/@ibcornelsen/ui - ./node_modules/@ibcornelsen/database:/online-energieausweis/node_modules/@ibcornelsen/database - ./node_modules/@ibcornelsen/api:/online-energieausweis/node_modules/@ibcornelsen/api - - ./persistent:/persistent + - ../api/persistent:/persistent ibcornelsen-api: extends: file: ../api/docker-compose.yml diff --git a/package.json b/package.json index a2d2e244..0efb7660 100644 --- a/package.json +++ b/package.json @@ -64,7 +64,9 @@ "@types/uuid": "^9.0.1", "@typescript-eslint/eslint-plugin": "^5.59.6", "@typescript-eslint/parser": "^5.59.6", + "bun-types": "^1.0.22", "cypress": "^13.6.2", + "cypress-file-upload": "^5.0.8", "eslint": "~8.15.0", "eslint-config-prettier": "8.1.0", "prettier": "^2.8.8", diff --git a/src/components/AnsichtsausweisButton.svelte b/src/components/AnsichtsausweisButton.svelte index c2a3c57a..e74dd735 100644 --- a/src/components/AnsichtsausweisButton.svelte +++ b/src/components/AnsichtsausweisButton.svelte @@ -1,9 +1,10 @@