From d71e2dff43b16b76a19b9373540a1a52b4e62cd7 Mon Sep 17 00:00:00 2001 From: GloBrito Date: Sat, 26 Sep 2026 01:41:50 -0300 Subject: [PATCH 1/3] feat(a6-33): include context in document search --- src/pages/Home/Home.jsx | 1 + src/pages/Home/Home.test.jsx | 18 +++++++++++++++--- src/services/documentService.js | 9 ++++++++- src/tests/coverage/Home.test.jsx | 20 ++++++++++++++------ 4 files changed, 38 insertions(+), 10 deletions(-) diff --git a/src/pages/Home/Home.jsx b/src/pages/Home/Home.jsx index 9b4cb1d..ba86bde 100644 --- a/src/pages/Home/Home.jsx +++ b/src/pages/Home/Home.jsx @@ -30,6 +30,7 @@ function Home() { try { const data = await fetchDocuments({ nome: search, + contexto: search, page: currentPage, }); console.log(data); diff --git a/src/pages/Home/Home.test.jsx b/src/pages/Home/Home.test.jsx index 1ee70f3..2c79da8 100644 --- a/src/pages/Home/Home.test.jsx +++ b/src/pages/Home/Home.test.jsx @@ -65,7 +65,11 @@ describe("Home", () => { expect(screen.getByText("Manual do sistema.pdf")).toBeInTheDocument(); }); expect(screen.getByText("Ata de reuniao.docx")).toBeInTheDocument(); - expect(fetchDocuments).toHaveBeenCalledWith({ nome: "", page: 1 }); + expect(fetchDocuments).toHaveBeenCalledWith({ + nome: "", + contexto: "", + page: 1, + }); }); it("exibe mensagem de erro quando a busca falha", async () => { @@ -94,7 +98,11 @@ describe("Home", () => { }); await waitFor(() => { - expect(fetchDocuments).toHaveBeenLastCalledWith({ nome: "manual", page: 1 }); + expect(fetchDocuments).toHaveBeenLastCalledWith({ + nome: "manual", + contexto: "manual", + page: 1, + }); }); }); @@ -108,7 +116,11 @@ describe("Home", () => { fireEvent.click(screen.getByRole("button", { name: "Próxima página" })); await waitFor(() => { - expect(fetchDocuments).toHaveBeenLastCalledWith({ nome: "", page: 2 }); + expect(fetchDocuments).toHaveBeenLastCalledWith({ + nome: "", + contexto: "", + page: 2, + }); }); }); diff --git a/src/services/documentService.js b/src/services/documentService.js index dbf9198..9581a16 100644 --- a/src/services/documentService.js +++ b/src/services/documentService.js @@ -1,12 +1,19 @@ import api from "./api"; -export async function fetchDocuments({ nome = "", page = 1 } = {}) { +export async function fetchDocuments({ + nome = "", + contexto = "", + page = 1, +} = {}) { const response = await api.get("/api/documentos/", { params: { nome: nome, etiquetas: nome, page: page, }, + data: { + contexto: contexto, + }, }); return response.data; diff --git a/src/tests/coverage/Home.test.jsx b/src/tests/coverage/Home.test.jsx index 09f722d..31243c0 100644 --- a/src/tests/coverage/Home.test.jsx +++ b/src/tests/coverage/Home.test.jsx @@ -83,6 +83,7 @@ describe("Home", () => { expect(fetchDocuments).toHaveBeenCalledWith({ nome: "", + contexto: "", page: 1, }); expect(screen.getByText("Documento 1")).toBeInTheDocument(); @@ -125,6 +126,7 @@ describe("Home", () => { expect(fetchDocuments).toHaveBeenLastCalledWith({ nome: "relatório", + contexto: "relatório", page: 1, }); }); @@ -190,17 +192,23 @@ describe("Home", () => { await vi.advanceTimersByTimeAsync(400); }); - fireEvent.click(screen.getByText("Documento 1")); - - await act(async () => {}); + await act(async () => { + fireEvent.click(screen.getByText("Documento 1")); + await Promise.resolve(); + }); expect(screen.getByText("Tentar novamente")).toBeInTheDocument(); - fireEvent.click(screen.getByText("Tentar novamente")); - await act(async () => {}); + await act(async () => { + fireEvent.click(screen.getByText("Tentar novamente")); + await Promise.resolve(); + }); + + expect( + screen.getByText("Detalhe: Documento completo") + ).toBeInTheDocument(); expect(fetchDocumentById).toHaveBeenCalledTimes(2); - expect(screen.getByText("Detalhe: Documento completo")).toBeInTheDocument(); }); it("ignora a resposta de detalhes depois que o modal é fechado", async () => { From d5c137bb5219dc67b17792d2852de931490f9e14 Mon Sep 17 00:00:00 2001 From: GloBrito Date: Sat, 26 Sep 2026 01:56:09 -0300 Subject: [PATCH 2/3] test(a6-33): cover document context search --- src/services/documentService.test.js | 90 +++++++++++++++++++++++----- 1 file changed, 74 insertions(+), 16 deletions(-) diff --git a/src/services/documentService.test.js b/src/services/documentService.test.js index f510601..baa3bf3 100644 --- a/src/services/documentService.test.js +++ b/src/services/documentService.test.js @@ -1,24 +1,82 @@ -import { describe, expect, it, vi } from 'vitest' +import { describe, expect, it, vi } from "vitest"; -import api from './api' -import { fetchDocumentById } from './documentService' +import api from "./api"; +import { fetchDocumentById, fetchDocuments } from "./documentService"; -vi.mock('./api', () => ({ +vi.mock("./api", () => ({ default: { get: vi.fn(), }, -})) +})); -describe('fetchDocumentById', () => { - it('busca o detalhe do documento pelo id e retorna o payload da API', async () => { +describe("fetchDocuments", () => { + it("busca documentos por nome, etiqueta e contexto", async () => { + const responseData = { + pages: 1, + results: [ + { + id_documento: 42, + nome: "Manual.pdf", + }, + ], + }; + + api.get.mockResolvedValue({ data: responseData }); + + await expect( + fetchDocuments({ + nome: "manual", + contexto: "manual", + page: 1, + }) + ).resolves.toEqual(responseData); + + expect(api.get).toHaveBeenCalledWith("/api/documentos/", { + params: { + nome: "manual", + etiquetas: "manual", + page: 1, + }, + data: { + contexto: "manual", + }, + }); + }); + + it("usa os valores padrão quando nenhum parâmetro é informado", async () => { + const responseData = { + pages: 1, + results: [], + }; + + api.get.mockResolvedValue({ data: responseData }); + + await expect(fetchDocuments()).resolves.toEqual(responseData); + + expect(api.get).toHaveBeenCalledWith("/api/documentos/", { + params: { + nome: "", + etiquetas: "", + page: 1, + }, + data: { + contexto: "", + }, + }); + }); +}); + +describe("fetchDocumentById", () => { + it("busca o detalhe do documento pelo id e retorna o payload da API", async () => { const document = { id_documento: 42, - nome: 'Manual.pdf', - etiquetas: [{ id_etiqueta: 7, nome: 'Importante' }], - } - api.get.mockResolvedValue({ data: document }) - - await expect(fetchDocumentById(42)).resolves.toEqual(document) - expect(api.get).toHaveBeenCalledWith('/api/documentos/42/') - }) -}) + nome: "Manual.pdf", + etiquetas: [{ id_etiqueta: 7, nome: "Importante" }], + }; + + api.get.mockResolvedValue({ data: document }); + + await expect(fetchDocumentById(42)).resolves.toEqual(document); + expect(api.get).toHaveBeenCalledWith("/api/documentos/42/"); + }); +}); \ No newline at end of file From 3cf28f30c7826560219b1a1dc66f9c2474bc3d98 Mon Sep 17 00:00:00 2001 From: GloBrito Date: Sun, 27 Sep 2026 01:57:55 -0300 Subject: [PATCH 3/3] fix(a6-33): send context as query parameter --- src/services/documentService.js | 19 +++++++++++-------- src/services/documentService.test.js | 15 ++++++++------- 2 files changed, 19 insertions(+), 15 deletions(-) diff --git a/src/services/documentService.js b/src/services/documentService.js index 9581a16..f3e76ed 100644 --- a/src/services/documentService.js +++ b/src/services/documentService.js @@ -5,15 +5,18 @@ export async function fetchDocuments({ contexto = "", page = 1, } = {}) { + const params = { + nome: nome, + etiquetas: nome, + page: page, + }; + + if (contexto !== "") { + params.contexto = contexto; + } + const response = await api.get("/api/documentos/", { - params: { - nome: nome, - etiquetas: nome, - page: page, - }, - data: { - contexto: contexto, - }, + params, }); return response.data; diff --git a/src/services/documentService.test.js b/src/services/documentService.test.js index baa3bf3..d3db1c8 100644 --- a/src/services/documentService.test.js +++ b/src/services/documentService.test.js @@ -36,14 +36,12 @@ describe("fetchDocuments", () => { nome: "manual", etiquetas: "manual", page: 1, - }, - data: { contexto: "manual", }, }); }); - it("usa os valores padrão quando nenhum parâmetro é informado", async () => { + it("não envia contexto quando ele está vazio", async () => { const responseData = { pages: 1, results: [], @@ -51,7 +49,13 @@ describe("fetchDocuments", () => { api.get.mockResolvedValue({ data: responseData }); - await expect(fetchDocuments()).resolves.toEqual(responseData); + await expect( + fetchDocuments({ + nome: "", + contexto: "", + page: 1, + }) + ).resolves.toEqual(responseData); expect(api.get).toHaveBeenCalledWith("/api/documentos/", { params: { @@ -59,9 +63,6 @@ describe("fetchDocuments", () => { etiquetas: "", page: 1, }, - data: { - contexto: "", - }, }); }); });