diff --git a/build.gradle.kts b/build.gradle.kts index e41bf4b..01d44b3 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -8,7 +8,7 @@ buildscript { repositories { maven { - setUrl("https://repository.elex-project.com/repository/maven") + setUrl("https://repo.elex-project.com/repository/maven") } } dependencies { diff --git a/buildSrc/src/main/kotlin/elex-base.gradle.kts b/buildSrc/src/main/kotlin/elex-base.gradle.kts index b0181a6..c01954b 100644 --- a/buildSrc/src/main/kotlin/elex-base.gradle.kts +++ b/buildSrc/src/main/kotlin/elex-base.gradle.kts @@ -17,7 +17,7 @@ description = "Examples: Spring-boot" repositories { maven { - url = uri("https://repository.elex-project.com/repository/maven") + url = uri("https://repo.elex-project.com/repository/maven") } } diff --git a/rest-doc/build.gradle.kts b/rest-doc/build.gradle.kts index 1d0da04..61b73e6 100644 --- a/rest-doc/build.gradle.kts +++ b/rest-doc/build.gradle.kts @@ -13,12 +13,22 @@ plugins { id("org.asciidoctor.jvm.convert") version "3.3.0" } + +//var snippetsDir = file("build/generated-snippets") + +tasks.test { + //outputs.dir(snippetsDir) + useJUnitPlatform() +} tasks.asciidoctor { - setSourceDir(File("src/main/asciidoc")) + //inputs.dir(snippetsDir) + dependsOn("test") + //setSourceDir(File("src/main/asciidoc")) attributes(mapOf( - "snippets" to "target/snippets" + "snippets" to "build/generated-snippets" )) } + dependencies { implementation("org.springframework.boot:spring-boot-starter-web") implementation("org.springframework.boot:spring-boot-starter-mustache") diff --git a/rest-doc/src/main/asciidoc/index.adoc b/rest-doc/src/doc/asciidoc/index.adoc similarity index 64% rename from rest-doc/src/main/asciidoc/index.adoc rename to rest-doc/src/doc/asciidoc/index.adoc index cf1db79..5f5e334 100644 --- a/rest-doc/src/main/asciidoc/index.adoc +++ b/rest-doc/src/doc/asciidoc/index.adoc @@ -2,10 +2,19 @@ This is an example output for a service running at http://localhost:8080: +== path parameters + +include::{snippets}/home/path-parameters.adoc[] + +== response fields +include::{snippets}/home/response-fields.adoc[] + .request + include::{snippets}/home/http-request.adoc[] .response include::{snippets}/home/http-response.adoc[] -As you can see the format is very simple, and in fact you always get the same message. + +As you can see the format is very simple, and in fact you always get the same message. \ No newline at end of file diff --git a/rest-doc/src/doc/asciidoc/index.html b/rest-doc/src/doc/asciidoc/index.html new file mode 100644 index 0000000..f10a1d1 --- /dev/null +++ b/rest-doc/src/doc/asciidoc/index.html @@ -0,0 +1,533 @@ + + + + + + + +Getting Started With Spring REST Docs + + + + + +
+
+
+
+

This is an example output for a service running at http://localhost:8080:

+
+
+
+
+

path parameters

+
+ + ++++ + + + + + + + + + + + + +
Table 1. /name/{name}
ParameterDescription

name

Name…​

+
+
+
+

response fields

+
+ +++++ + + + + + + + + + + + + + + + + + + + +
PathTypeDescription

name

String

Name…​

age

Number

Age…​

+
+
request
+
+
GET /name/Charlie HTTP/1.1
+Host: localhost:8080
+
+
+
+
response
+
+
HTTP/1.1 200 OK
+Content-Type: application/json
+Content-Length: 27
+
+{"name":"Charlie","age":11}
+
+
+
+

As you can see the format is very simple, and in fact you always get the same message.

+
+
+
+
+ + + \ No newline at end of file diff --git a/rest-doc/src/main/java/kr/pe/elex/examples/MyService.java b/rest-doc/src/main/java/kr/pe/elex/examples/MyService.java index 5d2ece5..2b84498 100644 --- a/rest-doc/src/main/java/kr/pe/elex/examples/MyService.java +++ b/rest-doc/src/main/java/kr/pe/elex/examples/MyService.java @@ -16,6 +16,7 @@ public class MyService { private void init() { data = new HashSet<>(); data.add(new Person("Charlie", 11)); + data.add(new Person("Steve", 23)); } public Person getPerson(String name) { diff --git a/rest-doc/src/test/java/kr/pe/elex/examples/WebLayerTest.java b/rest-doc/src/test/java/kr/pe/elex/examples/WebLayerTest.java index 724e458..ed382af 100644 --- a/rest-doc/src/test/java/kr/pe/elex/examples/WebLayerTest.java +++ b/rest-doc/src/test/java/kr/pe/elex/examples/WebLayerTest.java @@ -7,20 +7,24 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.autoconfigure.restdocs.AutoConfigureRestDocs; import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest; import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.restdocs.mockmvc.RestDocumentationRequestBuilders; import org.springframework.test.web.servlet.MockMvc; import org.springframework.test.web.servlet.RequestBuilder; +import org.springframework.test.web.servlet.request.MockMvcRequestBuilders; import java.util.HashSet; import java.util.Set; import static org.springframework.restdocs.mockmvc.MockMvcRestDocumentation.document; import static org.springframework.restdocs.payload.PayloadDocumentation.*; +import static org.springframework.restdocs.request.RequestDocumentation.parameterWithName; +import static org.springframework.restdocs.request.RequestDocumentation.pathParameters; import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get; import static org.springframework.test.web.servlet.result.MockMvcResultHandlers.print; import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; @WebMvcTest(MyController.class) -@AutoConfigureRestDocs(outputDir = "target/snippets") +@AutoConfigureRestDocs(outputDir = "build/generated-snippets") public class WebLayerTest { @Autowired private MockMvc mockMvc; @@ -28,12 +32,16 @@ public class WebLayerTest { @Test public void defaultPage() throws Exception { this.mockMvc.perform( - get("/name/{name}", "Charlie")) - .andDo(print()) + RestDocumentationRequestBuilders.get("/name/{name}", "Charlie")) .andExpect(status().isOk()) + .andDo(print()) .andDo(document("home", - responseFields(fieldWithPath("name").description("Name..."), - fieldWithPath("age").description("Age...")) + pathParameters(parameterWithName("name") + .description("Name...")), + responseFields(fieldWithPath("name") + .description("Name..."), + fieldWithPath("age") + .description("Age...")) )); } } diff --git a/rest-doc/target/snippets/home/curl-request.adoc b/rest-doc/target/snippets/home/curl-request.adoc deleted file mode 100644 index 9ce98ca..0000000 --- a/rest-doc/target/snippets/home/curl-request.adoc +++ /dev/null @@ -1,4 +0,0 @@ -[source,bash] ----- -$ curl 'http://localhost:8080/name/Charlie' -i -X GET ----- \ No newline at end of file diff --git a/rest-doc/target/snippets/home/http-request.adoc b/rest-doc/target/snippets/home/http-request.adoc deleted file mode 100644 index 64b7113..0000000 --- a/rest-doc/target/snippets/home/http-request.adoc +++ /dev/null @@ -1,6 +0,0 @@ -[source,http,options="nowrap"] ----- -GET /name/Charlie HTTP/1.1 -Host: localhost:8080 - ----- \ No newline at end of file diff --git a/rest-doc/target/snippets/home/http-response.adoc b/rest-doc/target/snippets/home/http-response.adoc deleted file mode 100644 index 35dbc1f..0000000 --- a/rest-doc/target/snippets/home/http-response.adoc +++ /dev/null @@ -1,8 +0,0 @@ -[source,http,options="nowrap"] ----- -HTTP/1.1 200 OK -Content-Type: application/json -Content-Length: 27 - -{"name":"Charlie","age":11} ----- \ No newline at end of file diff --git a/rest-doc/target/snippets/home/httpie-request.adoc b/rest-doc/target/snippets/home/httpie-request.adoc deleted file mode 100644 index 92ef349..0000000 --- a/rest-doc/target/snippets/home/httpie-request.adoc +++ /dev/null @@ -1,4 +0,0 @@ -[source,bash] ----- -$ http GET 'http://localhost:8080/name/Charlie' ----- \ No newline at end of file diff --git a/rest-doc/target/snippets/home/request-body.adoc b/rest-doc/target/snippets/home/request-body.adoc deleted file mode 100644 index dab5f81..0000000 --- a/rest-doc/target/snippets/home/request-body.adoc +++ /dev/null @@ -1,4 +0,0 @@ -[source,options="nowrap"] ----- - ----- \ No newline at end of file diff --git a/rest-doc/target/snippets/home/response-body.adoc b/rest-doc/target/snippets/home/response-body.adoc deleted file mode 100644 index eb59f04..0000000 --- a/rest-doc/target/snippets/home/response-body.adoc +++ /dev/null @@ -1,4 +0,0 @@ -[source,options="nowrap"] ----- -{"name":"Charlie","age":11} ----- \ No newline at end of file diff --git a/rest-doc/target/snippets/home/response-fields.adoc b/rest-doc/target/snippets/home/response-fields.adoc deleted file mode 100644 index b55a8d9..0000000 --- a/rest-doc/target/snippets/home/response-fields.adoc +++ /dev/null @@ -1,12 +0,0 @@ -|=== -|Path|Type|Description - -|`+name+` -|`+String+` -|Name... - -|`+age+` -|`+Number+` -|Age... - -|=== \ No newline at end of file diff --git a/testing/src/test/java/kr/pe/elex/examples/ControllerTest2.java b/testing/src/test/java/kr/pe/elex/examples/ControllerTest2.java index d7184bc..8a9884a 100644 --- a/testing/src/test/java/kr/pe/elex/examples/ControllerTest2.java +++ b/testing/src/test/java/kr/pe/elex/examples/ControllerTest2.java @@ -7,6 +7,7 @@ package kr.pe.elex.examples; +import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.mockito.Mockito; @@ -35,7 +36,7 @@ class ControllerTest2 { private MyService service; @BeforeEach - void beforeAll() { + void beforeEach() { Mockito.when(service.sayHello()) .thenReturn("Hello, Mock"); } @@ -43,9 +44,9 @@ class ControllerTest2 { @Test void greetingsTest() throws Exception { this.mockMvc.perform(get("/greetings")) - .andDo(print()) .andExpect(status().isOk()) - .andExpect(content().string(containsString("Hello, Mock"))); + .andExpect(content().string(containsString("Hello, Mock"))) + .andDo(print()); } }