Skip to content

Commit 66c4fb4

Browse files
committed
test: ajustar testes do frontend às rotas atuais
Atualiza os testes de autenticação, jobs e keywords para utilizar rotas sem o prefixo /api. Também alinha os testes do formulário de cadastro ao fluxo atual, removendo a dependência do modo admin legado e validando o payload realmente enviado.
1 parent 4a03980 commit 66c4fb4

3 files changed

Lines changed: 13 additions & 44 deletions

File tree

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

Lines changed: 1 addition & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -78,56 +78,40 @@ describe("RegisterSide", () => {
7878

7979
it("mostra erros obrigatórios ao submeter vazio", async () => {
8080
render(<RegisterSide />);
81-
fireEvent.click(screen.getByRole("button", { name: /sou admin/i }));
8281
fireEvent.click(screen.getByRole("button", { name: /cadastrar/i }));
8382
expect(await screen.findByText(/campo de nome é obrigatório/i)).toBeInTheDocument();
8483
expect(await screen.findByText(/campo de e-mail é obrigatório/i)).toBeInTheDocument();
8584
expect(await screen.findByText(/campo de telefone é obrigatório/i)).toBeInTheDocument();
8685
expect(await screen.findByText(/campo de senha é obrigatório/i)).toBeInTheDocument();
87-
expect(await screen.findByText(/seleção de nível é obrigatória/i)).toBeInTheDocument();
88-
expect(await screen.findByText(/selecione ao menos uma tecnologia/i)).toBeInTheDocument();
8986
});
9087

9188
it("valida CPF inválido quando preenchido", async () => {
9289
render(<RegisterSide />);
93-
fireEvent.click(screen.getByRole("button", { name: /sou admin/i }));
9490
fireEvent.change(screen.getByLabelText(/nome/i), { target: { value: "Usuário" } });
9591
fireEvent.change(screen.getByLabelText(/email/i), { target: { value: "teste@email.com" } });
9692
fireEvent.change(screen.getByPlaceholderText(/\(34\)/i), { target: { value: "+5534999999999" } });
9793
fireEvent.change(screen.getByLabelText(/senha/i), { target: { value: "123456" } });
9894
fireEvent.change(screen.getByLabelText(/cpf/i), { target: { value: "123" } });
99-
fireEvent.change(screen.getByLabelText(/nível/i), { target: { value: "Júnior" } });
100-
fireEvent.click(screen.getByText("React"));
10195
fireEvent.click(screen.getByRole("button", { name: /cadastrar/i }));
10296
expect(await screen.findByText(/cpf inválido/i)).toBeInTheDocument();
10397
});
10498

10599
it("envia formulário válido sem CPF", async () => {
106100
mockRegister.mockResolvedValueOnce({ message: "Usuário criado" });
107101
render(<RegisterSide />);
108-
fireEvent.click(screen.getByRole("button", { name: /sou admin/i }));
109102
fireEvent.change(screen.getByLabelText(/nome/i), { target: { value: "Bene" } });
110103
fireEvent.change(screen.getByLabelText(/email/i), { target: { value: "bene@teste.com" } });
111104
fireEvent.change(screen.getByPlaceholderText(/\(34\)/i), { target: { value: "+5534999999999" } });
112105
fireEvent.change(screen.getByLabelText(/senha/i), { target: { value: "123456" } });
113-
fireEvent.change(screen.getByLabelText(/nível/i), { target: { value: "Júnior" } });
114-
fireEvent.click(screen.getByText("React"));
115106
fireEvent.click(screen.getByRole("button", { name: /cadastrar/i }));
116107
await waitFor(() => {
117108
expect(mockRegister).toHaveBeenCalledWith({
118109
email: "bene@teste.com",
119110
password: "123456",
120111
name: "Bene",
121-
phone: "+5534999999999",
122-
cpf: "",
123-
level: "Júnior",
124-
technologies: ["React"],
125-
role: "admin",
126112
});
127113
});
128-
expect(mockNavigate).toHaveBeenCalledWith("/login?registered=true", {
129-
replace: true,
130-
});
114+
expect(window.location.href).toBe("/login?registered=true");
131115
});
132116

133117
it("envia formulário válido como usuário (sem tecnologias/nível)", async () => {
@@ -143,39 +127,28 @@ describe("RegisterSide", () => {
143127
email: "bene@teste.com",
144128
password: "123456",
145129
name: "Bene",
146-
phone: "+5534999999999",
147-
cpf: "",
148-
level: undefined,
149-
technologies: undefined,
150-
role: "user"
151130
});
152131
});
153132
});
154133

