From 4ab5d048200b65b20a3b4d95eafb6100f9f3dc1d Mon Sep 17 00:00:00 2001 From: Silvano Cerza Date: Fri, 17 Nov 2023 18:20:44 +0100 Subject: [PATCH] Move filter_documents tests with in filters from DocumentStoreBaseTests to separate class --- haystack/preview/testing/document_store.py | 69 ++++++++++++++-------- 1 file changed, 44 insertions(+), 25 deletions(-) diff --git a/haystack/preview/testing/document_store.py b/haystack/preview/testing/document_store.py index dbd264048c..1ce2a3e13f 100644 --- a/haystack/preview/testing/document_store.py +++ b/haystack/preview/testing/document_store.py @@ -333,43 +333,21 @@ def test_ne_filter_embedding(self, docstore: DocumentStore, filterable_docs: Lis ] -class LegacyFilterDocumentsTest( - LegacyFilterDocumentsInvalidFiltersTest, LegacyFilterDocumentsEqualTest, LegacyFilterDocumentsNotEqualTest -): +class LegacyFilterDocumentsInTest(FilterableDocsFixtureMixin): """ - Utility class to test a Document Store `filter_documents` method using different types of legacy filters + Utility class to test a Document Store `filter_documents` method using implicit and explicit '$in' legacy filters To use it create a custom test class and override the `docstore` fixture to return your Document Store. Example usage: ```python - class MyDocumentStoreTest(LegacyFilterDocumentsTest): + class MyDocumentStoreTest(LegacyFilterDocumentsInTest): @pytest.fixture def docstore(self): return MyDocumentStore() ``` """ - @pytest.mark.unit - def test_no_filter_empty(self, docstore: DocumentStore): - assert docstore.filter_documents() == [] - assert docstore.filter_documents(filters={}) == [] - - @pytest.mark.unit - def test_no_filter_not_empty(self, docstore: DocumentStore): - docs = [Document(content="test doc")] - docstore.write_documents(docs) - assert docstore.filter_documents() == docs - assert docstore.filter_documents(filters={}) == docs - - -class DocumentStoreBaseTests( - CountDocumentsTest, WriteDocumentsTest, DeleteDocumentsTest, LegacyFilterDocumentsTest -): # pylint: disable=too-many-ancestors - @pytest.fixture - def docstore(self) -> DocumentStore: - raise NotImplementedError() - @pytest.mark.unit def test_filter_simple_list_single_element(self, docstore: DocumentStore, filterable_docs: List[Document]): docstore.write_documents(filterable_docs) @@ -433,6 +411,47 @@ def test_in_filter_embedding(self, docstore: DocumentStore, filterable_docs: Lis doc for doc in filterable_docs if (embedding_zero == doc.embedding or embedding_one == doc.embedding) ] + +class LegacyFilterDocumentsTest( + LegacyFilterDocumentsInvalidFiltersTest, + LegacyFilterDocumentsEqualTest, + LegacyFilterDocumentsNotEqualTest, + LegacyFilterDocumentsInTest, +): + """ + Utility class to test a Document Store `filter_documents` method using different types of legacy filters + + To use it create a custom test class and override the `docstore` fixture to return your Document Store. + Example usage: + + ```python + class MyDocumentStoreTest(LegacyFilterDocumentsTest): + @pytest.fixture + def docstore(self): + return MyDocumentStore() + ``` + """ + + @pytest.mark.unit + def test_no_filter_empty(self, docstore: DocumentStore): + assert docstore.filter_documents() == [] + assert docstore.filter_documents(filters={}) == [] + + @pytest.mark.unit + def test_no_filter_not_empty(self, docstore: DocumentStore): + docs = [Document(content="test doc")] + docstore.write_documents(docs) + assert docstore.filter_documents() == docs + assert docstore.filter_documents(filters={}) == docs + + +class DocumentStoreBaseTests( + CountDocumentsTest, WriteDocumentsTest, DeleteDocumentsTest, LegacyFilterDocumentsTest +): # pylint: disable=too-many-ancestors + @pytest.fixture + def docstore(self) -> DocumentStore: + raise NotImplementedError() + @pytest.mark.unit def test_nin_filter_table(self, docstore: DocumentStore, filterable_docs: List[Document]): docstore.write_documents(filterable_docs)