From 596b3edf7244544445ef0a254b3248ec0432eb5c Mon Sep 17 00:00:00 2001 From: Igor Ilic Date: Sun, 8 Dec 2024 15:18:42 +0100 Subject: [PATCH] test: Add test for Unstructured pptx document type Added pptx example file and tested Unstructured pptx document type handling Test COG-685 --- .../documents/UnstructuredDocument_test.py | 22 ++++++++++++++++++ cognee/tests/test_data/example.pptx | Bin 0 -> 39894 bytes 2 files changed, 22 insertions(+) create mode 100644 cognee/tests/integration/documents/UnstructuredDocument_test.py create mode 100644 cognee/tests/test_data/example.pptx diff --git a/cognee/tests/integration/documents/UnstructuredDocument_test.py b/cognee/tests/integration/documents/UnstructuredDocument_test.py new file mode 100644 index 000000000..56c3c827f --- /dev/null +++ b/cognee/tests/integration/documents/UnstructuredDocument_test.py @@ -0,0 +1,22 @@ +import os +import uuid + +from cognee.modules.data.processing.document_types.UnstructuredDocument import UnstructuredDocument + +def test_UnstructuredDocument(): + docx_file_path = os.path.join( + os.sep, + *(os.path.dirname(__file__).split(os.sep)[:-2]), + "test_data", + "example.pptx", + ) + + pptx_document = UnstructuredDocument( + id=uuid.uuid4(), name="example.pptx", raw_data_location=docx_file_path, metadata_id=uuid.uuid4(), + mime_type="application/vnd.openxmlformats-officedocument.presentationml.presentation" + ) + + for paragraph_data in pptx_document.read(chunk_size=1024): + assert 19 == paragraph_data.word_count, f' 19 != {paragraph_data.word_count = }' + assert 104 == len(paragraph_data.text), f' 104 != {len(paragraph_data.text) = }' + assert 'sentence_cut' == paragraph_data.cut_type, f' sentence_cut != {paragraph_data.cut_type = }' diff --git a/cognee/tests/test_data/example.pptx b/cognee/tests/test_data/example.pptx new file mode 100644 index 0000000000000000000000000000000000000000..3e49ae3df04e862e6b4b334dce04fb453e9b3d38 GIT binary patch literal 39894 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

r{h$9ft7*Nbvw!yS^AoVzK8_u`OSsJmVmdN zYHX{IM1VHQmqujW@adTo$lcmpS1^`opEW{x*?o0YIg;=FY1M8 zG-{SRs*&0ktEzjp8P9)8sxe!Ai^jxu5#dmF1 z+~4vRMS{L~s|6jazl&V~FUV5HpE#^}yNrRATja_hl-EoS8rbXQ{@hXA%VX5yGBbpU zBBZ1}{pQPU{wtK8gK(4MAL_Nsm|ao_94%}RA3t|cFmw=f5EvL3kSh5W#Uk37;Z)%D zpbU(QJx*+YKdi0o8SIS>EDU}={s@BoiJ*d)Jdy!KF#89>BCz!jgda7R{zQ0M5T5uq z0&T!S{Sm>^%HF{4zsopJe)ub)r#00d3oQORz5wrh{sH$>GyVkqp&@?~eOhk$QS5&m z-Dppc<^Nit{ZFv`C&h{%D>VN)ps@Z4_JrjR_+RnJKXIQ{p8UNxF|dE){_Dn@$M5-{ za8D~Y{@$Azgnxni$@9r8{5#R7wY+{OS_bUg$Is~r%x^n{{(2StJJAdBzrg*2=&y2M ze|Evs>LkAtg`)Ti@)OoSYLWa2_wPi%0aMKX@xK2-^jCqCKaroBrT+B>#f^gy;`Xgg@c_ooMvCzrg*2=r5y%KarpA?fji+ zrovy4pAh}Alk-oweJZs+8t`!TTrGe^;lcc_zPq{2Uff zp#M85`9bwbR>_~8`ZS~BcNx8M_zT<tnwEOWgd=)1QWlexFb)`2BkKPXj}LB0LRu{65RH{O}Xu z=g08Z0MnmfPoo8o5t3iW-pAkKC4Zjy^kxy^*IB@4*Fis7{5Q1l=b2A$H-7&FSVMtJ c6aT!md@BJ7%+Ln`p#uJk0lpS(_~TFi7c}=W)Bpeg literal 0 HcmV?d00001