Skip to content

Commit

Permalink
Move filter_documents tests with in filters from DocumentStoreBaseTes…
Browse files Browse the repository at this point in the history
…ts to separate class
  • Loading branch information
silvanocerza committed Nov 17, 2023
1 parent b4cdb97 commit 4ab5d04
Showing 1 changed file with 44 additions and 25 deletions.
69 changes: 44 additions & 25 deletions haystack/preview/testing/document_store.py
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand Down Expand Up @@ -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)
Expand Down

0 comments on commit 4ab5d04

Please sign in to comment.