ConfigurationManagerImpl implements ConfigurationManager { @Override public boolean addNode(final RootNode rootNode, final ConfigurationNode node) throws IOException { boolean saved = false; List<ConfigurationNode> nodes = getNodes(rootNode); if (nodes.stream().noneMatch(node::equals)) { nodes.add(node); save(); saved = true; } return saved; } @Inject  ConfigurationManagerImpl(ConfigurationDao configurationDao); @Override List<ConfigurationNode> getNodes(final RootNode rootNode); @Override ConfigurationNode getNode(final RootNode rootNode, final String nodeId); @Override Optional<ConfigurationNode> findNode(final RootNode rootNode, final String excludedNodeId, final String label, final String path); @Override boolean addNode(final RootNode rootNode, final ConfigurationNode node); @Override Optional<ConfigurationNode> editNode(final RootNode rootNode, final String nodeId, final String label, final String path); @Override void save(); @Override ConfigurationNode removeNode(final String nodeId, final RootNode rootNode); @Override T getParameter(final ConfigurationParameter<T> parameter); @Override void setParameter(final ConfigurationParameter<T> parameter, final T value);  }
@Test public void testAddNode() throws IOException { ConfigurationDao configurationDao = createMock(ConfigurationDao.class); ConfigurationNode configurationNode = new ConfigurationNode("nodeId", "label", "path"); expect(configurationDao.getNodes(eq(ROOT))).andReturn(new ArrayList<>(0)); configurationDao.save(); expectLastCall(); replay(configurationDao); ConfigurationManager configurationManager = new ConfigurationManagerImpl(configurationDao); configurationManager.addNode(ROOT, configurationNode); verify(configurationDao); }