Merge branch '1.2.x'
This commit is contained in:
@@ -65,11 +65,12 @@ public final class StandardWriterResolver implements WriterResolver {
|
||||
@Override
|
||||
public Writer resolve(String operationName, String snippetName,
|
||||
RestDocumentationContext context) throws IOException {
|
||||
File outputFile = resolveFile(
|
||||
this.propertyPlaceholderHelper.replacePlaceholders(operationName,
|
||||
this.placeholderResolverFactory.create(context)),
|
||||
snippetName + "." + this.templateFormat.getFileExtension(), context);
|
||||
|
||||
PlaceholderResolver placeholderResolver = this.placeholderResolverFactory
|
||||
.create(context);
|
||||
String outputDirectory = replacePlaceholders(placeholderResolver, operationName);
|
||||
String fileName = replacePlaceholders(placeholderResolver, snippetName) + "."
|
||||
+ this.templateFormat.getFileExtension();
|
||||
File outputFile = resolveFile(outputDirectory, fileName, context);
|
||||
if (outputFile != null) {
|
||||
createDirectoriesIfNecessary(outputFile);
|
||||
return new OutputStreamWriter(new FileOutputStream(outputFile),
|
||||
@@ -80,6 +81,10 @@ public final class StandardWriterResolver implements WriterResolver {
|
||||
}
|
||||
}
|
||||
|
||||
private String replacePlaceholders(PlaceholderResolver resolver, String input) {
|
||||
return this.propertyPlaceholderHelper.replacePlaceholders(input, resolver);
|
||||
}
|
||||
|
||||
File resolveFile(String outputDirectory, String fileName,
|
||||
RestDocumentationContext context) {
|
||||
File outputFile = new File(outputDirectory, fileName);
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2014-2016 the original author or authors.
|
||||
* Copyright 2014-2017 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
@@ -17,14 +17,23 @@
|
||||
package org.springframework.restdocs.snippet;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.FileReader;
|
||||
import java.io.IOException;
|
||||
import java.io.Writer;
|
||||
|
||||
import org.junit.Rule;
|
||||
import org.junit.Test;
|
||||
import org.junit.rules.TemporaryFolder;
|
||||
|
||||
import org.springframework.restdocs.ManualRestDocumentation;
|
||||
import org.springframework.restdocs.RestDocumentationContext;
|
||||
import org.springframework.util.FileCopyUtils;
|
||||
import org.springframework.util.PropertyPlaceholderHelper.PlaceholderResolver;
|
||||
|
||||
import static org.hamcrest.CoreMatchers.equalTo;
|
||||
import static org.hamcrest.CoreMatchers.is;
|
||||
import static org.junit.Assert.assertThat;
|
||||
import static org.mockito.BDDMockito.given;
|
||||
import static org.mockito.Mockito.mock;
|
||||
import static org.springframework.restdocs.templates.TemplateFormats.asciidoctor;
|
||||
|
||||
@@ -35,6 +44,9 @@ import static org.springframework.restdocs.templates.TemplateFormats.asciidoctor
|
||||
*/
|
||||
public class StandardWriterResolverTests {
|
||||
|
||||
@Rule
|
||||
public final TemporaryFolder temp = new TemporaryFolder();
|
||||
|
||||
private final PlaceholderResolverFactory placeholderResolverFactory = mock(
|
||||
PlaceholderResolverFactory.class);
|
||||
|
||||
@@ -69,6 +81,30 @@ public class StandardWriterResolverTests {
|
||||
is(new File(absolutePath, "baz.txt")));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void placeholdersAreResolvedInOperationName() throws IOException {
|
||||
File outputDirectory = this.temp.newFolder();
|
||||
RestDocumentationContext context = createContext(
|
||||
outputDirectory.getAbsolutePath());
|
||||
PlaceholderResolver resolver = mock(PlaceholderResolver.class);
|
||||
given(resolver.resolvePlaceholder("a")).willReturn("alpha");
|
||||
given(this.placeholderResolverFactory.create(context)).willReturn(resolver);
|
||||
Writer writer = this.resolver.resolve("{a}", "bravo", context);
|
||||
assertSnippetLocation(writer, new File(outputDirectory, "alpha/bravo.adoc"));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void placeholdersAreResolvedInSnippetName() throws IOException {
|
||||
File outputDirectory = this.temp.newFolder();
|
||||
RestDocumentationContext context = createContext(
|
||||
outputDirectory.getAbsolutePath());
|
||||
PlaceholderResolver resolver = mock(PlaceholderResolver.class);
|
||||
given(resolver.resolvePlaceholder("b")).willReturn("bravo");
|
||||
given(this.placeholderResolverFactory.create(context)).willReturn(resolver);
|
||||
Writer writer = this.resolver.resolve("alpha", "{b}", context);
|
||||
assertSnippetLocation(writer, new File(outputDirectory, "alpha/bravo.adoc"));
|
||||
}
|
||||
|
||||
private RestDocumentationContext createContext(String outputDir) {
|
||||
ManualRestDocumentation manualRestDocumentation = new ManualRestDocumentation(
|
||||
outputDir);
|
||||
@@ -77,4 +113,13 @@ public class StandardWriterResolverTests {
|
||||
return context;
|
||||
}
|
||||
|
||||
private void assertSnippetLocation(Writer writer, File expectedLocation)
|
||||
throws IOException {
|
||||
writer.write("test");
|
||||
writer.flush();
|
||||
assertThat(expectedLocation.exists(), is(true));
|
||||
assertThat(FileCopyUtils.copyToString(new FileReader(expectedLocation)),
|
||||
is(equalTo("test")));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user