From 705d9e83a455b99b14a53617687ba5aaad7c7ed6 Mon Sep 17 00:00:00 2001 From: inpink Date: Wed, 29 Jan 2025 00:53:30 +0900 Subject: [PATCH 1/2] =?UTF-8?q?feat:=20=EC=84=A0=ED=83=9D=20=EA=B0=80?= =?UTF-8?q?=EB=8A=A5=ED=95=9C=20=EC=96=B4=EC=A1=B0=EB=A5=BC=20=EC=A1=B0?= =?UTF-8?q?=ED=9A=8C=ED=95=9C=EB=8B=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...4\241\260_\354\241\260\355\232\214_API.md" | 0 .../me/misik/api/api/ReviewController.kt | 12 +++++++ .../api/api/response/ReviewStyleResponse.kt | 17 +++++++++ .../api/api/response/ReviewStylesResponse.kt | 15 ++++++++ .../me/misik/api/domain/ReviewStyleService.kt | 10 ++++++ .../misik/api/domain/ReviewControllerTest.kt | 35 +++++++++++++++++++ 6 files changed, 89 insertions(+) rename "docs/api/\354\204\240\355\203\235\352\260\200\353\212\245\355\225\234_\352\260\200\353\212\245\355\225\234_\354\226\264\354\241\260_\354\241\260\355\232\214_API.md" => "docs/api/\354\204\240\355\203\235_\352\260\200\353\212\245\355\225\234_\354\226\264\354\241\260_\354\241\260\355\232\214_API.md" (100%) create mode 100644 src/main/kotlin/me/misik/api/api/response/ReviewStyleResponse.kt create mode 100644 src/main/kotlin/me/misik/api/api/response/ReviewStylesResponse.kt create mode 100644 src/main/kotlin/me/misik/api/domain/ReviewStyleService.kt create mode 100644 src/test/kotlin/me/misik/api/domain/ReviewControllerTest.kt diff --git "a/docs/api/\354\204\240\355\203\235\352\260\200\353\212\245\355\225\234_\352\260\200\353\212\245\355\225\234_\354\226\264\354\241\260_\354\241\260\355\232\214_API.md" "b/docs/api/\354\204\240\355\203\235_\352\260\200\353\212\245\355\225\234_\354\226\264\354\241\260_\354\241\260\355\232\214_API.md" similarity index 100% rename from "docs/api/\354\204\240\355\203\235\352\260\200\353\212\245\355\225\234_\352\260\200\353\212\245\355\225\234_\354\226\264\354\241\260_\354\241\260\355\232\214_API.md" rename to "docs/api/\354\204\240\355\203\235_\352\260\200\353\212\245\355\225\234_\354\226\264\354\241\260_\354\241\260\355\232\214_API.md" diff --git a/src/main/kotlin/me/misik/api/api/ReviewController.kt b/src/main/kotlin/me/misik/api/api/ReviewController.kt index 70acbb8..f24c57d 100644 --- a/src/main/kotlin/me/misik/api/api/ReviewController.kt +++ b/src/main/kotlin/me/misik/api/api/ReviewController.kt @@ -1,8 +1,12 @@ package me.misik.api.api import me.misik.api.api.request.CreateReviewRequest +import me.misik.api.api.response.ReviewStylesResponse import me.misik.api.app.CreateReviewFacade import me.misik.api.app.ReCreateReviewFacade +import me.misik.api.domain.ReviewStyle +import me.misik.api.domain.ReviewStyleService +import org.springframework.web.bind.annotation.GetMapping import org.springframework.web.bind.annotation.PathVariable import org.springframework.web.bind.annotation.PostMapping import org.springframework.web.bind.annotation.RequestBody @@ -13,6 +17,7 @@ import org.springframework.web.bind.annotation.RestController class ReviewController( private val createReviewFacade: CreateReviewFacade, private val reCreateReviewFacade: ReCreateReviewFacade, + private val reviewStyleService: ReviewStyleService, ) { @PostMapping("reviews") @@ -26,4 +31,11 @@ class ReviewController( @RequestHeader("device-id") deviceId: String, @PathVariable("id") id: Long, ) = reCreateReviewFacade.reCreateReviewInBackground(deviceId, id) + + @GetMapping("reviews/styles") + fun getReviewStyles() : ReviewStylesResponse { + val ReviewStyles = reviewStyleService.getAll() + + return ReviewStylesResponse.from(ReviewStyles) + } } diff --git a/src/main/kotlin/me/misik/api/api/response/ReviewStyleResponse.kt b/src/main/kotlin/me/misik/api/api/response/ReviewStyleResponse.kt new file mode 100644 index 0000000..8394657 --- /dev/null +++ b/src/main/kotlin/me/misik/api/api/response/ReviewStyleResponse.kt @@ -0,0 +1,17 @@ +package me.misik.api.api.response + +import me.misik.api.domain.ReviewStyle + +data class ReviewStyleResponse( + val icon: String, + val style: String +) { + companion object { + fun from(reviewStyle: ReviewStyle): ReviewStyleResponse { + return ReviewStyleResponse( + icon = reviewStyle.iconUrl, + style = reviewStyle.name + ) + } + } +} \ No newline at end of file diff --git a/src/main/kotlin/me/misik/api/api/response/ReviewStylesResponse.kt b/src/main/kotlin/me/misik/api/api/response/ReviewStylesResponse.kt new file mode 100644 index 0000000..62d8cb1 --- /dev/null +++ b/src/main/kotlin/me/misik/api/api/response/ReviewStylesResponse.kt @@ -0,0 +1,15 @@ +package me.misik.api.api.response + +import me.misik.api.domain.ReviewStyle + +data class ReviewStylesResponse( + val reviewStyles: List +) { + companion object { + fun from(reviewStyles: Array) : ReviewStylesResponse { + return ReviewStylesResponse( + reviewStyles.map { ReviewStyleResponse.from(it) }.toList() + ) + } + } +} \ No newline at end of file diff --git a/src/main/kotlin/me/misik/api/domain/ReviewStyleService.kt b/src/main/kotlin/me/misik/api/domain/ReviewStyleService.kt new file mode 100644 index 0000000..c2ffbcc --- /dev/null +++ b/src/main/kotlin/me/misik/api/domain/ReviewStyleService.kt @@ -0,0 +1,10 @@ +package me.misik.api.domain + +import org.springframework.stereotype.Service + +@Service +class ReviewStyleService { + fun getAll(): Array { + return ReviewStyle.values() + } +} \ No newline at end of file diff --git a/src/test/kotlin/me/misik/api/domain/ReviewControllerTest.kt b/src/test/kotlin/me/misik/api/domain/ReviewControllerTest.kt new file mode 100644 index 0000000..9c40917 --- /dev/null +++ b/src/test/kotlin/me/misik/api/domain/ReviewControllerTest.kt @@ -0,0 +1,35 @@ +package me.misik.api.domain + +import io.kotest.core.spec.style.DescribeSpec +import io.kotest.matchers.shouldBe +import io.mockk.every +import io.mockk.mockk +import io.mockk.verify +import me.misik.api.api.ReviewController +import me.misik.api.api.response.ReviewStylesResponse + +class ReviewControllerTest : DescribeSpec({ + + val reviewStyleService = mockk() + val reviewController = ReviewController(mockk(), mockk(), reviewStyleService) + + describe("ReviewController 클래스의") { + describe("getReviewStyles 메소드는") { + context("reviewStyleService에서 모든 ReviewStyle를 받아") { + it("ReviewStylesResponse를 올바르게 반환 한다") { + // Given + val reviewStyles = ReviewStyle.values() + every { reviewStyleService.getAll() } returns reviewStyles + + // When + val result = reviewController.getReviewStyles() + + // Then + val expectedResponse = ReviewStylesResponse.from(reviewStyles) + result shouldBe expectedResponse + verify { reviewStyleService.getAll() } + } + } + } + } +}) From cff23adcc815231017dbaa40375a33c2ad02dd95 Mon Sep 17 00:00:00 2001 From: inpink Date: Thu, 30 Jan 2025 23:23:12 +0900 Subject: [PATCH 2/2] =?UTF-8?q?refactor:=20Enum=20=EC=9A=94=EC=86=8C?= =?UTF-8?q?=EB=A5=BC=20=EA=B0=80=EC=A0=B8=EC=98=A4=EB=8A=94=20=EB=B0=A9?= =?UTF-8?q?=EB=B2=95=EC=9D=84=20=EC=88=98=EC=A0=95=ED=95=9C=EB=8B=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../me/misik/api/api/ReviewController.kt | 9 +++-- .../api/api/response/ReviewStyleResponse.kt | 4 +-- .../api/api/response/ReviewStylesResponse.kt | 2 +- .../me/misik/api/domain/ReviewStyleService.kt | 10 ------ .../misik/api/domain/ReviewControllerTest.kt | 35 ------------------- 5 files changed, 7 insertions(+), 53 deletions(-) delete mode 100644 src/main/kotlin/me/misik/api/domain/ReviewStyleService.kt delete mode 100644 src/test/kotlin/me/misik/api/domain/ReviewControllerTest.kt diff --git a/src/main/kotlin/me/misik/api/api/ReviewController.kt b/src/main/kotlin/me/misik/api/api/ReviewController.kt index f24c57d..618def1 100644 --- a/src/main/kotlin/me/misik/api/api/ReviewController.kt +++ b/src/main/kotlin/me/misik/api/api/ReviewController.kt @@ -1,11 +1,11 @@ package me.misik.api.api import me.misik.api.api.request.CreateReviewRequest +import me.misik.api.api.response.ReviewStyleResponse import me.misik.api.api.response.ReviewStylesResponse import me.misik.api.app.CreateReviewFacade import me.misik.api.app.ReCreateReviewFacade import me.misik.api.domain.ReviewStyle -import me.misik.api.domain.ReviewStyleService import org.springframework.web.bind.annotation.GetMapping import org.springframework.web.bind.annotation.PathVariable import org.springframework.web.bind.annotation.PostMapping @@ -16,8 +16,7 @@ import org.springframework.web.bind.annotation.RestController @RestController class ReviewController( private val createReviewFacade: CreateReviewFacade, - private val reCreateReviewFacade: ReCreateReviewFacade, - private val reviewStyleService: ReviewStyleService, + private val reCreateReviewFacade: ReCreateReviewFacade ) { @PostMapping("reviews") @@ -34,8 +33,8 @@ class ReviewController( @GetMapping("reviews/styles") fun getReviewStyles() : ReviewStylesResponse { - val ReviewStyles = reviewStyleService.getAll() + val reviewStyles = ReviewStyle.entries.toList() - return ReviewStylesResponse.from(ReviewStyles) + return ReviewStylesResponse.from(reviewStyles) } } diff --git a/src/main/kotlin/me/misik/api/api/response/ReviewStyleResponse.kt b/src/main/kotlin/me/misik/api/api/response/ReviewStyleResponse.kt index 8394657..bd4ae8b 100644 --- a/src/main/kotlin/me/misik/api/api/response/ReviewStyleResponse.kt +++ b/src/main/kotlin/me/misik/api/api/response/ReviewStyleResponse.kt @@ -10,8 +10,8 @@ data class ReviewStyleResponse( fun from(reviewStyle: ReviewStyle): ReviewStyleResponse { return ReviewStyleResponse( icon = reviewStyle.iconUrl, - style = reviewStyle.name + style = reviewStyle.name, ) } } -} \ No newline at end of file +} diff --git a/src/main/kotlin/me/misik/api/api/response/ReviewStylesResponse.kt b/src/main/kotlin/me/misik/api/api/response/ReviewStylesResponse.kt index 62d8cb1..6348c4b 100644 --- a/src/main/kotlin/me/misik/api/api/response/ReviewStylesResponse.kt +++ b/src/main/kotlin/me/misik/api/api/response/ReviewStylesResponse.kt @@ -6,7 +6,7 @@ data class ReviewStylesResponse( val reviewStyles: List ) { companion object { - fun from(reviewStyles: Array) : ReviewStylesResponse { + fun from(reviewStyles: List) : ReviewStylesResponse { return ReviewStylesResponse( reviewStyles.map { ReviewStyleResponse.from(it) }.toList() ) diff --git a/src/main/kotlin/me/misik/api/domain/ReviewStyleService.kt b/src/main/kotlin/me/misik/api/domain/ReviewStyleService.kt deleted file mode 100644 index c2ffbcc..0000000 --- a/src/main/kotlin/me/misik/api/domain/ReviewStyleService.kt +++ /dev/null @@ -1,10 +0,0 @@ -package me.misik.api.domain - -import org.springframework.stereotype.Service - -@Service -class ReviewStyleService { - fun getAll(): Array { - return ReviewStyle.values() - } -} \ No newline at end of file diff --git a/src/test/kotlin/me/misik/api/domain/ReviewControllerTest.kt b/src/test/kotlin/me/misik/api/domain/ReviewControllerTest.kt deleted file mode 100644 index 9c40917..0000000 --- a/src/test/kotlin/me/misik/api/domain/ReviewControllerTest.kt +++ /dev/null @@ -1,35 +0,0 @@ -package me.misik.api.domain - -import io.kotest.core.spec.style.DescribeSpec -import io.kotest.matchers.shouldBe -import io.mockk.every -import io.mockk.mockk -import io.mockk.verify -import me.misik.api.api.ReviewController -import me.misik.api.api.response.ReviewStylesResponse - -class ReviewControllerTest : DescribeSpec({ - - val reviewStyleService = mockk() - val reviewController = ReviewController(mockk(), mockk(), reviewStyleService) - - describe("ReviewController 클래스의") { - describe("getReviewStyles 메소드는") { - context("reviewStyleService에서 모든 ReviewStyle를 받아") { - it("ReviewStylesResponse를 올바르게 반환 한다") { - // Given - val reviewStyles = ReviewStyle.values() - every { reviewStyleService.getAll() } returns reviewStyles - - // When - val result = reviewController.getReviewStyles() - - // Then - val expectedResponse = ReviewStylesResponse.from(reviewStyles) - result shouldBe expectedResponse - verify { reviewStyleService.getAll() } - } - } - } - } -})