|
from ragflow import RAGFlow, DataSet, Document |
|
|
|
from common import API_KEY, HOST_ADDRESS |
|
from test_sdkbase import TestSdk |
|
|
|
|
|
class TestDocument(TestSdk): |
|
def test_upload_document_with_success(self): |
|
""" |
|
Test ingesting a document into a dataset with success. |
|
""" |
|
|
|
rag = RAGFlow(API_KEY, HOST_ADDRESS) |
|
|
|
|
|
ds = rag.create_dataset(name="God") |
|
|
|
|
|
assert isinstance(ds, DataSet), f"Failed to create dataset, error: {ds}" |
|
assert ds.name == "God", "Dataset name does not match." |
|
|
|
|
|
|
|
name = "TestDocument.txt" |
|
blob = b"Sample document content for ingestion test." |
|
|
|
res = rag.create_document(ds, name=name, blob=blob) |
|
|
|
|
|
assert res is True, f"Failed to create document, error: {res}" |
|
|
|
def test_get_detail_document_with_success(self): |
|
""" |
|
Test getting a document's detail with success |
|
""" |
|
rag = RAGFlow(API_KEY, HOST_ADDRESS) |
|
doc = rag.get_document(name="TestDocument.txt") |
|
assert isinstance(doc, Document), f"Failed to get dataset, error: {doc}." |
|
assert doc.name == "TestDocument.txt", "Name does not match" |
|
|
|
def test_update_document_with_success(self): |
|
""" |
|
Test updating a document with success. |
|
""" |
|
rag = RAGFlow(API_KEY, HOST_ADDRESS) |
|
doc = rag.get_document(name="TestDocument.txt") |
|
if isinstance(doc, Document): |
|
doc.parser_method = "manual" |
|
res = doc.save() |
|
assert res is True, f"Failed to update document, error: {res}" |
|
else: |
|
assert False, f"Failed to get document, error: {doc}" |
|
|
|
def test_download_document_with_success(self): |
|
""" |
|
Test downloading a document with success. |
|
""" |
|
|
|
rag = RAGFlow(API_KEY, HOST_ADDRESS) |
|
|
|
|
|
doc = rag.get_document(name="TestDocument.txt") |
|
|
|
|
|
if isinstance(doc, Document): |
|
|
|
try: |
|
with open("ragflow.txt", "wb+") as file: |
|
file.write(doc.download()) |
|
|
|
print(doc) |
|
|
|
|
|
assert True, "Document downloaded successfully." |
|
except Exception as e: |
|
|
|
assert False, f"Failed to download document, error: {str(e)}" |
|
else: |
|
|
|
assert False, f"Failed to get document, error: {doc}" |
|
|
|
def test_list_all_documents_in_dataset_with_success(self): |
|
""" |
|
Test list all documents into a dataset with success. |
|
""" |
|
|
|
rag = RAGFlow(API_KEY, HOST_ADDRESS) |
|
|
|
|
|
ds = rag.create_dataset(name="God2") |
|
|
|
|
|
assert isinstance(ds, DataSet), f"Failed to create dataset, error: {ds}" |
|
assert ds.name == "God2", "Dataset name does not match." |
|
|
|
|
|
|
|
name1 = "Test Document111.txt" |
|
blob1 = b"Sample document content for ingestion test111." |
|
name2 = "Test Document222.txt" |
|
blob2 = b"Sample document content for ingestion test222." |
|
|
|
rag.create_document(ds, name=name1, blob=blob1) |
|
rag.create_document(ds, name=name2, blob=blob2) |
|
for d in ds.list_docs(keywords="test", offset=0, limit=12): |
|
assert isinstance(d, Document) |
|
print(d) |
|
|
|
def test_delete_documents_in_dataset_with_success(self): |
|
""" |
|
Test list all documents into a dataset with success. |
|
""" |
|
|
|
rag = RAGFlow(API_KEY, HOST_ADDRESS) |
|
|
|
|
|
ds = rag.create_dataset(name="God3") |
|
|
|
|
|
assert isinstance(ds, DataSet), f"Failed to create dataset, error: {ds}" |
|
assert ds.name == "God3", "Dataset name does not match." |
|
|
|
|
|
|
|
name1 = "Test Document333.txt" |
|
blob1 = b"Sample document content for ingestion test333." |
|
name2 = "Test Document444.txt" |
|
blob2 = b"Sample document content for ingestion test444." |
|
name3='test.txt' |
|
path='test_data/test.txt' |
|
rag.create_document(ds, name=name3, blob=open(path, "rb").read()) |
|
rag.create_document(ds, name=name1, blob=blob1) |
|
rag.create_document(ds, name=name2, blob=blob2) |
|
for d in ds.list_docs(keywords="document", offset=0, limit=12): |
|
assert isinstance(d, Document) |
|
d.delete() |
|
print(d) |
|
remaining_docs = ds.list_docs(keywords="rag", offset=0, limit=12) |
|
assert len(remaining_docs) == 0, "Documents were not properly deleted." |
|
|
|
|
|
|
|
|
|
|
|
|