From b3c9ed6dfdbc8e9b9dd18a6466ae5a3ca32b40b5 Mon Sep 17 00:00:00 2001 From: bendtherules Date: Fri, 3 Apr 2026 13:20:09 +0530 Subject: [PATCH] test(textsplitters): add more tests - Verify that `splitDocuments` correctly prepends the provided `chunkHeader` to each chunk. - Ensure `splitDocuments` returns an empty array when the source HTML yields no chunks. --- test/textsplitters/html_text_splitter.test.ts | 39 +++++++++++++++++++ 1 file changed, 39 insertions(+) diff --git a/test/textsplitters/html_text_splitter.test.ts b/test/textsplitters/html_text_splitter.test.ts index 1dab8b8..b5e74ed 100644 --- a/test/textsplitters/html_text_splitter.test.ts +++ b/test/textsplitters/html_text_splitter.test.ts @@ -223,6 +223,45 @@ describe("HTMLTextSplitter", () => { }); }); + test("prepends chunkHeader in splitDocuments output", async () => { + const splitter = new HTMLTextSplitter({ + chunkSize: 18, + separators: ["h2"], + }); + + const documents = await splitter.splitDocuments( + [ + new Document({ + pageContent: + "

Intro text

Section Title

Body text

", + metadata: { source: "sample.html" }, + }), + ], + { + chunkHeader: "Header: ", + }, + ); + + expect(documents).toHaveLength(2); + expect(documents[0].pageContent).toBe("Header: Intro text"); + expect(documents[1].pageContent).toBe("Header: Section Title Body text"); + }); + + test("returns no documents when source content produces no chunks", async () => { + const splitter = new HTMLTextSplitter({ + chunkSize: 18, + }); + + const documents = await splitter.splitDocuments([ + new Document({ + pageContent: "
", + metadata: { source: "empty.html" }, + }), + ]); + + expect(documents).toEqual([]); + }); + test("resets part metadata per input document", async () => { const splitter = new HTMLTextSplitter({ chunkSize: 18,