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 @@
@@ -23,7 +35,14 @@
- + diff --git a/src/components/Ausweis/Ausweisart.svelte b/src/components/Ausweis/Ausweisart.svelte index 03d490e7..0481dace 100644 --- a/src/components/Ausweis/Ausweisart.svelte +++ b/src/components/Ausweis/Ausweisart.svelte @@ -5,15 +5,14 @@ import TagInput from "../TagInput.svelte"; import { writable } from "svelte/store"; import type { - BedarfsausweisWohnen, - GebaeudeStammdaten, + BedarfsausweisWohnen, VerbrauchsausweisGewerbe, - VerbrauchsausweisWohnen, } from "@ibcornelsen/database/client"; import { Enums } from "@ibcornelsen/database/client" + import { GebaeudeClient, VerbrauchsausweisWohnenClient } from "./types"; - export let gebaeude: GebaeudeStammdaten; - export let ausweis: VerbrauchsausweisWohnen | VerbrauchsausweisGewerbe | BedarfsausweisWohnen; + export let gebaeude: GebaeudeClient; + export let ausweis: VerbrauchsausweisWohnenClient | VerbrauchsausweisGewerbe | BedarfsausweisWohnen; $: baujahrHeizung = writable(gebaeude.baujahr_heizung || []); $: baujahr = writable(gebaeude.baujahr_gebaeude || []); @@ -66,7 +65,7 @@ className={auditHeizungGebaeudeBaujahr(gebaeude) ? "linked" : ""} - bind:tags={baujahrHeizung} + bind:tags={gebaeude.baujahr_heizung} /> @@ -101,7 +100,7 @@ className={auditHeizungGebaeudeBaujahr(gebaeude) ? "linked" : ""} - bind:tags={baujahr} + bind:tags={gebaeude.baujahr_gebaeude} /> diff --git a/src/components/Ausweis/BilderZusatzsysteme.svelte b/src/components/Ausweis/BilderZusatzsysteme.svelte index b4de3b23..68e99ce3 100644 --- a/src/components/Ausweis/BilderZusatzsysteme.svelte +++ b/src/components/Ausweis/BilderZusatzsysteme.svelte @@ -5,10 +5,12 @@ import DaemmungImage from "./DaemmungImage.svelte"; import FensterImage from "./FensterImage.svelte"; import Label from "../Label.svelte"; - import type { BedarfsausweisWohnen, GebaeudeStammdaten, VerbrauchsausweisGewerbe, VerbrauchsausweisWohnen } from "@ibcornelsen/database/client"; + import type { BedarfsausweisWohnen, VerbrauchsausweisGewerbe } from "@ibcornelsen/database/client"; + import { GebaeudeClient, UploadedGebaeudeBild, VerbrauchsausweisWohnenClient } from "./types"; - export let gebaeude: GebaeudeStammdaten; - export let ausweis: VerbrauchsausweisWohnen | VerbrauchsausweisGewerbe | BedarfsausweisWohnen; + export let gebaeude: GebaeudeClient; + export let ausweis: VerbrauchsausweisWohnenClient | VerbrauchsausweisGewerbe | BedarfsausweisWohnen; + export let images: UploadedGebaeudeBild[] @@ -27,7 +29,7 @@ EinzelöfenDurchlauferhitzerStandardkesselSolarsystem für WarmwasserWärmepumpeNiedertemperaturkesselBrennwertkesselWarmwasserrohre gedämmtHeizungsrohre gedämmtZirkulationRaumtemperaturregler - +
@@ -166,7 +168,7 @@ DoppelverglasungIsolierverglasungDreifachverglasungAlle Fenster dichtFenster teilweise undichtAlle Türen dichtTüren teilweise undichtRollladenkästen gedämmt, luftdicht - +
@@ -278,7 +280,7 @@ Kelleraußenwand gedämmtKellerdecke gedämmtDachgeschoss gedämmtOberste Geschossdecke gedämmtOberste Geschossdecke min. 12cm gedämmt - +
diff --git a/src/components/Ausweis/DaemmungImage.svelte b/src/components/Ausweis/DaemmungImage.svelte index 8d8c3700..47b5a996 100644 --- a/src/components/Ausweis/DaemmungImage.svelte +++ b/src/components/Ausweis/DaemmungImage.svelte @@ -1,9 +1,11 @@
@@ -56,6 +58,6 @@ Energieausweis!
Bitte laden Sie hier mind. 2 Bilder hoch:

- +
diff --git a/src/components/Ausweis/FensterImage.svelte b/src/components/Ausweis/FensterImage.svelte index 27445899..b20396b7 100644 --- a/src/components/Ausweis/FensterImage.svelte +++ b/src/components/Ausweis/FensterImage.svelte @@ -1,9 +1,11 @@
@@ -53,6 +55,6 @@ Energieausweis!
Bitte laden Sie hier mind. 1 Bild hoch:

- +
diff --git a/src/components/Ausweis/HeizungImage.svelte b/src/components/Ausweis/HeizungImage.svelte index 11916e4d..3460cde2 100644 --- a/src/components/Ausweis/HeizungImage.svelte +++ b/src/components/Ausweis/HeizungImage.svelte @@ -1,9 +1,11 @@
@@ -60,6 +62,6 @@ Ihrem Energieausweis!
Bitte laden Sie hier mind. 1 Bild hoch:

- +
diff --git a/src/components/Ausweis/PerformanceScore.svelte b/src/components/Ausweis/PerformanceScore.svelte index 67527e30..52fbfe81 100644 --- a/src/components/Ausweis/PerformanceScore.svelte +++ b/src/components/Ausweis/PerformanceScore.svelte @@ -1,9 +1,9 @@
- +
{#each images as image, i} -
- {image.name} - -
+ {#if image.kategorie == kategorie} +
+ {kategorie} + +
+ {/if} {/each}
diff --git a/src/components/Kaufabschluss/Kaufabschluss.svelte b/src/components/Kaufabschluss/Kaufabschluss.svelte index c2e3d76c..f4f1537b 100644 --- a/src/components/Kaufabschluss/Kaufabschluss.svelte +++ b/src/components/Kaufabschluss/Kaufabschluss.svelte @@ -14,7 +14,7 @@
-
+
diff --git a/src/components/ZIPSearch.svelte b/src/components/PlzSuche.svelte similarity index 100% rename from src/components/ZIPSearch.svelte rename to src/components/PlzSuche.svelte diff --git a/src/components/SidebarLeft.astro b/src/components/SidebarLeft.astro index 93e9fdc2..895690c8 100644 --- a/src/components/SidebarLeft.astro +++ b/src/components/SidebarLeft.astro @@ -2,13 +2,13 @@