### Question:
ClientBPMNDocumentationService implements BPMNDocumentationService { @Override public DocumentationOutput generate(Diagram diagram) { return Optional.ofNullable(diagram) .map(this::processDocumentation) .map(d -> buildDocumentation(getDocumentationTemplate(), d)) .orElse(DocumentationOutput.EMPTY); } @Inject  ClientBPMNDocumentationService(final ClientMustacheTemplateRenderer mustacheTemplateRenderer,
                                          final DefinitionManager definitionManager,
                                          final DefinitionUtils definitionUtils,
                                          final BPMNShapeFactory shapeFactory,
                                          final CanvasFileExport canvasFileExport,
                                          final SessionManager sessionManager,
                                          final BPMNCategoryDefinitionProvider categoryDefinitionProvider,
                                          final DOMGlyphRenderers glyphRenderer,
                                          final ClientTranslationService translationService,
                                          final @Default ManagedInstance<WorkItemDefinitionRegistry> workItemDefinitionRegistry,
                                          final PropertyDecorators propertyDecorators

    ); @Override BPMNDocumentation processDocumentation(Diagram diagram); @Override HTMLDocumentationTemplate getDocumentationTemplate(); @Override DocumentationOutput buildDocumentation(HTMLDocumentationTemplate template, BPMNDocumentation diagramDocumentation); @Override DocumentationOutput generate(Diagram diagram); static final int ICON_HEIGHT; static final int ICON_WIDTH; }### Answer:
@Test public void generate() { final DocumentationOutput documentationOutput = tested.generate(diagram); assertEquals(RENDERED_DOC, documentationOutput.getValue()); }