/** * Adds an individual component to this view, including relationships to/from that component. * * @param component the Component to add */ public void add(Component component) { add(component, true); }
componentView.addAllComponents(); componentView.addAllPeople(); componentView.add(relationalDatabase);
componentView.addAllComponents(); componentView.addAllPeople(); componentView.add(relationalDatabase);
/** * Adds an individual container to this view, including relationships to/from that container. * * @param container the Container to add */ public void add(Container container) { add(container, true); }
/** * Adds the specified software system, including relationships to/from that software system. * Please note that the parent software system of the container in scope cannot be added to this view. * * @param softwareSystem the SoftwareSystem to add to this view */ @Override public void add(@Nonnull SoftwareSystem softwareSystem) { add(softwareSystem, true); }
@Test public void test_add_DoesNothing_WhenTheContainerOfTheViewIsAdded() { assertEquals("the container itself is not added to the view", 0, view.getElements().stream().map(e -> e.getElement()).filter(e -> e.equals(webApplication)).count()); view.add(webApplication); assertEquals("the container itself is not added to the view", 0, view.getElements().stream().map(e -> e.getElement()).filter(e -> e.equals(webApplication)).count()); }
@Test public void test_add_DoesNothing_WhenANullContainerIsSpecified() { assertEquals(0, view.getElements().size()); view.add((Container) null); assertEquals(0, view.getElements().size()); }
@Test public void test_add_DoesNothing_WhenANullComponentIsSpecified() { assertEquals(0, view.getElements().size()); view.add((Component) null); 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_add_DoesNothing_WhenTheSpecifiedComponentIsAlreadyInTheView() { 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.add(componentA); assertEquals(1, view.getElements().size()); }
@Test public void test_add_DoesNothing_WhenTheContainerOfTheViewIsAddedViaDependency() { final SoftwareSystem softwareSystem = model.addSoftwareSystem(Location.External, "Some other system", "external system that uses our web application"); final Relationship relationshipFromExternalSystem = softwareSystem.uses(webApplication, ""); assertEquals("the container itself is not added to the view", 0, view.getElements().stream().map(e -> e.getElement()).filter(e -> e.equals(webApplication)).count()); view.add(relationshipFromExternalSystem); assertEquals("the container itself is not added to the view", 0, view.getElements().stream().map(e -> e.getElement()).filter(e -> e.equals(webApplication)).count()); }
@Test public void test_remove_RemovesTheComponentAndRelationships_WhenTheComponentIsInTheViewAndHasArelationshipToAnotherElement() { Component componentA = webApplication.addComponent("Component A", "Does something", "Java"); Component componentB = webApplication.addComponent("Component B", "Does something", "Java"); componentA.uses(componentB, "uses"); view.add(componentA); view.add(componentB); assertEquals(2, view.getElements().size()); assertEquals(1, view.getRelationships().size()); view.remove(componentB); assertEquals(1, view.getElements().size()); assertEquals(0, view.getRelationships().size()); }
@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_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_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_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_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_add_ThrowsAnException_WhenTheSpecifiedComponentIsInADifferentContainer() { try { SoftwareSystem softwareSystemA = model.addSoftwareSystem("System A", "Description"); final Container containerA1 = softwareSystemA.addContainer("Container A1", "Description", "Tec"); final Container containerA2 = softwareSystemA.addContainer("Container A2", "Description", "Tec"); final Component componentA2_1 = containerA2.addComponent("Component A2-1", "Description"); view = new ComponentView(containerA1, "components", "Description"); view.add(componentA2_1); } catch (Exception e) { assertEquals("Only components belonging to Container A1 can be added to this view.", e.getMessage()); } }
@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))); }