private void findElementsToShow(Element startingElement, Element element, Set<Element> elementsToShow, Set<Element> elementsVisited) { if (!elementsVisited.contains(element) && getElements().contains(new ElementView(element))) { elementsVisited.add(element); elementsToShow.add(element); // check that we've not gone back to the starting point of the graph if (!element.hasEfferentRelationshipWith(startingElement)) { element.getRelationships().forEach(r -> findElementsToShow(startingElement, r.getDestination(), elementsToShow, elementsVisited)); } } }
private HashSet<ElementView> elementViewsFor(Element... elements) { HashSet<ElementView> set = new HashSet<>(); for (Element element : elements) { ElementView elementView = new ElementView(); elementView.setId(element.getId()); set.add(elementView); } return set; }
@Test public void test_addAllSoftwareSystems_AddsAllSoftwareSystems_WhenThereAreSomeSoftwareSystemsInTheModel() { SoftwareSystem softwareSystemA = model.addSoftwareSystem(Location.External, "System A", "Description"); SoftwareSystem softwareSystemB = model.addSoftwareSystem(Location.External, "System B", "Description"); view.addAllSoftwareSystems(); assertEquals(3, view.getElements().size()); assertTrue(view.getElements().contains(new ElementView(softwareSystem))); assertTrue(view.getElements().contains(new ElementView(softwareSystemA))); assertTrue(view.getElements().contains(new ElementView(softwareSystemB))); }
@Test public void test_addAllElements_AddsAllSoftwareSystemsAndPeople_WhenThereAreSomeSoftwareSystemsAndPeopleInTheModel() { SoftwareSystem softwareSystem = model.addSoftwareSystem("Software System", "Description"); Person person = model.addPerson("Person", "Description"); view.addAllElements(); assertEquals(2, view.getElements().size()); assertTrue(view.getElements().contains(new ElementView(softwareSystem))); assertTrue(view.getElements().contains(new ElementView(person))); }
@Test public void test_addAllComponents_AddsAllComponents_WhenThereAreSomeComponents() { Component componentA = webApplication.addComponent("Component A", "Does something", "Java"); Component componentB = webApplication.addComponent("Component B", "Does something", "Java"); view.addAllComponents(); assertEquals(2, view.getElements().size()); assertTrue(view.getElements().contains(new ElementView(componentA))); assertTrue(view.getElements().contains(new ElementView(componentB))); }
@Test public void test_addAllSoftwareSystems_AddsAllSoftwareSystems_WhenThereAreSomeSoftwareSystemsInTheModel() { SoftwareSystem softwareSystemA = model.addSoftwareSystem(Location.External, "System A", "Description"); SoftwareSystem softwareSystemB = model.addSoftwareSystem(Location.External, "System B", "Description"); view.addAllSoftwareSystems(); assertEquals(2, view.getElements().size()); assertTrue(view.getElements().contains(new ElementView(softwareSystemA))); assertTrue(view.getElements().contains(new ElementView(softwareSystemB))); }
@Test public void test_addAllSoftwareSystems_AddsAllSoftwareSystems_WhenThereAreSomeSoftwareSystemsInTheModel() { SoftwareSystem softwareSystemA = model.addSoftwareSystem(Location.External, "System A", "Description"); SoftwareSystem softwareSystemB = model.addSoftwareSystem(Location.External, "System B", "Description"); view.addAllSoftwareSystems(); assertEquals(2, view.getElements().size()); assertTrue(view.getElements().contains(new ElementView(softwareSystemA))); assertTrue(view.getElements().contains(new ElementView(softwareSystemB))); }
@Test public void test_addAllContainers_AddsAllContainers_WhenThereAreSomeContainers() { Container database = softwareSystem.addContainer("Database", "Stores something", "MySQL"); Container fileSystem = softwareSystem.addContainer("File System", "Stores something else", ""); view.addAllContainers(); assertEquals(2, view.getElements().size()); assertTrue(view.getElements().contains(new ElementView(database))); assertTrue(view.getElements().contains(new ElementView(fileSystem))); }
@Test public void test_addAllContainers_AddsAllContainers_WhenThereAreSomeContainers() { Container webApplication = softwareSystem.addContainer("Web Application", "Does something", "Apache Tomcat"); Container database = softwareSystem.addContainer("Database", "Does something", "MySQL"); view.addAllContainers(); assertEquals(2, view.getElements().size()); assertTrue(view.getElements().contains(new ElementView(webApplication))); assertTrue(view.getElements().contains(new ElementView(database))); }
@Test public void test_addAllSoftwareSystems_AddsAllSoftwareSystems_WhenThereAreSomeSoftwareSystemsInTheModel() { SoftwareSystem softwareSystemA = model.addSoftwareSystem(Location.External, "System A", "Description"); SoftwareSystem softwareSystemB = model.addSoftwareSystem(Location.External, "System B", "Description"); view.addAllSoftwareSystems(); assertEquals(2, view.getElements().size()); assertTrue(view.getElements().contains(new ElementView(softwareSystemA))); assertTrue(view.getElements().contains(new ElementView(softwareSystemB))); }
@Test public void test_addAllPeople_AddsAllPeople_WhenThereAreSomePeopleInTheModel() { Person userA = model.addPerson(Location.External, "User A", "Description"); Person userB = model.addPerson(Location.External, "User B", "Description"); view.addAllPeople(); assertEquals(2, view.getElements().size()); assertTrue(view.getElements().contains(new ElementView(userA))); assertTrue(view.getElements().contains(new ElementView(userB))); }
@Test public void test_remove_DoesNothing_WhenTheContainerIsNotInTheView() { Container database = softwareSystem.addContainer("Database", "Stores something", "MySQL"); Container fileSystem = softwareSystem.addContainer("File System", "Stores something else", ""); view.add(database); assertEquals(1, view.getElements().size()); assertTrue(view.getElements().contains(new ElementView(database))); view.remove(fileSystem); assertEquals(1, view.getElements().size()); assertTrue(view.getElements().contains(new ElementView(database))); }
@Test public void test_remove_DoesNothing_WhenTheComponentIsNotInTheView() { Component componentA = webApplication.addComponent("Component A", "Does something", "Java"); Component componentB = webApplication.addComponent("Component B", "Does something", "Java"); view.add(componentA); assertEquals(1, view.getElements().size()); assertTrue(view.getElements().contains(new ElementView(componentA))); view.remove(componentB); assertEquals(1, view.getElements().size()); assertTrue(view.getElements().contains(new ElementView(componentA))); }
@Test public void test_add_AddsTheContainer_WhenTheContainerIsNoInTheViewAlready() { Container database = softwareSystem.addContainer("Database", "Stores something", "MySQL"); assertEquals(0, view.getElements().size()); view.add(database); assertEquals(1, view.getElements().size()); assertTrue(view.getElements().contains(new ElementView(database))); }
@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_add_AddsTheComponent_WhenTheComponentIsNotInTheViewAlready() { Component componentA = webApplication.addComponent("Component A", "Does something", "Java"); assertEquals(0, view.getElements().size()); view.add(componentA); assertEquals(1, view.getElements().size()); assertTrue(view.getElements().contains(new ElementView(componentA))); }
@Test public void test_remove_RemovesTheComponent_WhenTheComponentIsInTheView() { Component componentA = webApplication.addComponent("Component A", "Does something", "Java"); view.add(componentA); assertEquals(1, view.getElements().size()); assertTrue(view.getElements().contains(new ElementView(componentA))); view.remove(componentA); assertEquals(0, view.getElements().size()); }
@Test public void test_add_DoesNothing_WhenTheSpecifiedContainerIsAlreadyInTheView() { Container database = softwareSystem.addContainer("Database", "Stores something", "MySQL"); view.add(database); assertEquals(1, view.getElements().size()); assertTrue(view.getElements().contains(new ElementView(database))); view.add(database); assertEquals(1, view.getElements().size()); }
@Test public void test_remove_RemovesTheContainer_WhenTheContainerIsInTheView() { Container database = softwareSystem.addContainer("Database", "Stores something", "MySQL"); view.add(database); assertEquals(1, view.getElements().size()); assertTrue(view.getElements().contains(new ElementView(database))); view.remove(database); assertEquals(0, view.getElements().size()); }
@Test public void test_remove_RemovesContainer() { Container webApplication = softwareSystem.addContainer("Web Application", "", ""); Container database = softwareSystem.addContainer("Database", "", ""); view.addAllContainers(); assertEquals(2, view.getElements().size()); view.remove(webApplication); assertEquals(1, view.getElements().size()); assertTrue(view.getElements().contains(new ElementView(database))); }