1717
1818from structurizr import Workspace
1919from structurizr .model import SoftwareSystem
20+ from structurizr .model .container_instance import ContainerInstance
2021from structurizr .view .deployment_view import DeploymentView , DeploymentViewIO
2122
2223
@@ -224,6 +225,22 @@ def test_deployment_view_add_relationship(empty_workspace: Workspace):
224225 assert len (deployment_view .relationship_views ) == 1
225226
226227
228+ def test_deployment_view_adding_system_instance (empty_workspace : Workspace ):
229+ """Test that `SoftwareSystemInstance` is supported within deployment view."""
230+ model = empty_workspace .model
231+ software_system = model .add_software_system ("Software System" )
232+ deployment_node = model .add_deployment_node ("Deployment Node" )
233+ software_system_instance = deployment_node .add_software_system (software_system )
234+
235+ deployment_view = empty_workspace .views .create_deployment_view (
236+ software_system = software_system , key = "deployment" , description = "Description"
237+ )
238+ deployment_view .add_default_elements ()
239+
240+ views = deployment_view .element_views
241+ assert any ([x .element is software_system_instance for x in views ])
242+
243+
227244def test_add_animation_step_raises_if_no_elements (empty_workspace : Workspace ):
228245 """Check error handling if no elements passed."""
229246 deployment_view = empty_workspace .views .create_deployment_view (
@@ -233,6 +250,26 @@ def test_add_animation_step_raises_if_no_elements(empty_workspace: Workspace):
233250 deployment_view .add_animation ()
234251
235252
253+ def test_deployment_view_find_deployment_node (empty_workspace : Workspace ):
254+ """Test _find_deployment_node."""
255+ model = empty_workspace .model
256+ software_system = model .add_software_system ("Software System" )
257+ container1 = software_system .add_container ("Container 1" )
258+ node1 = model .add_deployment_node ("Deployment Node 1" )
259+ container_instance1 = node1 .add_container (container1 )
260+ container2 = software_system .add_container ("Container 2" )
261+ container_instance2 = ContainerInstance (container = container2 , instance_id = 1 )
262+ # Explicitly we don't add container_instance2 to a deployment node
263+
264+ deployment_view = empty_workspace .views .create_deployment_view (
265+ software_system = software_system , key = "deployment" , description = "Description"
266+ )
267+ deployment_view += node1
268+
269+ assert deployment_view ._find_deployment_node (container_instance1 ) is node1
270+ assert deployment_view ._find_deployment_node (container_instance2 ) is None
271+
272+
236273def test_add_animation_step (empty_workspace : Workspace ):
237274 """Check happy path."""
238275 model = empty_workspace .model
0 commit comments