import { API_ACCESS_TOKEN_COOKIE_NAME, API_REFRESH_TOKEN_COOKIE_NAME } from "#lib/constants.js";
import {faker} from "@faker-js/faker";

describe('Benutzer Registrierung', () => {
	// Wir generieren uns einen zufälligen Nutzer
	const email = faker.internet.email()
	const password = faker.internet.password()
	const name = faker.person.firstName()
	const surname = faker.person.lastName()

	it("erstellt einen Nutzer und leitet auf die Login Seite weiter", () => {
		cy.visit("/auth/signup")

		cy.wait(1000)

		cy.get('input[name="email"]').type(email)
		cy.get('input[name="passwort"]').type(password)
		cy.get('input[name="vorname"]').type(name)
		cy.get('input[name="name"]').type(surname)

		cy.get('button[type="submit"]').click()

		cy.url().should("include", "/auth/login")
	})

	it("meldet einen Nutzer an und leitet auf die Startseite weiter", () => {
		cy.visit("/auth/login")

		cy.wait(1000)

		cy.get('input[name="email"]').type(email)
		cy.get('input[name="passwort"]').type(password)

		cy.get('button[type="submit"]').click()

		cy.url().should("include", "/dashboard")

		// Wir sollten nun einen Access Token und Refresh Token in unseren Cookies sehen.
		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", "/")
	})
})