haystack/test/preview/testing/test_factory.py
ZanSara 6e70d403f8
feat: Improve Document for Haystack 2.0 (#5738)
* initial draft

* tests

* add proposal

* proposal number

* reno

* fix tests and usage of content and content_type

* update branch & fix more tests

* mypy

* add docstring

* fix more tests

* review feedback

* improve __str__

* Apply suggestions from code review

Co-authored-by: Daria Fokina <daria.fokina@deepset.ai>

* Update haystack/preview/dataclasses/document.py

Co-authored-by: Daria Fokina <daria.fokina@deepset.ai>

* improve __str__

* fix tests

* fix more tests

* Update haystack/preview/document_stores/memory/document_store.py

---------

Co-authored-by: Daria Fokina <daria.fokina@deepset.ai>
2023-09-11 17:40:00 +02:00

71 lines
2.2 KiB
Python

import pytest
from haystack.preview.dataclasses import Document
from haystack.preview.testing.factory import document_store_class
from haystack.preview.document_stores.decorator import document_store
@pytest.mark.unit
def test_document_store_class_default():
MyStore = document_store_class("MyStore")
store = MyStore()
assert store.count_documents() == 0
assert store.filter_documents() == []
assert store.write_documents([]) is None
assert store.delete_documents([]) is None
assert store.to_dict() == {"type": "MyStore", "init_parameters": {}}
@pytest.mark.unit
def test_document_store_from_dict():
MyStore = document_store_class("MyStore")
store = MyStore.from_dict({"type": "MyStore", "init_parameters": {}})
assert isinstance(store, MyStore)
@pytest.mark.unit
def test_document_store_class_is_registered():
MyStore = document_store_class("MyStore")
assert document_store.registry["MyStore"] == MyStore
@pytest.mark.unit
def test_document_store_class_with_documents():
doc = Document(id="fake_id", text="This is a document")
MyStore = document_store_class("MyStore", documents=[doc])
store = MyStore()
assert store.count_documents() == 1
assert store.filter_documents() == [doc]
@pytest.mark.unit
def test_document_store_class_with_documents_count():
MyStore = document_store_class("MyStore", documents_count=100)
store = MyStore()
assert store.count_documents() == 100
assert store.filter_documents() == []
@pytest.mark.unit
def test_document_store_class_with_documents_and_documents_count():
doc = Document(id="fake_id", text="This is a document")
MyStore = document_store_class("MyStore", documents=[doc], documents_count=100)
store = MyStore()
assert store.count_documents() == 100
assert store.filter_documents() == [doc]
@pytest.mark.unit
def test_document_store_class_with_bases():
MyStore = document_store_class("MyStore", bases=(Exception,))
store = MyStore()
assert isinstance(store, Exception)
@pytest.mark.unit
def test_document_store_class_with_extra_fields():
MyStore = document_store_class("MyStore", extra_fields={"my_field": 10})
store = MyStore()
assert store.my_field == 10