From 67fb9b4b166a642249e3be8fac9db86d4ec15df3 Mon Sep 17 00:00:00 2001 From: Benevanio Date: Thu, 23 Apr 2026 08:46:55 -0300 Subject: [PATCH] feat(tests): improve JobsFiltersCard and JobsHeaderCard tests for better coverage and readability --- README.md | 2 +- .../unit/components/JobsFiltersCard.test.tsx | 44 ++++++++++++++----- .../unit/components/JobsHeaderCard.test.tsx | 22 ++++++++-- package-lock.json | 11 ----- 4 files changed, 51 insertions(+), 28 deletions(-) diff --git a/README.md b/README.md index 5f2d672..80ef029 100644 --- a/README.md +++ b/README.md @@ -169,7 +169,7 @@ Recomendacoes: - `npm run test`: executa testes do backend - `npm run build`: build do frontend - `npm run validate`: teste backend + lint/build frontend -- `npm run test:coverage`: coverage frontend + backend +- `c`: coverage frontend + backend ### Backend diff --git a/frontend/tests/unit/components/JobsFiltersCard.test.tsx b/frontend/tests/unit/components/JobsFiltersCard.test.tsx index f3d8819..76809b1 100644 --- a/frontend/tests/unit/components/JobsFiltersCard.test.tsx +++ b/frontend/tests/unit/components/JobsFiltersCard.test.tsx @@ -32,10 +32,13 @@ describe("JobsFiltersCard", () => { />, ); - fireEvent.change(screen.getByPlaceholderText(/buscar/i), { target: { value: "node" } }); + fireEvent.change(screen.getByPlaceholderText(/buscar/i), { + target: { value: "node" }, + }); + fireEvent.click(screen.getByRole("button", { name: /atualizar/i })); - expect(setSearch).toHaveBeenCalled(); + expect(setSearch).toHaveBeenCalledWith("node"); expect(onRefresh).toHaveBeenCalledTimes(1); }); @@ -54,10 +57,16 @@ describe("JobsFiltersCard", () => { />, ); - expect(screen.getAllByText("vagas.xlsx").length).toBeGreaterThan(0); - expect(screen.getByText("1 vagas")).toBeInTheDocument(); - expect(screen.getByText(/filtros selecionados/i)).toBeInTheDocument(); - expect(screen.getByText(/use o botão filtrar/i)).toBeInTheDocument(); + expect(screen.getAllByText(/vagas\.xlsx/i).length).toBeGreaterThan(0); + expect(screen.getByText(/1 vagas/i)).toBeInTheDocument(); + + expect( + screen.getByText(/filtros selecionados/i) + ).toBeInTheDocument(); + + expect( + screen.getByText(/use o botão filtrar/i) + ).toBeInTheDocument(); }); it("dispara mudancas nos filtros de keyword e arquivo", () => { @@ -79,8 +88,14 @@ describe("JobsFiltersCard", () => { ); const selects = screen.getAllByRole("combobox"); - fireEvent.change(selects[0], { target: { value: "React" } }); - fireEvent.change(selects[1], { target: { value: "historico.xlsx" } }); + + fireEvent.change(selects[0], { + target: { value: "React" }, + }); + + fireEvent.change(selects[1], { + target: { value: "historico.xlsx" }, + }); expect(setKeywordFilter).toHaveBeenCalled(); expect(setSelectedFile).toHaveBeenCalled(); @@ -105,12 +120,17 @@ describe("JobsFiltersCard", () => { ); fireEvent.click(screen.getByRole("button", { name: /^filtrar$/i })); - expect(screen.getByText(/gerenciar filtros/i)).toBeInTheDocument(); - fireEvent.click(screen.getByRole("button", { name: /limpar filtros/i })); + expect( + screen.getByText(/gerenciar filtros/i) + ).toBeInTheDocument(); + + fireEvent.click( + screen.getByRole("button", { name: /limpar filtros/i }) + ); - expect(screen.getAllByText("React").length).toBeGreaterThan(0); + expect(screen.getAllByText(/react/i).length).toBeGreaterThan(0); expect(setSearch).toHaveBeenCalledWith(""); expect(setKeywordFilter).toHaveBeenCalledWith([]); }); -}); +}); \ No newline at end of file diff --git a/frontend/tests/unit/components/JobsHeaderCard.test.tsx b/frontend/tests/unit/components/JobsHeaderCard.test.tsx index 059135b..d5ccd64 100644 --- a/frontend/tests/unit/components/JobsHeaderCard.test.tsx +++ b/frontend/tests/unit/components/JobsHeaderCard.test.tsx @@ -10,13 +10,27 @@ describe("JobsHeaderCard", () => { it("renderiza logo acessivel e descricao", () => { render(); - expect(screen.getByAltText("Painel de Vagas")).toBeInTheDocument(); - expect(screen.getByText("Leitura automatica dos arquivos XLSX gerados em output.")).toBeInTheDocument(); + expect( + screen.getByAltText(/painel de vagas/i) + ).toBeInTheDocument(); + + // texto quebrado + acento corrigido + expect( + screen.getByText(/leitura automática dos arquivos/i) + ).toBeInTheDocument(); + + expect( + screen.getByText(/xlsx gerados em output/i) + ).toBeInTheDocument(); }); it("renderiza o botao de alternar tema", () => { render(); - expect(screen.getByRole("button", { name: "Ativar tema escuro" })).toBeInTheDocument(); + const buttons = screen.getAllByRole("button", { + name: /ativar tema escuro/i, + }); + + expect(buttons.length).toBeGreaterThan(0); }); -}); +}); \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index 9692281..f4ad1ea 100644 --- a/package-lock.json +++ b/package-lock.json @@ -8178,7 +8178,6 @@ "os": [ "android" ], - "peer": true, "engines": { "node": ">= 12.0.0" }, @@ -8200,7 +8199,6 @@ "os": [ "darwin" ], - "peer": true, "engines": { "node": ">= 12.0.0" }, @@ -8222,7 +8220,6 @@ "os": [ "darwin" ], - "peer": true, "engines": { "node": ">= 12.0.0" }, @@ -8244,7 +8241,6 @@ "os": [ "freebsd" ], - "peer": true, "engines": { "node": ">= 12.0.0" }, @@ -8266,7 +8262,6 @@ "os": [ "linux" ], - "peer": true, "engines": { "node": ">= 12.0.0" }, @@ -8288,7 +8283,6 @@ "os": [ "linux" ], - "peer": true, "engines": { "node": ">= 12.0.0" }, @@ -8310,7 +8304,6 @@ "os": [ "linux" ], - "peer": true, "engines": { "node": ">= 12.0.0" }, @@ -8332,7 +8325,6 @@ "os": [ "linux" ], - "peer": true, "engines": { "node": ">= 12.0.0" }, @@ -8354,7 +8346,6 @@ "os": [ "linux" ], - "peer": true, "engines": { "node": ">= 12.0.0" }, @@ -8376,7 +8367,6 @@ "os": [ "win32" ], - "peer": true, "engines": { "node": ">= 12.0.0" }, @@ -8398,7 +8388,6 @@ "os": [ "win32" ], - "peer": true, "engines": { "node": ">= 12.0.0" },