Skip to content

Commit 7a05cf3

Browse files
committed
test(frontend): fix authentication mock path in register side extended test
1 parent 1f9a764 commit 7a05cf3

2 files changed

Lines changed: 30 additions & 5 deletions

File tree

frontend/tests/unit/components/login/RegisterSide.extended.test.tsx

Lines changed: 27 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -28,9 +28,23 @@ vi.mock("react-phone-number-input", () => ({
2828
),
2929
}));
3030

31+
// Mock estável do react-router-dom protegendo contra hoisting
3132
const mockNavigate = vi.fn();
32-
vi.mock("react-router-dom", () => ({
33-
useNavigate: () => mockNavigate,
33+
vi.mock("react-router-dom", async (importOriginal) => {
34+
const actual = await importOriginal<typeof import("react-router-dom")>();
35+
return {
36+
...actual,
37+
useNavigate: () => mockNavigate,
38+
};
39+
});
40+
41+
const mockLogin = vi.fn().mockResolvedValue(undefined);
42+
vi.mock("@/context/AuthContext", () => ({
43+
useAuth: () => ({
44+
login: mockLogin,
45+
user: null,
46+
isLoading: false,
47+
}),
3448
}));
3549

3650
const mockApiPost = vi.fn();
@@ -58,15 +72,24 @@ describe("RegisterSide — branches extras", () => {
5872
mockApiPost.mockReset();
5973
mockApiGet.mockReset();
6074
mockNavigate.mockReset();
75+
mockLogin.mockReset();
6176
});
6277

6378
// ── Branch: submit com sucesso → navega para /app ────────────────────────
6479
it("navega para /app após cadastro bem-sucedido", async () => {
65-
mockApiPost.mockResolvedValueOnce({ data: {} });
80+
mockApiPost.mockResolvedValueOnce({ data: { user: {}, token: "fake-token" } });
81+
mockLogin.mockResolvedValueOnce(undefined);
82+
6683
render(<RegisterSide />);
6784
fillValidForm();
85+
86+
// Dispara o clique no botão de cadastrar
6887
fireEvent.click(screen.getByRole("button", { name: /cadastrar/i }));
69-
await waitFor(() => expect(mockNavigate).toHaveBeenCalledWith("/app"));
88+
89+
// Aguarda as promessas resolverem e valida a navegação esperada
90+
await waitFor(() => {
91+
expect(mockNavigate).toHaveBeenCalledWith("/app");
92+
});
7093
});
7194

7295
// ── Branch: API retorna erro de validação por campo (data.error é objeto) ─

frontend/tests/unit/components/login/RegisterSide.test.tsx

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,8 +28,9 @@ vi.mock("react-phone-number-input", () => ({
2828
),
2929
}));
3030

31+
const mockNavigate = vi.fn();
3132
vi.mock("react-router-dom", () => ({
32-
useNavigate: () => vi.fn(),
33+
useNavigate: () => mockNavigate,
3334
}));
3435

3536
const mockApiPost = vi.fn();
@@ -48,6 +49,7 @@ describe("RegisterSide", () => {
4849
beforeEach(() => {
4950
mockApiPost.mockClear();
5051
mockApiGet.mockClear();
52+
mockNavigate.mockClear();
5153
});
5254

5355
it("renderiza formulário completo de cadastro", () => {

0 commit comments

Comments
 (0)