@@ -99,3 +99,115 @@ def test_list_documents(self, db_settings):
9999 assert len (documents ) == 2
100100 assert documents [0 ].content == "Document 1 content."
101101 assert documents [1 ].content == "Document 2 content."
102+
103+ def test_find_document_by_id (self , db_settings ):
104+ rag = SQLiteRag (db_settings )
105+
106+ rag .add_text ("Test document content." , uri = "test.txt" , metadata = {"author" : "test" })
107+ documents = rag .list_documents ()
108+ doc_id = documents [0 ].id
109+
110+ # Find by ID
111+ assert doc_id is not None
112+ found_doc = rag .find_document (doc_id )
113+
114+ assert found_doc is not None
115+ assert found_doc .id == doc_id
116+ assert found_doc .content == "Test document content."
117+ assert found_doc .uri == "test.txt"
118+ assert found_doc .metadata == {"author" : "test" }
119+
120+ def test_find_document_by_uri (self , db_settings ):
121+ rag = SQLiteRag (db_settings )
122+
123+ rag .add_text ("Test document content." , uri = "test.txt" , metadata = {"author" : "test" })
124+
125+ # Find by URI
126+ found_doc = rag .find_document ("test.txt" )
127+
128+ assert found_doc is not None
129+ assert found_doc .content == "Test document content."
130+ assert found_doc .uri == "test.txt"
131+ assert found_doc .metadata == {"author" : "test" }
132+
133+ def test_find_document_not_found (self , db_settings ):
134+ rag = SQLiteRag (db_settings )
135+
136+ found_doc = rag .find_document ("nonexistent" )
137+
138+ assert found_doc is None
139+
140+ def test_remove_document_by_id (self , db_settings ):
141+ rag = SQLiteRag (db_settings )
142+
143+ rag .add_text ("Test document content." , uri = "test.txt" , metadata = {"author" : "test" })
144+ documents = rag .list_documents ()
145+ doc_id = documents [0 ].id
146+
147+ # Verify document exists
148+ assert len (documents ) == 1
149+
150+ # Remove by ID
151+ assert doc_id is not None
152+ success = rag .remove_document (doc_id )
153+
154+ assert success is True
155+
156+ # Verify document is removed
157+ documents = rag .list_documents ()
158+ assert len (documents ) == 0
159+
160+ def test_remove_document_by_uri (self , db_settings ):
161+ rag = SQLiteRag (db_settings )
162+
163+ rag .add_text ("Test document content." , uri = "test.txt" , metadata = {"author" : "test" })
164+
165+ # Verify document exists
166+ documents = rag .list_documents ()
167+ assert len (documents ) == 1
168+
169+ # Remove by URI
170+ success = rag .remove_document ("test.txt" )
171+
172+ assert success is True
173+
174+ # Verify document is removed
175+ documents = rag .list_documents ()
176+ assert len (documents ) == 0
177+
178+ def test_remove_document_not_found (self , db_settings ):
179+ rag = SQLiteRag (db_settings )
180+
181+ success = rag .remove_document ("nonexistent" )
182+
183+ assert success is False
184+
185+ def test_remove_document_with_chunks (self , db_settings ):
186+ rag = SQLiteRag (db_settings )
187+
188+ # Add document that will create chunks
189+ rag .add_text ("This is a longer document that should create multiple chunks when processed by the chunker." , uri = "test.txt" )
190+
191+ # Verify document and chunks exist
192+ documents = rag .list_documents ()
193+ assert len (documents ) == 1
194+ doc_id = documents [0 ].id
195+
196+ cursor = rag ._conn .cursor ()
197+ cursor .execute ("SELECT COUNT(*) FROM chunks WHERE document_id = ?" , (doc_id ,))
198+ chunk_count = cursor .fetchone ()[0 ]
199+ assert chunk_count > 0
200+
201+ # Remove document
202+ assert doc_id is not None
203+ success = rag .remove_document (doc_id )
204+
205+ assert success is True
206+
207+ # Verify document and chunks are removed
208+ documents = rag .list_documents ()
209+ assert len (documents ) == 0
210+
211+ cursor .execute ("SELECT COUNT(*) FROM chunks WHERE document_id = ?" , (doc_id ,))
212+ chunk_count = cursor .fetchone ()[0 ]
213+ assert chunk_count == 0
0 commit comments