protected void write(DeploymentView view, Writer writer) { try { writeHeader(view, writer); view.getElements().stream() .filter(ev -> ev.getElement() instanceof DeploymentNode && ev.getElement().getParent() == null) .map(ev -> (DeploymentNode)ev.getElement()) .sorted((e1, e2) -> e1.getName().compareTo(e2.getName())) .forEach(e -> write(view, e, writer, 0)); writeRelationships(view, writer); writeFooter(writer); } catch (IOException e) { e.printStackTrace(); } }
@Test public void test_addAllDeploymentNodes_DoesNothing_WhenThereAreNoTopLevelDeploymentNodes() { deploymentView = views.createDeploymentView("deployment", "Description"); deploymentView.addAllDeploymentNodes(); assertEquals(0, deploymentView.getElements().size()); }
@Test public void test_addAllDeploymentNodes_AddsDeploymentNodesAndContainerInstances_WhenThereAreTopLevelDeploymentNodesWithContainerInstances() { SoftwareSystem softwareSystem = model.addSoftwareSystem("Software System", ""); Container container = softwareSystem.addContainer("Container", "Description", "Technology"); DeploymentNode deploymentNode = model.addDeploymentNode("Deployment Node", "Description", "Technology"); ContainerInstance containerInstance = deploymentNode.add(container); deploymentView = views.createDeploymentView(softwareSystem, "deployment", "Description"); deploymentView.addAllDeploymentNodes(); assertEquals(2, deploymentView.getElements().size()); assertTrue(deploymentView.getElements().contains(new ElementView(deploymentNode))); assertTrue(deploymentView.getElements().contains(new ElementView(containerInstance))); }
@Test public void test_addAllDeploymentNodes_AddsDeploymentNodesAndContainerInstances_WhenThereAreChildDeploymentNodesWithContainerInstances() { SoftwareSystem softwareSystem = model.addSoftwareSystem("Software System", ""); Container container = softwareSystem.addContainer("Container", "Description", "Technology"); DeploymentNode deploymentNodeParent = model.addDeploymentNode("Deployment Node", "Description", "Technology"); DeploymentNode deploymentNodeChild = deploymentNodeParent.addDeploymentNode("Deployment Node", "Description", "Technology"); ContainerInstance containerInstance = deploymentNodeChild.add(container); deploymentView = views.createDeploymentView(softwareSystem, "deployment", "Description"); deploymentView.addAllDeploymentNodes(); assertEquals(3, deploymentView.getElements().size()); assertTrue(deploymentView.getElements().contains(new ElementView(deploymentNodeParent))); assertTrue(deploymentView.getElements().contains(new ElementView(deploymentNodeChild))); assertTrue(deploymentView.getElements().contains(new ElementView(containerInstance))); }
@Test public void test_addDeploymentNode_AddsTheParentToo() { SoftwareSystem softwareSystem = model.addSoftwareSystem("Software System", ""); Container container = softwareSystem.addContainer("Container", "Description", "Technology"); DeploymentNode deploymentNodeParent = model.addDeploymentNode("Deployment Node", "Description", "Technology"); DeploymentNode deploymentNodeChild = deploymentNodeParent.addDeploymentNode("Deployment Node", "Description", "Technology"); ContainerInstance containerInstance = deploymentNodeChild.add(container); deploymentView = views.createDeploymentView(softwareSystem, "deployment", "Description"); deploymentView.add(deploymentNodeChild); assertEquals(3, deploymentView.getElements().size()); assertTrue(deploymentView.getElements().contains(new ElementView(deploymentNodeParent))); assertTrue(deploymentView.getElements().contains(new ElementView(deploymentNodeChild))); assertTrue(deploymentView.getElements().contains(new ElementView(containerInstance))); }
@Test public void test_addAllDeploymentNodes_DoesNothing_WhenThereAreTopLevelDeploymentNodesButNoContainerInstances() { deploymentView = views.createDeploymentView("deployment", "Description"); model.addDeploymentNode("Deployment Node", "Description", "Technology"); deploymentView.addAllDeploymentNodes(); assertEquals(0, deploymentView.getElements().size()); }
@Test public void test_copyLayoutInformationFrom_DoesNotDoAnythingIfThereIsNoDeploymentViewToCopyInformationFrom() { Workspace workspace1 = createWorkspace(); Workspace workspace2 = createWorkspace(); DeploymentNode deploymentNode2 = workspace2.getModel().getDeploymentNodeWithName("Deployment Node"); DeploymentView view2 = workspace2.getViews().createDeploymentView("key", "Description"); view2.add(deploymentNode2); workspace2.getViews().copyLayoutInformationFrom(workspace1.getViews()); assertEquals(0, view2.getElements().stream().filter(ev -> ev.getElement() instanceof ContainerInstance).findFirst().get().getX()); // default assertEquals(0, view2.getElements().stream().filter(ev -> ev.getElement() instanceof ContainerInstance).findFirst().get().getY()); // default assertNull(view2.getPaperSize()); // default }
@Test public void test_copyLayoutInformationFrom_WhenTheDeploymentViewKeysMatch() { Workspace workspace1 = createWorkspace(); DeploymentNode deploymentNode1 = workspace1.getModel().getDeploymentNodeWithName("Deployment Node"); DeploymentView view1 = workspace1.getViews().createDeploymentView("key", "Description"); view1.add(deploymentNode1); view1.getElements().stream().filter(ev -> ev.getElement() instanceof ContainerInstance).findFirst().get().setX(100); view1.getElements().stream().filter(ev -> ev.getElement() instanceof ContainerInstance).findFirst().get().setY(200); view1.setPaperSize(PaperSize.A3_Landscape); Workspace workspace2 = createWorkspace(); DeploymentNode deploymentNode2 = workspace2.getModel().getDeploymentNodeWithName("Deployment Node"); DeploymentView view2 = workspace2.getViews().createDeploymentView("key", "Description"); view2.add(deploymentNode2); workspace2.getViews().copyLayoutInformationFrom(workspace1.getViews()); assertEquals(100, view2.getElements().stream().filter(ev -> ev.getElement() instanceof ContainerInstance).findFirst().get().getX()); assertEquals(200, view2.getElements().stream().filter(ev -> ev.getElement() instanceof ContainerInstance).findFirst().get().getY()); assertEquals(PaperSize.A3_Landscape, view2.getPaperSize()); }
@Test public void test_addAllDeploymentNodes_AddsDeploymentNodesAndContainerInstancesOnlyForTheSoftwareSystemInScope() { SoftwareSystem softwareSystem1 = model.addSoftwareSystem("Software System 1", ""); Container container1 = softwareSystem1.addContainer("Container 1", "Description", "Technology"); DeploymentNode deploymentNode1 = model.addDeploymentNode("Deployment Node 1", "Description", "Technology"); ContainerInstance containerInstance1 = deploymentNode1.add(container1); SoftwareSystem softwareSystem2 = model.addSoftwareSystem("Software System 2", ""); Container container2 = softwareSystem2.addContainer("Container 2", "Description", "Technology"); DeploymentNode deploymentNode2 = model.addDeploymentNode("Deployment Node 2", "Description", "Technology"); ContainerInstance containerInstance2 = deploymentNode2.add(container2); // two containers from different software systems on the same deployment node deploymentNode1.add(container2); deploymentView = views.createDeploymentView(softwareSystem1, "deployment", "Description"); deploymentView.addAllDeploymentNodes(); assertEquals(2, deploymentView.getElements().size()); assertTrue(deploymentView.getElements().contains(new ElementView(deploymentNode1))); assertTrue(deploymentView.getElements().contains(new ElementView(containerInstance1))); }