155134
it("exibe erro da API", async () => {
156135
mockRegister.mockRejectedValueOnce(new Error("Email já cadastrado"));
157136
render(<RegisterSide />);
158-
fireEvent.click(screen.getByRole("button", { name: /sou admin/i }));
159137
fireEvent.change(screen.getByLabelText(/nome/i), { target: { value: "Bene" } });
160138
fireEvent.change(screen.getByLabelText(/email/i), { target: { value: "bene@teste.com" } });
161139
fireEvent.change(screen.getByPlaceholderText(/\(34\)/i), { target: { value: "+5534999999999" } });
162140
fireEvent.change(screen.getByLabelText(/senha/i), { target: { value: "123456" } });
163-
fireEvent.change(screen.getByLabelText(/nível/i), { target: { value: "Júnior" } });
164-
fireEvent.click(screen.getByText("React"));
165141
fireEvent.click(screen.getByRole("button", { name: /cadastrar/i }));
166142
expect(await screen.findByText(/Email já cadastrado/i)).toBeInTheDocument();
167143
});
168144

169145
it("mostra loading durante requisição", async () => {
170146
mockRegister.mockImplementation(() => new Promise(() => {}));
171147
render(<RegisterSide />);
172-
fireEvent.click(screen.getByRole("button", { name: /sou admin/i }));
173148
fireEvent.change(screen.getByLabelText(/nome/i), { target: { value: "Bene" } });
174149
fireEvent.change(screen.getByLabelText(/email/i), { target: { value: "bene@teste.com" } });
175150
fireEvent.change(screen.getByPlaceholderText(/\(34\)/i), { target: { value: "+5534999999999" } });
176151
fireEvent.change(screen.getByLabelText(/senha/i), { target: { value: "123456" } });
177-
fireEvent.change(screen.getByLabelText(/nível/i), { target: { value: "Júnior" } });
178-
fireEvent.click(screen.getByText("React"));
179152
fireEvent.click(screen.getByRole("button", { name: /cadastrar/i }));
180153
expect(await screen.findByRole("button", { name: /cadastrando\.\.\./i })).toBeDisabled();
181154
});
@@ -192,7 +165,6 @@ describe("RegisterSide", () => {
192165
it("desabilita inputs durante loading", async () => {
193166
mockRegister.mockImplementation(() => new Promise(() => {}));
194167
render(<RegisterSide />);
195-
fireEvent.click(screen.getByRole("button", { name: /sou admin/i }));
196168
const nomeInput = screen.getByLabelText(/nome/i);
197169
const emailInput = screen.getByLabelText(/email/i);
198170
const telefoneInput = screen.getByPlaceholderText(/\(34\)/i);
@@ -201,15 +173,12 @@ describe("RegisterSide", () => {
201173
fireEvent.change(emailInput, { target: { value: "bene@teste.com" } });
202174
fireEvent.change(telefoneInput, { target: { value: "+5534999999999" } });
203175
fireEvent.change(passwordInput, { target: { value: "123456" } });
204-
fireEvent.change(screen.getByLabelText(/nível/i), { target: { value: "Júnior" } });
205-
fireEvent.click(screen.getByText("React"));
206176
fireEvent.click(screen.getByRole("button", { name: /cadastrar/i }));
207177
await waitFor(() => {
208178
expect(nomeInput).toBeDisabled();
209179
expect(emailInput).toBeDisabled();
210180
expect(telefoneInput).toBeDisabled();
211181
expect(passwordInput).toBeDisabled();
212-
expect(screen.getByLabelText(/nível/i)).toBeDisabled();
213182
});
214183
});
215184

frontend/tests/unit/services/auth.service.test.tsx

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ describe("authService", () => {
4949
});
5050

5151
expect(fetchMock).toHaveBeenCalledWith(
52-
expect.stringContaining("/api/auth/login"),
52+
expect.stringContaining("/auth/login"),
5353
expect.objectContaining({
5454
method: "POST",
5555
headers: { "Content-Type": "application/json" },
@@ -105,7 +105,7 @@ describe("authService", () => {
105105
});
106106

107107
expect(fetchMock).toHaveBeenCalledWith(
108-
expect.stringContaining("/api/auth/register"),
108+
expect.stringContaining("/auth/register"),
109109
expect.objectContaining({
110110
method: "POST",
111111
headers: { "Content-Type": "application/json" },
@@ -221,7 +221,7 @@ describe("authService", () => {
221221
expect(user.email).toBe("bene@test.com");
222222

223223
expect(fetchMock).toHaveBeenCalledWith(
224-
expect.stringContaining("/api/auth/me"),
224+
expect.stringContaining("/auth/me"),
225225
{ credentials: "include" }
226226
);
227227
});
@@ -265,7 +265,7 @@ describe("authService", () => {
265265

266266
expect(url).toBe("https://github.com/login/oauth/authorize?state=abc");
267267
expect(fetchMock).toHaveBeenCalledWith(
268-
expect.stringContaining("/api/auth/github/url"),
268+
expect.stringContaining("/auth/github/url"),
269269
expect.objectContaining({ credentials: "include" })
270270
);
271271
});
@@ -309,7 +309,7 @@ describe("authService", () => {
309309

310310
expect(url).toBe("https://accounts.google.com/o/oauth2/auth?state=abc");
311311
expect(fetchMock).toHaveBeenCalledWith(
312-
expect.stringContaining("/api/auth/google/url"),
312+
expect.stringContaining("/auth/google/url"),
313313
expect.objectContaining({ credentials: "include" })
314314
);
315315
});
@@ -353,7 +353,7 @@ describe("authService", () => {
353353

354354
expect(url).toBe("https://www.linkedin.com/oauth/v2/authorization?state=abc");
355355
expect(fetchMock).toHaveBeenCalledWith(
356-
expect.stringContaining("/api/auth/linkedin/url"),
356+
expect.stringContaining("/auth/linkedin/url"),
357357
expect.objectContaining({ credentials: "include" })
358358
);
359359
});
@@ -384,4 +384,4 @@ describe("authService", () => {
384384
);
385385
});
386386
});
387-
});
387+
});

frontend/tests/unit/utils/jobsService.test.ts

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ describe("jobsService", () => {
2727
vi.stubGlobal("fetch", fetchMock);
2828

2929
await fetchJobFiles();
30-
expect(fetchMock).toHaveBeenCalledWith("https://jobsglobalscraper.ddns.net/api/jobs/files", { credentials: "include" });
30+
expect(fetchMock).toHaveBeenCalledWith("https://jobsglobalscraper.ddns.net/jobs/files", { credentials: "include" });
3131
});
3232

3333
it("filtra entradas invalidas ao listar arquivos", async () => {
@@ -72,7 +72,7 @@ describe("jobsService", () => {
7272
const response = await fetchJobsByFile("vagas.xlsx");
7373
expect(response.total).toBe(1);
7474
expect(response.file).toBe("vagas.xlsx");
75-
expect(fetchMock).toHaveBeenCalledWith("/api/jobs?file=vagas.xlsx", { credentials: "include" });
75+
expect(fetchMock).toHaveBeenCalledWith("/jobs?file=vagas.xlsx", { credentials: "include" });
7676
});
7777

7878
it("usa endpoint sem sufixo quando fileName vazio", async () => {
@@ -85,7 +85,7 @@ describe("jobsService", () => {
8585
);
8686

8787
await fetchJobsByFile("");
88-
expect(fetch).toHaveBeenCalledWith("/api/jobs", { credentials: "include" });
88+
expect(fetch).toHaveBeenCalledWith("/jobs", { credentials: "include" });
8989
});
9090

9191
it("normaliza payload invalido ao buscar jobs", async () => {
@@ -96,7 +96,7 @@ describe("jobsService", () => {
9696

9797
const response = await fetchJobsByFile("vagas com espaco.xlsx");
9898
expect(response).toEqual({ jobs: [], file: "", modifiedAt: null, total: 0 });
99-
expect(fetch).toHaveBeenCalledWith("/api/jobs?file=vagas%20com%20espaco.xlsx", { credentials: "include" });
99+
expect(fetch).toHaveBeenCalledWith("/jobs?file=vagas%20com%20espaco.xlsx", { credentials: "include" });
100100
});
101101

102102
it("lanca erro com mensagem da API ao buscar jobs", async () => {
@@ -173,7 +173,7 @@ describe("jobsService", () => {
173173
vi.stubGlobal("fetch", fetchMock);
174174

175175
await saveKeywords(["node", "vitest"]);
176-
expect(fetchMock).toHaveBeenCalledWith("/api/keywords", {
176+
expect(fetchMock).toHaveBeenCalledWith("/keywords", {
177177
method: "POST",
178178
headers: { "Content-Type": "application/json" },
179179
body: JSON.stringify({ keywords: ["node", "vitest"] }),

0 commit comments

Comments
 (0)