From fe72effe1f49f39ce2bcff62c712434afac75941 Mon Sep 17 00:00:00 2001 From: Gyumin Bae Date: Tue, 6 May 2025 01:08:33 +0900 Subject: [PATCH 1/5] Refactor package structure for test module --- .../mvc/{ => controller}/ComplexSampleController.kt | 2 +- .../sample/mvc/{ => controller}/ErrorController.kt | 2 +- .../mvc/{ => controller}/NestedSampleController.kt | 2 +- .../sample/mvc/{ => controller}/SampleController.kt | 2 +- .../mvc/{ => controller}/UnnestedSampleController.kt | 2 +- .../mvc/{ => controller}/UseCaseBindingController.kt | 2 +- .../sample/mvc/documentation/ComplexSampleDocs.kt | 2 +- .../sample/mvc/documentation/ErrorDocs.kt | 2 +- .../sample/mvc/documentation/NestedSampleDocs.kt | 2 +- .../sample/mvc/documentation/SampleDocs.kt | 2 +- .../sample/mvc/documentation/SnakeSampleDocs.kt | 2 +- .../sample/mvc/documentation/UnnestedSampleDocs.kt | 2 +- .../sample/mvc/documentation/UseCaseBindingDocs.kt | 4 ++-- .../reactive/{ => controller}/SampleController.kt | 12 ++++++++++-- .../sample/reactive/documentation/SampleDocs.kt | 2 +- .../sample/reactive/documentation/SnakeSampleDocs.kt | 2 +- 16 files changed, 26 insertions(+), 18 deletions(-) rename documentify-sample/mvc-sample/src/main/kotlin/io/github/bgmsound/documentify/sample/mvc/{ => controller}/ComplexSampleController.kt (92%) rename documentify-sample/mvc-sample/src/main/kotlin/io/github/bgmsound/documentify/sample/mvc/{ => controller}/ErrorController.kt (92%) rename documentify-sample/mvc-sample/src/main/kotlin/io/github/bgmsound/documentify/sample/mvc/{ => controller}/NestedSampleController.kt (94%) rename documentify-sample/mvc-sample/src/main/kotlin/io/github/bgmsound/documentify/sample/mvc/{ => controller}/SampleController.kt (94%) rename documentify-sample/mvc-sample/src/main/kotlin/io/github/bgmsound/documentify/sample/mvc/{ => controller}/UnnestedSampleController.kt (89%) rename documentify-sample/mvc-sample/src/main/kotlin/io/github/bgmsound/documentify/sample/mvc/{ => controller}/UseCaseBindingController.kt (91%) rename documentify-sample/reactive-sample/src/main/kotlin/io/github/bgmsound/documentify/sample/reactive/{ => controller}/SampleController.kt (65%) diff --git a/documentify-sample/mvc-sample/src/main/kotlin/io/github/bgmsound/documentify/sample/mvc/ComplexSampleController.kt b/documentify-sample/mvc-sample/src/main/kotlin/io/github/bgmsound/documentify/sample/mvc/controller/ComplexSampleController.kt similarity index 92% rename from documentify-sample/mvc-sample/src/main/kotlin/io/github/bgmsound/documentify/sample/mvc/ComplexSampleController.kt rename to documentify-sample/mvc-sample/src/main/kotlin/io/github/bgmsound/documentify/sample/mvc/controller/ComplexSampleController.kt index ec38c18..ad8a052 100644 --- a/documentify-sample/mvc-sample/src/main/kotlin/io/github/bgmsound/documentify/sample/mvc/ComplexSampleController.kt +++ b/documentify-sample/mvc-sample/src/main/kotlin/io/github/bgmsound/documentify/sample/mvc/controller/ComplexSampleController.kt @@ -1,4 +1,4 @@ -package io.github.bgmsound.documentify.sample.mvc +package io.github.bgmsound.documentify.sample.mvc.controller import io.github.bgmsound.documentify.sample.mvc.dto.response.ComplexSampleResponse import io.github.bgmsound.documentify.sample.mvc.dto.response.NestedSampleResponse diff --git a/documentify-sample/mvc-sample/src/main/kotlin/io/github/bgmsound/documentify/sample/mvc/ErrorController.kt b/documentify-sample/mvc-sample/src/main/kotlin/io/github/bgmsound/documentify/sample/mvc/controller/ErrorController.kt similarity index 92% rename from documentify-sample/mvc-sample/src/main/kotlin/io/github/bgmsound/documentify/sample/mvc/ErrorController.kt rename to documentify-sample/mvc-sample/src/main/kotlin/io/github/bgmsound/documentify/sample/mvc/controller/ErrorController.kt index c9f4254..9b16dc8 100644 --- a/documentify-sample/mvc-sample/src/main/kotlin/io/github/bgmsound/documentify/sample/mvc/ErrorController.kt +++ b/documentify-sample/mvc-sample/src/main/kotlin/io/github/bgmsound/documentify/sample/mvc/controller/ErrorController.kt @@ -1,4 +1,4 @@ -package io.github.bgmsound.documentify.sample.mvc +package io.github.bgmsound.documentify.sample.mvc.controller import io.github.bgmsound.documentify.sample.mvc.dto.response.SampleResponse import org.springframework.http.ResponseEntity diff --git a/documentify-sample/mvc-sample/src/main/kotlin/io/github/bgmsound/documentify/sample/mvc/NestedSampleController.kt b/documentify-sample/mvc-sample/src/main/kotlin/io/github/bgmsound/documentify/sample/mvc/controller/NestedSampleController.kt similarity index 94% rename from documentify-sample/mvc-sample/src/main/kotlin/io/github/bgmsound/documentify/sample/mvc/NestedSampleController.kt rename to documentify-sample/mvc-sample/src/main/kotlin/io/github/bgmsound/documentify/sample/mvc/controller/NestedSampleController.kt index a37f3da..66218e1 100644 --- a/documentify-sample/mvc-sample/src/main/kotlin/io/github/bgmsound/documentify/sample/mvc/NestedSampleController.kt +++ b/documentify-sample/mvc-sample/src/main/kotlin/io/github/bgmsound/documentify/sample/mvc/controller/NestedSampleController.kt @@ -1,4 +1,4 @@ -package io.github.bgmsound.documentify.sample.mvc +package io.github.bgmsound.documentify.sample.mvc.controller import io.github.bgmsound.documentify.sample.mvc.dto.request.NestedSampleRequest import io.github.bgmsound.documentify.sample.mvc.dto.response.NestedSampleResponse diff --git a/documentify-sample/mvc-sample/src/main/kotlin/io/github/bgmsound/documentify/sample/mvc/SampleController.kt b/documentify-sample/mvc-sample/src/main/kotlin/io/github/bgmsound/documentify/sample/mvc/controller/SampleController.kt similarity index 94% rename from documentify-sample/mvc-sample/src/main/kotlin/io/github/bgmsound/documentify/sample/mvc/SampleController.kt rename to documentify-sample/mvc-sample/src/main/kotlin/io/github/bgmsound/documentify/sample/mvc/controller/SampleController.kt index 011c5b8..61bcb5d 100644 --- a/documentify-sample/mvc-sample/src/main/kotlin/io/github/bgmsound/documentify/sample/mvc/SampleController.kt +++ b/documentify-sample/mvc-sample/src/main/kotlin/io/github/bgmsound/documentify/sample/mvc/controller/SampleController.kt @@ -1,4 +1,4 @@ -package io.github.bgmsound.documentify.sample.mvc +package io.github.bgmsound.documentify.sample.mvc.controller import io.github.bgmsound.documentify.sample.mvc.dto.request.SampleRequest import io.github.bgmsound.documentify.sample.mvc.dto.response.SampleResponse diff --git a/documentify-sample/mvc-sample/src/main/kotlin/io/github/bgmsound/documentify/sample/mvc/UnnestedSampleController.kt b/documentify-sample/mvc-sample/src/main/kotlin/io/github/bgmsound/documentify/sample/mvc/controller/UnnestedSampleController.kt similarity index 89% rename from documentify-sample/mvc-sample/src/main/kotlin/io/github/bgmsound/documentify/sample/mvc/UnnestedSampleController.kt rename to documentify-sample/mvc-sample/src/main/kotlin/io/github/bgmsound/documentify/sample/mvc/controller/UnnestedSampleController.kt index f8eeb1f..321f00e 100644 --- a/documentify-sample/mvc-sample/src/main/kotlin/io/github/bgmsound/documentify/sample/mvc/UnnestedSampleController.kt +++ b/documentify-sample/mvc-sample/src/main/kotlin/io/github/bgmsound/documentify/sample/mvc/controller/UnnestedSampleController.kt @@ -1,4 +1,4 @@ -package io.github.bgmsound.documentify.sample.mvc +package io.github.bgmsound.documentify.sample.mvc.controller import org.springframework.web.bind.annotation.GetMapping import org.springframework.web.bind.annotation.RequestMapping diff --git a/documentify-sample/mvc-sample/src/main/kotlin/io/github/bgmsound/documentify/sample/mvc/UseCaseBindingController.kt b/documentify-sample/mvc-sample/src/main/kotlin/io/github/bgmsound/documentify/sample/mvc/controller/UseCaseBindingController.kt similarity index 91% rename from documentify-sample/mvc-sample/src/main/kotlin/io/github/bgmsound/documentify/sample/mvc/UseCaseBindingController.kt rename to documentify-sample/mvc-sample/src/main/kotlin/io/github/bgmsound/documentify/sample/mvc/controller/UseCaseBindingController.kt index dcfdcfa..121461b 100644 --- a/documentify-sample/mvc-sample/src/main/kotlin/io/github/bgmsound/documentify/sample/mvc/UseCaseBindingController.kt +++ b/documentify-sample/mvc-sample/src/main/kotlin/io/github/bgmsound/documentify/sample/mvc/controller/UseCaseBindingController.kt @@ -1,4 +1,4 @@ -package io.github.bgmsound.documentify.sample.mvc +package io.github.bgmsound.documentify.sample.mvc.controller import io.github.bgmsound.documentify.sample.mvc.dto.response.SampleResponse import org.springframework.stereotype.Service diff --git a/documentify-sample/mvc-sample/src/test/kotlin/io/github/bgmsound/documentify/sample/mvc/documentation/ComplexSampleDocs.kt b/documentify-sample/mvc-sample/src/test/kotlin/io/github/bgmsound/documentify/sample/mvc/documentation/ComplexSampleDocs.kt index ae02f58..ae96b0a 100644 --- a/documentify-sample/mvc-sample/src/test/kotlin/io/github/bgmsound/documentify/sample/mvc/documentation/ComplexSampleDocs.kt +++ b/documentify-sample/mvc-sample/src/test/kotlin/io/github/bgmsound/documentify/sample/mvc/documentation/ComplexSampleDocs.kt @@ -2,7 +2,7 @@ package io.github.bgmsound.documentify.sample.mvc.documentation import io.github.bgmsound.documentify.core.specification.schema.Method import io.github.bgmsound.documentify.mvc.Documentify -import io.github.bgmsound.documentify.sample.mvc.ComplexSampleController +import io.github.bgmsound.documentify.sample.mvc.controller.ComplexSampleController import org.junit.jupiter.api.BeforeEach import org.junit.jupiter.api.Test import org.springframework.restdocs.RestDocumentationContextProvider diff --git a/documentify-sample/mvc-sample/src/test/kotlin/io/github/bgmsound/documentify/sample/mvc/documentation/ErrorDocs.kt b/documentify-sample/mvc-sample/src/test/kotlin/io/github/bgmsound/documentify/sample/mvc/documentation/ErrorDocs.kt index 6710d6a..28050eb 100644 --- a/documentify-sample/mvc-sample/src/test/kotlin/io/github/bgmsound/documentify/sample/mvc/documentation/ErrorDocs.kt +++ b/documentify-sample/mvc-sample/src/test/kotlin/io/github/bgmsound/documentify/sample/mvc/documentation/ErrorDocs.kt @@ -2,7 +2,7 @@ package io.github.bgmsound.documentify.sample.mvc.documentation import io.github.bgmsound.documentify.core.specification.schema.Method import io.github.bgmsound.documentify.mvc.Documentify -import io.github.bgmsound.documentify.sample.mvc.ErrorController +import io.github.bgmsound.documentify.sample.mvc.controller.ErrorController import org.junit.jupiter.api.BeforeEach import org.junit.jupiter.api.Test import org.springframework.restdocs.RestDocumentationContextProvider diff --git a/documentify-sample/mvc-sample/src/test/kotlin/io/github/bgmsound/documentify/sample/mvc/documentation/NestedSampleDocs.kt b/documentify-sample/mvc-sample/src/test/kotlin/io/github/bgmsound/documentify/sample/mvc/documentation/NestedSampleDocs.kt index 2761e40..b0fc873 100644 --- a/documentify-sample/mvc-sample/src/test/kotlin/io/github/bgmsound/documentify/sample/mvc/documentation/NestedSampleDocs.kt +++ b/documentify-sample/mvc-sample/src/test/kotlin/io/github/bgmsound/documentify/sample/mvc/documentation/NestedSampleDocs.kt @@ -2,7 +2,7 @@ package io.github.bgmsound.documentify.sample.mvc.documentation import io.github.bgmsound.documentify.core.specification.schema.Method import io.github.bgmsound.documentify.mvc.Documentify -import io.github.bgmsound.documentify.sample.mvc.NestedSampleController +import io.github.bgmsound.documentify.sample.mvc.controller.NestedSampleController import org.junit.jupiter.api.BeforeEach import org.junit.jupiter.api.Test import org.springframework.restdocs.RestDocumentationContextProvider diff --git a/documentify-sample/mvc-sample/src/test/kotlin/io/github/bgmsound/documentify/sample/mvc/documentation/SampleDocs.kt b/documentify-sample/mvc-sample/src/test/kotlin/io/github/bgmsound/documentify/sample/mvc/documentation/SampleDocs.kt index 0bf61cd..ae46133 100644 --- a/documentify-sample/mvc-sample/src/test/kotlin/io/github/bgmsound/documentify/sample/mvc/documentation/SampleDocs.kt +++ b/documentify-sample/mvc-sample/src/test/kotlin/io/github/bgmsound/documentify/sample/mvc/documentation/SampleDocs.kt @@ -2,7 +2,7 @@ package io.github.bgmsound.documentify.sample.mvc.documentation import io.github.bgmsound.documentify.core.specification.schema.Method import io.github.bgmsound.documentify.mvc.Documentify -import io.github.bgmsound.documentify.sample.mvc.SampleController +import io.github.bgmsound.documentify.sample.mvc.controller.SampleController import org.junit.jupiter.api.BeforeEach import org.junit.jupiter.api.Test import org.springframework.http.HttpStatus diff --git a/documentify-sample/mvc-sample/src/test/kotlin/io/github/bgmsound/documentify/sample/mvc/documentation/SnakeSampleDocs.kt b/documentify-sample/mvc-sample/src/test/kotlin/io/github/bgmsound/documentify/sample/mvc/documentation/SnakeSampleDocs.kt index c8e0a58..04049f7 100644 --- a/documentify-sample/mvc-sample/src/test/kotlin/io/github/bgmsound/documentify/sample/mvc/documentation/SnakeSampleDocs.kt +++ b/documentify-sample/mvc-sample/src/test/kotlin/io/github/bgmsound/documentify/sample/mvc/documentation/SnakeSampleDocs.kt @@ -5,7 +5,7 @@ import com.fasterxml.jackson.databind.PropertyNamingStrategies import com.fasterxml.jackson.module.kotlin.KotlinModule import io.github.bgmsound.documentify.core.specification.schema.Method import io.github.bgmsound.documentify.mvc.Documentify -import io.github.bgmsound.documentify.sample.mvc.SampleController +import io.github.bgmsound.documentify.sample.mvc.controller.SampleController import org.junit.jupiter.api.BeforeEach import org.junit.jupiter.api.Test import org.springframework.http.HttpStatus diff --git a/documentify-sample/mvc-sample/src/test/kotlin/io/github/bgmsound/documentify/sample/mvc/documentation/UnnestedSampleDocs.kt b/documentify-sample/mvc-sample/src/test/kotlin/io/github/bgmsound/documentify/sample/mvc/documentation/UnnestedSampleDocs.kt index d197c79..dc6df61 100644 --- a/documentify-sample/mvc-sample/src/test/kotlin/io/github/bgmsound/documentify/sample/mvc/documentation/UnnestedSampleDocs.kt +++ b/documentify-sample/mvc-sample/src/test/kotlin/io/github/bgmsound/documentify/sample/mvc/documentation/UnnestedSampleDocs.kt @@ -2,7 +2,7 @@ package io.github.bgmsound.documentify.sample.mvc.documentation import io.github.bgmsound.documentify.core.specification.schema.Method import io.github.bgmsound.documentify.mvc.Documentify -import io.github.bgmsound.documentify.sample.mvc.UnnestedSampleController +import io.github.bgmsound.documentify.sample.mvc.controller.UnnestedSampleController import org.junit.jupiter.api.BeforeEach import org.junit.jupiter.api.Test import org.springframework.restdocs.RestDocumentationContextProvider diff --git a/documentify-sample/mvc-sample/src/test/kotlin/io/github/bgmsound/documentify/sample/mvc/documentation/UseCaseBindingDocs.kt b/documentify-sample/mvc-sample/src/test/kotlin/io/github/bgmsound/documentify/sample/mvc/documentation/UseCaseBindingDocs.kt index cfd2dbd..9142666 100644 --- a/documentify-sample/mvc-sample/src/test/kotlin/io/github/bgmsound/documentify/sample/mvc/documentation/UseCaseBindingDocs.kt +++ b/documentify-sample/mvc-sample/src/test/kotlin/io/github/bgmsound/documentify/sample/mvc/documentation/UseCaseBindingDocs.kt @@ -2,8 +2,8 @@ package io.github.bgmsound.documentify.sample.mvc.documentation import io.github.bgmsound.documentify.core.specification.schema.Method import io.github.bgmsound.documentify.mvc.Documentify -import io.github.bgmsound.documentify.sample.mvc.UseCase -import io.github.bgmsound.documentify.sample.mvc.UseCaseBindingController +import io.github.bgmsound.documentify.sample.mvc.controller.UseCase +import io.github.bgmsound.documentify.sample.mvc.controller.UseCaseBindingController import io.github.bgmsound.documentify.sample.mvc.dto.response.SampleResponse import io.mockk.every import io.mockk.mockk diff --git a/documentify-sample/reactive-sample/src/main/kotlin/io/github/bgmsound/documentify/sample/reactive/SampleController.kt b/documentify-sample/reactive-sample/src/main/kotlin/io/github/bgmsound/documentify/sample/reactive/controller/SampleController.kt similarity index 65% rename from documentify-sample/reactive-sample/src/main/kotlin/io/github/bgmsound/documentify/sample/reactive/SampleController.kt rename to documentify-sample/reactive-sample/src/main/kotlin/io/github/bgmsound/documentify/sample/reactive/controller/SampleController.kt index 16a8e85..29c823c 100644 --- a/documentify-sample/reactive-sample/src/main/kotlin/io/github/bgmsound/documentify/sample/reactive/SampleController.kt +++ b/documentify-sample/reactive-sample/src/main/kotlin/io/github/bgmsound/documentify/sample/reactive/controller/SampleController.kt @@ -1,9 +1,17 @@ -package io.github.bgmsound.documentify.sample.reactive +package io.github.bgmsound.documentify.sample.reactive.controller import io.github.bgmsound.documentify.sample.reactive.dto.request.SampleRequest import io.github.bgmsound.documentify.sample.reactive.dto.response.SampleResponse import kotlinx.coroutines.reactive.awaitFirst -import org.springframework.web.bind.annotation.* +import org.springframework.web.bind.annotation.DeleteMapping +import org.springframework.web.bind.annotation.GetMapping +import org.springframework.web.bind.annotation.PatchMapping +import org.springframework.web.bind.annotation.PathVariable +import org.springframework.web.bind.annotation.PostMapping +import org.springframework.web.bind.annotation.RequestBody +import org.springframework.web.bind.annotation.RequestMapping +import org.springframework.web.bind.annotation.RequestParam +import org.springframework.web.bind.annotation.RestController import reactor.core.publisher.Mono @RestController diff --git a/documentify-sample/reactive-sample/src/test/kotlin/io/github/bgmsound/documentify/sample/reactive/documentation/SampleDocs.kt b/documentify-sample/reactive-sample/src/test/kotlin/io/github/bgmsound/documentify/sample/reactive/documentation/SampleDocs.kt index f5d6115..2f0efad 100644 --- a/documentify-sample/reactive-sample/src/test/kotlin/io/github/bgmsound/documentify/sample/reactive/documentation/SampleDocs.kt +++ b/documentify-sample/reactive-sample/src/test/kotlin/io/github/bgmsound/documentify/sample/reactive/documentation/SampleDocs.kt @@ -3,7 +3,7 @@ package io.github.bgmsound.documentify.sample.reactive.documentation import io.github.bgmsound.documentify.core.specification.schema.Method import io.github.bgmsound.documentify.reactive.Documentify -import io.github.bgmsound.documentify.sample.reactive.SampleController +import io.github.bgmsound.documentify.sample.reactive.controller.SampleController import kotlinx.coroutines.test.runTest import org.junit.jupiter.api.BeforeEach import org.junit.jupiter.api.Test diff --git a/documentify-sample/reactive-sample/src/test/kotlin/io/github/bgmsound/documentify/sample/reactive/documentation/SnakeSampleDocs.kt b/documentify-sample/reactive-sample/src/test/kotlin/io/github/bgmsound/documentify/sample/reactive/documentation/SnakeSampleDocs.kt index 54814c3..ea34d20 100644 --- a/documentify-sample/reactive-sample/src/test/kotlin/io/github/bgmsound/documentify/sample/reactive/documentation/SnakeSampleDocs.kt +++ b/documentify-sample/reactive-sample/src/test/kotlin/io/github/bgmsound/documentify/sample/reactive/documentation/SnakeSampleDocs.kt @@ -5,7 +5,7 @@ import com.fasterxml.jackson.databind.PropertyNamingStrategies import com.fasterxml.jackson.module.kotlin.KotlinModule import io.github.bgmsound.documentify.core.specification.schema.Method import io.github.bgmsound.documentify.reactive.Documentify -import io.github.bgmsound.documentify.sample.reactive.SampleController +import io.github.bgmsound.documentify.sample.reactive.controller.SampleController import kotlinx.coroutines.test.runTest import org.junit.jupiter.api.BeforeEach From fe7d76a6081a970f9ce280a3965b40bcdb22e678 Mon Sep 17 00:00:00 2001 From: Gyumin Bae Date: Tue, 6 May 2025 01:08:33 +0900 Subject: [PATCH 2/5] Refactor package structure for test module --- .../documentify/sample/reactive/controller/SampleController.kt | 1 - 1 file changed, 1 deletion(-) diff --git a/documentify-sample/reactive-sample/src/main/kotlin/io/github/bgmsound/documentify/sample/reactive/controller/SampleController.kt b/documentify-sample/reactive-sample/src/main/kotlin/io/github/bgmsound/documentify/sample/reactive/controller/SampleController.kt index 29c823c..c36bb25 100644 --- a/documentify-sample/reactive-sample/src/main/kotlin/io/github/bgmsound/documentify/sample/reactive/controller/SampleController.kt +++ b/documentify-sample/reactive-sample/src/main/kotlin/io/github/bgmsound/documentify/sample/reactive/controller/SampleController.kt @@ -22,7 +22,6 @@ class SampleController { @PathVariable("integerField") integerField: Int, @RequestParam("stringField") stringField: String ): SampleResponse { - "asfd" return Mono.just(SampleResponse(integerField, stringField)).awaitFirst() } From e9900be411d1083f95bd6e5b5c011bf4304c3b9c Mon Sep 17 00:00:00 2001 From: Gyumin Bae Date: Tue, 6 May 2025 02:43:15 +0900 Subject: [PATCH 3/5] Refactor package structure --- .../specification/{ => schema}/ResourceSpec.kt | 15 ++++++++------- .../specification/schema/document/DocumentSpec.kt | 2 +- 2 files changed, 9 insertions(+), 8 deletions(-) rename documentify-project/documentify-core/src/main/kotlin/io/github/bgmsound/documentify/core/specification/{ => schema}/ResourceSpec.kt (86%) diff --git a/documentify-project/documentify-core/src/main/kotlin/io/github/bgmsound/documentify/core/specification/ResourceSpec.kt b/documentify-project/documentify-core/src/main/kotlin/io/github/bgmsound/documentify/core/specification/schema/ResourceSpec.kt similarity index 86% rename from documentify-project/documentify-core/src/main/kotlin/io/github/bgmsound/documentify/core/specification/ResourceSpec.kt rename to documentify-project/documentify-core/src/main/kotlin/io/github/bgmsound/documentify/core/specification/schema/ResourceSpec.kt index c1de31c..abd3525 100644 --- a/documentify-project/documentify-core/src/main/kotlin/io/github/bgmsound/documentify/core/specification/ResourceSpec.kt +++ b/documentify-project/documentify-core/src/main/kotlin/io/github/bgmsound/documentify/core/specification/schema/ResourceSpec.kt @@ -1,8 +1,9 @@ -package io.github.bgmsound.documentify.core.specification +package io.github.bgmsound.documentify.core.specification.schema import com.epages.restdocs.apispec.ResourceDocumentation import com.epages.restdocs.apispec.ResourceSnippetParameters import com.epages.restdocs.apispec.Schema +import io.github.bgmsound.documentify.core.specification.DocumentableSpec import io.github.bgmsound.documentify.core.specification.element.Link import io.github.bgmsound.documentify.core.specification.element.field.Field import io.github.bgmsound.documentify.core.specification.schema.request.RequestSpec @@ -28,17 +29,17 @@ class ResourceSpec( } fun link(rel: String): Link { - val link = Link.newLink(rel) + val link = Link.Companion.newLink(rel) this.links.add(link) return link } fun links(vararg links: String) { - this.links.addAll(links.map { Link.newLink(it) }) + this.links.addAll(links.map { Link.Companion.newLink(it) }) } fun links(links: Collection) { - this.links.addAll(links.map { Link.newLink(it) }) + this.links.addAll(links.map { Link.Companion.newLink(it) }) } fun tag(tag: String) { @@ -70,7 +71,7 @@ class ResourceSpec( } override fun build(): List { - val resourceBuilder = ResourceSnippetParameters.builder() + val resourceBuilder = ResourceSnippetParameters.Companion.builder() if (tags.isNotEmpty()) { resourceBuilder.tags(*tags.toTypedArray()) } @@ -93,13 +94,13 @@ class ResourceSpec( } if (request.fields.isNotEmpty()) { if (request.schema != null) { - resourceBuilder.requestSchema(Schema.schema(request.schema!!)) + resourceBuilder.requestSchema(Schema.Companion.schema(request.schema!!)) } resourceBuilder.requestFields(buildFields(request.fields)) } if (response.fields.isNotEmpty()) { if (response.schema != null) { - resourceBuilder.responseSchema(Schema.schema(response.schema!!)) + resourceBuilder.responseSchema(Schema.Companion.schema(response.schema!!)) } resourceBuilder.responseFields(buildFields(response.fields)) } diff --git a/documentify-project/documentify-core/src/main/kotlin/io/github/bgmsound/documentify/core/specification/schema/document/DocumentSpec.kt b/documentify-project/documentify-core/src/main/kotlin/io/github/bgmsound/documentify/core/specification/schema/document/DocumentSpec.kt index 0006172..3687cd9 100644 --- a/documentify-project/documentify-core/src/main/kotlin/io/github/bgmsound/documentify/core/specification/schema/document/DocumentSpec.kt +++ b/documentify-project/documentify-core/src/main/kotlin/io/github/bgmsound/documentify/core/specification/schema/document/DocumentSpec.kt @@ -1,7 +1,7 @@ package io.github.bgmsound.documentify.core.specification.schema.document import io.github.bgmsound.documentify.core.specification.DocumentableSpec -import io.github.bgmsound.documentify.core.specification.ResourceSpec +import io.github.bgmsound.documentify.core.specification.schema.ResourceSpec import io.github.bgmsound.documentify.core.specification.schema.Method import io.github.bgmsound.documentify.core.specification.schema.request.RequestBodySpec import io.github.bgmsound.documentify.core.specification.schema.request.RequestHeaderSpec From 2be5aea46b0d0ad47724692f8d8a03f53a7851f6 Mon Sep 17 00:00:00 2001 From: Gyumin Bae Date: Wed, 14 May 2025 15:31:13 +0900 Subject: [PATCH 4/5] Unify the common validation logic for DocumentResult into the abstract layer from its subclasses. --- .../core/emitter/AbstractDocumentResult.kt | 19 +++++++++++++++-- .../mvc/emitter/MvcDocumentResult.kt | 21 ++++++------------- .../emitter/ReactiveDocumentResult.kt | 19 ++++++----------- gradle.properties | 2 +- 4 files changed, 30 insertions(+), 31 deletions(-) diff --git a/documentify-project/documentify-core/src/main/kotlin/io/github/bgmsound/documentify/core/emitter/AbstractDocumentResult.kt b/documentify-project/documentify-core/src/main/kotlin/io/github/bgmsound/documentify/core/emitter/AbstractDocumentResult.kt index 1e54ae6..3399fac 100644 --- a/documentify-project/documentify-core/src/main/kotlin/io/github/bgmsound/documentify/core/emitter/AbstractDocumentResult.kt +++ b/documentify-project/documentify-core/src/main/kotlin/io/github/bgmsound/documentify/core/emitter/AbstractDocumentResult.kt @@ -2,9 +2,13 @@ package io.github.bgmsound.documentify.core.emitter import io.github.bgmsound.documentify.core.specification.element.field.Field import io.github.bgmsound.documentify.core.specification.schema.response.ResponseSpec +import org.hamcrest.Matcher +import org.hamcrest.Matchers abstract class AbstractDocumentResult : DocumentResult { - abstract fun validateJsonPath(jsonResultMatcher: JsonResultMatcher) + abstract fun expect(jsonPath: String, matcher: Matcher<*>) + + abstract fun expectValue(jsonPath: String, value: Any) override fun validateWith(responseSpec: ResponseSpec) { val matchers = aggregateMatchers(responseSpec.fields) @@ -12,7 +16,18 @@ abstract class AbstractDocumentResult : DocumentResult { return } matchers.forEach { matcher -> - validateJsonPath(matcher) + val jsonPath = matcher.jsonPath + val value = matcher.expectedValue + if (jsonPath.endsWith("[*]")) { + if (value !is List<*>) { + throw IllegalArgumentException("sample value type must be List") + } + expect(jsonPath.substringBeforeLast("[*]"), Matchers.containsInAnyOrder(*value.toTypedArray())) + } else if (jsonPath.contains("[*]") && !jsonPath.endsWith("[*]")) { + expect(jsonPath, Matchers.hasItem(value)) + } else { + expectValue(jsonPath, value) + } } } diff --git a/documentify-project/documentify-mvc/src/main/kotlin/io/github/bgmsound/documentify/mvc/emitter/MvcDocumentResult.kt b/documentify-project/documentify-mvc/src/main/kotlin/io/github/bgmsound/documentify/mvc/emitter/MvcDocumentResult.kt index b6dbefe..da97305 100644 --- a/documentify-project/documentify-mvc/src/main/kotlin/io/github/bgmsound/documentify/mvc/emitter/MvcDocumentResult.kt +++ b/documentify-project/documentify-mvc/src/main/kotlin/io/github/bgmsound/documentify/mvc/emitter/MvcDocumentResult.kt @@ -1,29 +1,20 @@ package io.github.bgmsound.documentify.mvc.emitter import io.github.bgmsound.documentify.core.emitter.AbstractDocumentResult -import io.github.bgmsound.documentify.core.emitter.JsonResultMatcher import io.github.bgmsound.documentify.core.specification.schema.response.ResponseSpec import io.github.bgmsound.documentify.mvc.ValidatableMockResponse -import org.hamcrest.Matchers +import org.hamcrest.Matcher import org.springframework.test.web.servlet.result.MockMvcResultMatchers.jsonPath class MvcDocumentResult( private val actualResponse: ValidatableMockResponse ) : AbstractDocumentResult() { - override fun validateJsonPath(jsonResultMatcher: JsonResultMatcher) { - val jsonPath = jsonResultMatcher.jsonPath - val value = jsonResultMatcher.expectedValue + override fun expect(jsonPath: String, matcher: Matcher<*>) { + actualResponse.expect(jsonPath(jsonPath).value(matcher)) + } - if (jsonPath.endsWith("[*]")) { - if (value !is List<*>) { - throw IllegalArgumentException("sample value type must be List") - } - actualResponse.expect(jsonPath(jsonPath.substringBeforeLast("[*]")).value(Matchers.containsInAnyOrder(*value.toTypedArray()))) - } else if (jsonPath.contains("[*]") && !jsonPath.endsWith("[*]")) { - actualResponse.expect(jsonPath(jsonPath).value(Matchers.hasItem(value))) - } else { - actualResponse.expect(jsonPath(jsonPath).value(value)) - } + override fun expectValue(jsonPath: String, value: Any) { + actualResponse.expect(jsonPath(jsonPath).value(value)) } companion object { diff --git a/documentify-project/documentify-reactive/src/main/kotlin/io/github/bgmsound/documentify/reactive/emitter/ReactiveDocumentResult.kt b/documentify-project/documentify-reactive/src/main/kotlin/io/github/bgmsound/documentify/reactive/emitter/ReactiveDocumentResult.kt index 76f9229..b216f84 100644 --- a/documentify-project/documentify-reactive/src/main/kotlin/io/github/bgmsound/documentify/reactive/emitter/ReactiveDocumentResult.kt +++ b/documentify-project/documentify-reactive/src/main/kotlin/io/github/bgmsound/documentify/reactive/emitter/ReactiveDocumentResult.kt @@ -3,26 +3,19 @@ package io.github.bgmsound.documentify.reactive.emitter import io.github.bgmsound.documentify.core.emitter.AbstractDocumentResult import io.github.bgmsound.documentify.core.emitter.JsonResultMatcher import io.github.bgmsound.documentify.core.specification.schema.response.ResponseSpec +import org.hamcrest.Matcher import org.hamcrest.Matchers import org.springframework.test.web.reactive.server.WebTestClient class ReactiveDocumentResult( private val actualResponse: WebTestClient.BodyContentSpec ) : AbstractDocumentResult() { - override fun validateJsonPath(jsonResultMatcher: JsonResultMatcher) { - val jsonPath = jsonResultMatcher.jsonPath - val value = jsonResultMatcher.expectedValue + override fun expect(jsonPath: String, matcher: Matcher<*>) { + actualResponse.jsonPath(jsonPath).value(matcher) + } - if (jsonPath.endsWith("[*]")) { - if (value !is List<*>) { - throw IllegalArgumentException("sample value type must be List") - } - actualResponse.jsonPath(jsonPath.substringBeforeLast("[*]")).value(Matchers.containsInAnyOrder(*value.toTypedArray())) - } else if (jsonPath.contains("[*]") && !jsonPath.endsWith("[*]")) { - actualResponse.jsonPath(jsonPath).value(Matchers.hasItem(value)) - } else { - actualResponse.jsonPath(jsonPath).value(Matchers.equalToObject(value)) - } + override fun expectValue(jsonPath: String, value: Any) { + actualResponse.jsonPath(jsonPath).value(Matchers.equalToObject(value)) } companion object { diff --git a/gradle.properties b/gradle.properties index 669118d..af5db2c 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,7 +1,7 @@ project.name=documentify project.group=io.github.bgmsound -project.version.id=1.3.5 +project.version.id=1.3.6 project.artifact=documentify project.description=Documentify is a tool to generate API documentation from source code. From 2302476ffaabdf3d6dc8c0e7e1b59c1a9e9d3973 Mon Sep 17 00:00:00 2001 From: Gyumin Bae Date: Wed, 14 May 2025 15:37:34 +0900 Subject: [PATCH 5/5] Refactor vague class name --- .../documentify/core/emitter/AbstractDocumentResult.kt | 8 ++++---- .../{JsonResultMatcher.kt => ExpectedJsonValue.kt} | 4 ++-- .../reactive/emitter/ReactiveDocumentResult.kt | 1 - 3 files changed, 6 insertions(+), 7 deletions(-) rename documentify-project/documentify-core/src/main/kotlin/io/github/bgmsound/documentify/core/emitter/{JsonResultMatcher.kt => ExpectedJsonValue.kt} (54%) diff --git a/documentify-project/documentify-core/src/main/kotlin/io/github/bgmsound/documentify/core/emitter/AbstractDocumentResult.kt b/documentify-project/documentify-core/src/main/kotlin/io/github/bgmsound/documentify/core/emitter/AbstractDocumentResult.kt index 3399fac..44233c7 100644 --- a/documentify-project/documentify-core/src/main/kotlin/io/github/bgmsound/documentify/core/emitter/AbstractDocumentResult.kt +++ b/documentify-project/documentify-core/src/main/kotlin/io/github/bgmsound/documentify/core/emitter/AbstractDocumentResult.kt @@ -31,7 +31,7 @@ abstract class AbstractDocumentResult : DocumentResult { } } - private fun aggregateMatchers(fields: List): List { + private fun aggregateMatchers(fields: List): List { return fields.filter { it.hasSample() || it.canHaveChild() || !it.isIgnored() }.flatMap { @@ -39,21 +39,21 @@ abstract class AbstractDocumentResult : DocumentResult { } } - private fun Field.aggregateMatchers(): List { + private fun Field.aggregateMatchers(): List { if (isIgnored()) { return emptyList() } if (!hasSample() && !canHaveChild()) { return emptyList() } - val matchers = mutableListOf() + val matchers = mutableListOf() if (hasSample()) { val jsonPath = StringBuilder("$.${path}").apply { if (isArray()) { append("[*]") } }.toString().replace("[]", "[*]") - matchers.add(JsonResultMatcher.of(jsonPath, sample)) + matchers.add(ExpectedJsonValue.of(jsonPath, sample)) } else if (childFields().isNotEmpty()) { val childMatchers = aggregateMatchers(childFields()) matchers.addAll(childMatchers) diff --git a/documentify-project/documentify-core/src/main/kotlin/io/github/bgmsound/documentify/core/emitter/JsonResultMatcher.kt b/documentify-project/documentify-core/src/main/kotlin/io/github/bgmsound/documentify/core/emitter/ExpectedJsonValue.kt similarity index 54% rename from documentify-project/documentify-core/src/main/kotlin/io/github/bgmsound/documentify/core/emitter/JsonResultMatcher.kt rename to documentify-project/documentify-core/src/main/kotlin/io/github/bgmsound/documentify/core/emitter/ExpectedJsonValue.kt index ac59634..a02339a 100644 --- a/documentify-project/documentify-core/src/main/kotlin/io/github/bgmsound/documentify/core/emitter/JsonResultMatcher.kt +++ b/documentify-project/documentify-core/src/main/kotlin/io/github/bgmsound/documentify/core/emitter/ExpectedJsonValue.kt @@ -1,10 +1,10 @@ package io.github.bgmsound.documentify.core.emitter -data class JsonResultMatcher( +data class ExpectedJsonValue( val jsonPath: String, val expectedValue: Any ) { companion object { - fun of(path: String, expectedValue: Any) = JsonResultMatcher(path, expectedValue) + fun of(path: String, expectedValue: Any) = ExpectedJsonValue(path, expectedValue) } } diff --git a/documentify-project/documentify-reactive/src/main/kotlin/io/github/bgmsound/documentify/reactive/emitter/ReactiveDocumentResult.kt b/documentify-project/documentify-reactive/src/main/kotlin/io/github/bgmsound/documentify/reactive/emitter/ReactiveDocumentResult.kt index b216f84..390ac3a 100644 --- a/documentify-project/documentify-reactive/src/main/kotlin/io/github/bgmsound/documentify/reactive/emitter/ReactiveDocumentResult.kt +++ b/documentify-project/documentify-reactive/src/main/kotlin/io/github/bgmsound/documentify/reactive/emitter/ReactiveDocumentResult.kt @@ -1,7 +1,6 @@ package io.github.bgmsound.documentify.reactive.emitter import io.github.bgmsound.documentify.core.emitter.AbstractDocumentResult -import io.github.bgmsound.documentify.core.emitter.JsonResultMatcher import io.github.bgmsound.documentify.core.specification.schema.response.ResponseSpec import org.hamcrest.Matcher import org.hamcrest.Matchers