Rollen Chunk 4: Benutzerkonto, Abmelde-Icon und fremde Einstellungen
This commit is contained in:
1 parent
a011ba564e
commit
34cb089406
1 file changed
+67
@@ -0,0 +1,67 @@
|
||||
import { fireEvent, render, screen } from "@testing-library/react";
|
||||
import { describe, expect, test, vi } from "vitest";
|
||||
import { ApiError } from "@/lib/api-client";
|
||||
import { AccountSection } from "./AccountSection";
|
||||
|
||||
vi.mock("@/lib/auth-client", () => ({
|
||||
changePassword: vi.fn(),
|
||||
changeEmail: vi.fn(),
|
||||
}));
|
||||
|
||||
describe("AccountSection", () => {
|
||||
test("wechselt das Passwort und meldet Erfolg", async () => {
|
||||
const { changePassword } = await import("@/lib/auth-client");
|
||||
vi.mocked(changePassword).mockResolvedValue({ status: true });
|
||||
render(<AccountSection email="alt@example.org" />);
|
||||
fireEvent.change(screen.getByLabelText(/Aktuelles Passwort/), {
|
||||
target: { value: "alt-geheim!" },
|
||||
});
|
||||
fireEvent.change(screen.getByLabelText(/Neues Passwort/), {
|
||||
target: { value: "neu-geheim-1!" },
|
||||
});
|
||||
fireEvent.click(screen.getByRole("button", { name: "Passwort ändern" }));
|
||||
await vi.waitFor(() => {
|
||||
expect(changePassword).toHaveBeenCalledWith(
|
||||
"alt-geheim!",
|
||||
"neu-geheim-1!",
|
||||
);
|
||||
});
|
||||
expect(
|
||||
await screen.findByText("Passwort geändert."),
|
||||
).toBeInTheDocument();
|
||||
});
|
||||
|
||||
test("zeigt falsches aktuelles Passwort deutsch an", async () => {
|
||||
const { changePassword } = await import("@/lib/auth-client");
|
||||
vi.mocked(changePassword).mockRejectedValue(
|
||||
new ApiError("Invalid password", "INVALID_PASSWORD", 400),
|
||||
);
|
||||
render(<AccountSection email="alt@example.org" />);
|
||||
fireEvent.change(screen.getByLabelText(/Aktuelles Passwort/), {
|
||||
target: { value: "falsch" },
|
||||
});
|
||||
fireEvent.change(screen.getByLabelText(/Neues Passwort/), {
|
||||
target: { value: "neu-geheim-1!" },
|
||||
});
|
||||
fireEvent.click(screen.getByRole("button", { name: "Passwort ändern" }));
|
||||
expect(await screen.findByRole("alert")).toHaveTextContent(
|
||||
"Aktuelles Passwort falsch.",
|
||||
);
|
||||
});
|
||||
|
||||
test("wechselt die E-Mail sofort", async () => {
|
||||
const { changeEmail } = await import("@/lib/auth-client");
|
||||
vi.mocked(changeEmail).mockResolvedValue({ status: true });
|
||||
render(<AccountSection email="alt@example.org" onEmailChanged={() => {}} />);
|
||||
fireEvent.change(screen.getByLabelText(/Neue E-Mail/), {
|
||||
target: { value: "neu@example.org" },
|
||||
});
|
||||
fireEvent.click(screen.getByRole("button", { name: "E-Mail ändern" }));
|
||||
await vi.waitFor(() => {
|
||||
expect(changeEmail).toHaveBeenCalledWith("neu@example.org");
|
||||
});
|
||||
expect(
|
||||
await screen.findByText("E-Mail geändert."),
|
||||
).toBeInTheDocument();
|
||||
});
|
||||
});
|
||||
Reference in new issue
Block a user