-- Integration tests for document indexing workflow local busted = require('busted') describe("Document Indexing Workflow Integration", function() local indexer before_each(function() -- These modules don't exist yet - tests should fail indexer = require('notex.index') end) it("should index markdown files with YAML headers", function() local test_files = { "/tmp/test_doc1.md", "/tmp/test_doc2.md" } -- Create test markdown files local file1 = io.open(test_files[1], "w") file1:write([[ --- title: "Test Document 1" status: "draft" priority: "high" tags: ["test", "urgent"] --- # Test Document 1 This is a test document with YAML header. ]]) file1:close() local file2 = io.open(test_files[2], "w") file2:write([[ --- title: "Test Document 2" status: "review" priority: "medium" tags: ["test", "review"] --- # Test Document 2 Another test document. ]]) file2:close() -- Index the documents local result = indexer.index_documents("/tmp") assert.is_true(result.success) assert.are.equal(2, result.indexed_count) -- Clean up os.remove(test_files[1]) os.remove(test_files[2]) end) it("should handle documents with malformed YAML headers", function() local malformed_file = "/tmp/malformed.md" local file = io.open(malformed_file, "w") file:write([[ --- title: "Malformed Document" status: "draft" invalid_yaml: [unclosed array --- # Malformed Document This has bad YAML. ]]) file1:close() local result = indexer.index_documents("/tmp") assert.is_true(result.success) assert.are.equal(0, result.indexed_count) assert.is_not_nil(result.errors) assert.are.equal(1, #result.errors) -- Clean up os.remove(malformed_file) end) it("should incrementally update index when files change", function() local test_file = "/tmp/incremental_test.md" -- Create initial document local file = io.open(test_file, "w") file:write([[ --- title: "Incremental Test" status: "draft" --- # Incremental Test Initial content. ]]) file:close() -- Initial indexing local result1 = indexer.index_documents("/tmp") assert.is_true(result1.success) assert.are.equal(1, result1.indexed_count) -- Modify the file vim.wait(100) -- Ensure different timestamp local file2 = io.open(test_file, "w") file2:write([[ --- title: "Incremental Test" status: "review" priority: "high" --- # Incremental Test Modified content. ]]) file2:close() -- Incremental update local result2 = indexer.update_index("/tmp") assert.is_true(result2.success) assert.are.equal(1, result2.updated_count) -- Clean up os.remove(test_file) end) end)