Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: 선택 가능한 어조를 조회한다 #14

Merged
merged 3 commits into from
Jan 30, 2025
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 12 additions & 0 deletions src/main/kotlin/me/misik/api/api/ReviewController.kt
Original file line number Diff line number Diff line change
@@ -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
Expand All @@ -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")
Expand All @@ -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)
}
}
Original file line number Diff line number Diff line change
@@ -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
inpink marked this conversation as resolved.
Show resolved Hide resolved
)
}
}
}
inpink marked this conversation as resolved.
Show resolved Hide resolved
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
package me.misik.api.api.response

import me.misik.api.domain.ReviewStyle

data class ReviewStylesResponse(
val reviewStyles: List<ReviewStyleResponse>
) {
companion object {
fun from(reviewStyles: Array<ReviewStyle>) : ReviewStylesResponse {
return ReviewStylesResponse(
reviewStyles.map { ReviewStyleResponse.from(it) }.toList()
)
}
}
}
10 changes: 10 additions & 0 deletions src/main/kotlin/me/misik/api/domain/ReviewStyleService.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
package me.misik.api.domain

import org.springframework.stereotype.Service

@Service
class ReviewStyleService {
inpink marked this conversation as resolved.
Show resolved Hide resolved
fun getAll(): Array<ReviewStyle> {
inpink marked this conversation as resolved.
Show resolved Hide resolved
return ReviewStyle.values()
inpink marked this conversation as resolved.
Show resolved Hide resolved
}
}
35 changes: 35 additions & 0 deletions src/test/kotlin/me/misik/api/domain/ReviewControllerTest.kt
Original file line number Diff line number Diff line change
@@ -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<ReviewStyleService>()
inpink marked this conversation as resolved.
Show resolved Hide resolved
val reviewController = ReviewController(mockk(), mockk(), reviewStyleService)
inpink marked this conversation as resolved.
Show resolved Hide resolved

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() }
}
}
}
}
})
inpink marked this conversation as resolved.
Show resolved Hide resolved