### Question:
DMNDocumentationDRDsFactory { public List<DMNDocumentationDRD> create(final Diagram diagram) { final Optional<String> previousNodeUUID = getExpressionContainerGrid().getNodeUUID(); final List<DMNDocumentationDRD> drds = createDMNDocumentationDRDs(diagram); previousNodeUUID.ifPresent(uuid -> setExpressionContainerGrid(diagram, uuid)); return drds; } @Inject  DMNDocumentationDRDsFactory(final SessionManager sessionManager,
                                       final BoxedExpressionHelper expressionHelper); List<DMNDocumentationDRD> create(final Diagram diagram);  }### Answer:
@Test public void testCreate() { final String nodeUUID1 = "1111-1111-1111-1111"; final String nodeUUID2 = "2222-2222-2222-2222"; final Node<View, Edge> node1 = new NodeImpl<>(nodeUUID1); final Node<View, Edge> node2 = new NodeImpl<>(nodeUUID2); final View view1 = mock(View.class); final View view2 = mock(View.class); final HasExpression hasExpression1 = mock(HasExpression.class); final List<Node<View, Edge>> nodes = asList(node1, node2); final Decision drgElement1 = new Decision(); final InputData drgElement2 = new InputData(); final String name1 = "Decision-1"; final String name2 = "Input-data-2"; final String description1 = "Description..."; final InformationItemPrimary variable1 = new InformationItemPrimary(); final QName typeRef1 = BOOLEAN.asQName(); final String image1 = "<image1>"; final DMNExternalLink externalLink = new DMNExternalLink(); final DocumentationLinksHolder linksHolder = new DocumentationLinksHolder(); linksHolder.getValue().addLink(externalLink); drgElement2.setLinksHolder(linksHolder); node1.setContent(view1); node2.setContent(view2); when(view1.getDefinition()).thenReturn(drgElement1); when(view2.getDefinition()).thenReturn(drgElement2); when(expressionHelper.getOptionalHasExpression(node1)).thenReturn(Optional.ofNullable(hasExpression1)); when(expressionHelper.getOptionalHasExpression(node2)).thenReturn(Optional.empty()); when(expressionContainerGrid.getNodeUUID()).thenReturn(Optional.of(nodeUUID2)); when(graph.nodes()).thenReturn(nodes); doReturn(image1).when(factory).getNodeImage(diagram, node1); doNothing().when(factory).setExpressionContainerGrid(any(), any()); variable1.setTypeRef(typeRef1); drgElement1.setVariable(variable1); drgElement1.setDescription(new Description(description1)); drgElement1.setName(new Name(name1)); drgElement2.setName(new Name(name2)); final List<DMNDocumentationDRD> drds = factory.create(diagram); final DMNDocumentationDRD documentationDRD1 = drds.get(0); final DMNDocumentationDRD documentationDRD2 = drds.get(1); assertEquals(2, drds.size()); assertEquals(name1, documentationDRD1.getDrdName()); assertEquals(BOOLEAN.getName(), documentationDRD1.getDrdType()); assertEquals(description1, documentationDRD1.getDrdDescription()); assertEquals(image1, documentationDRD1.getDrdBoxedExpressionImage()); assertEquals(NONE, documentationDRD2.getDrdDescription()); assertEquals(UNDEFINED.getName(), documentationDRD2.getDrdType()); assertEquals(name2, documentationDRD2.getDrdName()); assertEquals(NONE, documentationDRD2.getDrdBoxedExpressionImage()); assertFalse(documentationDRD1.getHasExternalLinks()); assertTrue(documentationDRD2.getHasExternalLinks()); verify(factory).setExpressionContainerGrid(diagram, nodeUUID2); }