@Override public void register(Asciidoctor asciidoctor) { asciidoctor.javaExtensionRegistry() .preprocessor(new DefaultAttributesPreprocessor()); asciidoctor.rubyExtensionRegistry() .loadClass(RestDocsExtensionRegistry.class .getResourceAsStream("/extensions/operation_block_macro.rb")) .blockMacro("operation", "OperationBlockMacro"); }
@Test public void snippetsAttributeFromDocumentPreambleIsNotOverridden() { Options options = new Options(); options.setAttributes(new Attributes("projectdir=../../..")); String converted = Asciidoctor.Factory.create() .convert(":snippets: custom\n{snippets}", options); assertThat(converted).contains("custom"); }
private File configurePdfOutput() { this.options.setBackend("pdf"); File output = new File("build/output.pdf"); this.options.setToFile(output.getAbsolutePath()); return output; }
@Test public void codeBlockSnippetInclude() throws Exception { String result = this.asciidoctor.convert( "operation::some-operation[snippets='curl-request']", this.options); assertThat(result).isEqualTo(getExpectedContentFromFile("snippet-simple")); }
@Test public void operationWithParameterizedName() throws Exception { Attributes attributes = getAttributes(); attributes.setAttribute("name", "some"); this.options.setAttributes(attributes); String result = this.asciidoctor.convert( "operation::{name}-operation[snippets='curl-request']", this.options); assertThat(result).isEqualTo(getExpectedContentFromFile("snippet-simple")); }
private Attributes getAttributes() { Attributes attributes = new Attributes(); attributes.setAttribute("projectdir", new File(".").getAbsolutePath()); return attributes; }
@Before public void setUp() { this.options.setAttributes(getAttributes()); }
private void processAsciiDoc(ParserContext context) { Options options = getAsciiDocOptionsAndAttributes(context); final Asciidoctor asciidoctor = getEngine(options); context.setBody(asciidoctor.render(context.getBody(), options)); }
@Test public void snippetsAttributeIsSet() { Options options = new Options(); options.setAttributes(new Attributes("projectdir=../../..")); String converted = Asciidoctor.Factory.create().convert("{snippets}", options); assertThat(converted) .contains("build" + File.separatorChar + "generated-snippets"); }
@Test public void tableSnippetInclude() throws Exception { String result = this.asciidoctor.convert( "operation::some-operation[snippets='response-fields']", this.options); assertThat(result).isEqualTo(getExpectedContentFromFile("snippet-table")); }
@Test public void snippetsAttributeFromConvertArgumentIsNotOverridden() { Options options = new Options(); options.setAttributes(new Attributes("snippets=custom projectdir=../../..")); String converted = Asciidoctor.Factory.create().convert("{snippets}", options); assertThat(converted).contains("custom"); }
@Test public void includeMultipleSnippets() throws Exception { String result = this.asciidoctor.convert( "operation::some-operation[snippets='curl-request,http-request']", this.options); assertThat(result).isEqualTo(getExpectedContentFromFile("multiple-snippets")); }
@Test public void titleOfBuiltInSnippetCanBeCustomizedUsingDocumentAttribute() throws URISyntaxException, IOException { String result = this.asciidoctor.convert( ":operation-curl-request-title: Example request\n" + "operation::some-operation[snippets='curl-request']", this.options); assertThat(result) .isEqualTo(getExpectedContentFromFile("built-in-snippet-custom-title")); }
@Test public void titleOfCustomSnippetCanBeCustomizedUsingDocumentAttribute() throws Exception { String result = this.asciidoctor.convert( ":operation-custom-snippet-title: Customized title\n" + "operation::some-operation[snippets='custom-snippet']", this.options); assertThat(result) .isEqualTo(getExpectedContentFromFile("custom-snippet-custom-title")); }
@Test public void includeSnippetInSection() throws Exception { String result = this.asciidoctor.convert( "== Section\n" + "operation::some-operation[snippets='curl-request']", this.options); assertThat(result).isEqualTo(getExpectedContentFromFile("snippet-in-section")); }
@Test public void useMacroWithEmptySnippetAttributeAddsAllSnippets() throws Exception { String result = this.asciidoctor.convert("operation::some-operation[snippets=]", this.options); assertThat(result).isEqualTo(getExpectedContentFromFile("all-snippets")); }
@Test public void defaultTitleIsProvidedForCustomSnippet() throws Exception { String result = this.asciidoctor.convert( "operation::some-operation[snippets='custom-snippet']", this.options); assertThat(result) .isEqualTo(getExpectedContentFromFile("custom-snippet-default-title")); }
@Test public void includeSnippetInSectionWithPdfBackend() throws Exception { File output = configurePdfOutput(); this.asciidoctor.convert( "== Section\n" + "operation::some-operation[snippets='curl-request']", this.options); assertThat(extractStrings(output)).containsExactly("Section", "Curl request", "$ curl 'http://localhost:8080/' -i", "1"); }
@Test public void codeBlockSnippetIncludeWithPdfBackend() throws Exception { File output = configurePdfOutput(); this.asciidoctor.convert("operation::some-operation[snippets='curl-request']", this.options); assertThat(extractStrings(output)).containsExactly("Curl request", "$ curl 'http://localhost:8080/' -i", "1"); }
@Test public void tableSnippetIncludeWithPdfBackend() throws Exception { File output = configurePdfOutput(); this.asciidoctor.convert("operation::some-operation[snippets='response-fields']", this.options); assertThat(extractStrings(output)).containsExactly("Response fields", "Path", "Type", "Description", "a", "Object", "one", "a.b", "Number", "two", "a.c", "String", "three", "1"); }