class MockModel: """Implement a mock model for testing.""" def __init__(self): """Initialize the mock, creating an empty node for tests.""" self.empty_node = DeploymentNode(name="Empty", environment="Live") self.empty_node.set_model(self) self.mock_element = MockElement("element") def __iadd__(self, node): """Simulate the model assigning IDs to new elements.""" if not node.id: node.id = "id" node.set_model(self) return self def get_element(self, id: str): """Simulate getting an element by ID.""" assert id == self.mock_element.id return self.mock_element def get_elements(self): """Simulate get_elements.""" return [] def add_relationship(self, **kwargs): """Simulate adding relationships.""" return Relationship(**kwargs)
def test_deployment_node_uses_adds_relationship(model_with_node): """Test begin able to add a relationships between deployment nodes with using().""" node1 = model_with_node.empty_node node2 = DeploymentNode(name="node2") node2.set_model(model_with_node) rel = node1.uses(node2, "Replicates data to", technology="Some tech") assert rel.source is node1 assert rel.destination is node2 assert rel.description == "Replicates data to" assert rel.technology == "Some tech"