Created
June 15, 2021 13:16
-
-
Save cassioeskelsen/80e0a31516b6b32ff7a8963a34b2d13d to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import unittest | |
from pyravendb.commands.raven_commands import GetDocumentCommand | |
from pyravendb.custom_exceptions.exceptions import InvalidOperationException | |
from pyravendb.data.document_conventions import DocumentConventions | |
from pyravendb.tests.test_base import TestBase | |
class Address: | |
def __init__(self, street, city, state): | |
self.street = street | |
self.city = city | |
self.state = state | |
self.Id: str = None | |
class Customer: | |
def __init__(self, name): | |
self.name = name | |
self.Id: str = None | |
class SomeClass: | |
def __init__(self, name): | |
self.name = name | |
self.Id: str = None | |
class Category: | |
def __init__(self, name): | |
self.name = name | |
class OrderItem: | |
def __init__(self, product_id, quantity): | |
self.product_id = product_id | |
self.quantity = quantity | |
class Company: | |
def __init__(self, name): | |
self.name = name | |
class CompanyOwner: | |
def __init__(self, name): | |
self.name = name | |
class DemoStat: | |
def __init__(self): | |
pass | |
class TesteCollectionName(TestBase): | |
def setUp(self): | |
self.setConvention(DocumentConventions(collection_names={Address: 'Address', SomeClass: 'SomeNewCoolName'})) | |
super(TesteCollectionName, self).setUp() | |
self.requests_executor = self.store.get_request_executor() | |
def tearDown(self): | |
super(TesteCollectionName, self).tearDown() | |
self.delete_all_topology_files() | |
def test_change_names_in_document_convention(self): | |
dc = DocumentConventions(collection_names={SomeClass: 'SomeClass123'}) | |
dc.default_collection_names.update({Address: 'Address123'}) | |
dc.default_collection_names.update({Customer: 'Customer123'}) | |
assert dc.get_collection_name(SomeClass) == 'SomeClass123' | |
assert dc.get_collection_name(Address) == 'Address123' | |
assert dc.get_collection_name(Customer) == 'Customer123' | |
def test_transform_type_name(self): | |
dc = DocumentConventions() | |
assert "companies" == dc.default_transform_type_tag_name(Company("Test")) | |
assert "CompanyOwners" == dc.default_transform_type_tag_name(CompanyOwner("Test Test")) | |
assert "OrderItems" == dc.default_transform_type_tag_name(OrderItem(1, 1)) | |
assert "categories" == dc.default_transform_type_tag_name(Category("category")) | |
assert "DemoStats" == dc.default_transform_type_tag_name(DemoStat()) | |
def test_id_prefix_default(self): | |
with self.store.open_session() as session: | |
c = Customer(name="John") | |
session.store(c) | |
session.save_changes() | |
assert c.Id.startswith('customers/') | |
def test_collection_name_default(self): | |
with self.store.open_session() as session: | |
c = Customer(name="John") | |
session.store(c, key="customer/123123-ABC") | |
session.save_changes() | |
response = self.requests_executor.execute(GetDocumentCommand("customer/123123-ABC")) | |
assert response["Results"][0]["@metadata"]["@collection"] == "Customers" | |
def test_id_prefix_custom(self): | |
with self.store.open_session() as session: | |
c = Address(street='Baker Street', city='Westminster', state='London') | |
session.store(c) | |
session.save_changes() | |
assert c.Id.startswith('address/') | |
def test_collection_name_custom(self): | |
with self.store.open_session() as session: | |
c = Address(street='Baker Street', city='Westminster', state='London') | |
session.store(c, key="address/123-A") | |
session.save_changes() | |
response = self.requests_executor.execute(GetDocumentCommand("address/123-A")) | |
assert response["Results"][0]["@metadata"]["@collection"] == "Address" | |
def test_id_prefix_custom_composite_name(self): | |
with self.store.open_session() as session: | |
c = SomeClass(name="xpto") | |
session.store(c) | |
session.save_changes() | |
assert c.Id.startswith('SomeNewCoolName/') | |
def test_collection_name_custom_composite_name(self): | |
with self.store.open_session() as session: | |
c = SomeClass(name="xpto") | |
session.store(c, key="SomeNewCoolName/111-A") | |
session.save_changes() | |
response = self.requests_executor.execute(GetDocumentCommand("SomeNewCoolName/111-A")) | |
assert response["Results"][0]["@metadata"]["@collection"] == "SomeNewCoolName" | |
def test_shouldnt_allow_change_after_initialize(self): | |
with self.assertRaises(InvalidOperationException) as context: | |
self.store.conventions.default_collection_names = {Address: 'Addresses'} | |
if __name__ == "__main__": | |
unittest.main() |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment