Skip to content

Commit ffe737d

Browse files
fix: 단일 메뉴 리뷰 작성 시 menuLike null 방지 (#504)
* fix: 단일 메뉴 리뷰 작성 시 menuLike null 방지 * chore: Hilt 버전 업그레이드 Kotlin 메타데이터 버전 불일치로 빌드 불가 문제를 해결하기 위함 * chore: @Inject 필드를 protected → public으로 변경하여 Hilt DI 주입 실패 해결 * Update app/src/main/java/com/eatssu/android/data/remote/repository/ReviewRepositoryImpl.kt Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com> --------- Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
1 parent 418e427 commit ffe737d

8 files changed

Lines changed: 27 additions & 14 deletions

File tree

app/src/main/java/com/eatssu/android/data/remote/repository/ReviewRepositoryImpl.kt

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,7 @@ class ReviewRepositoryImpl @Inject constructor(private val reviewService: Review
5151
}
5252

5353
override suspend fun writeMenuReview(
54+
menuId: Long,
5455
rating: Int,
5556
content: String,
5657
imageUrls: List<String>,
@@ -61,12 +62,10 @@ class ReviewRepositoryImpl @Inject constructor(private val reviewService: Review
6162
rating = rating,
6263
content = content,
6364
imageUrls = imageUrls,
64-
menuLike = likeMenuIdList?.firstOrNull()?.let {
65-
WriteMenuReviewRequest.MenuLike(
66-
menuId = it,
67-
isLike = true,
68-
)
69-
}
65+
menuLike = WriteMenuReviewRequest.MenuLike(
66+
menuId = menuId,
67+
isLike = likeMenuIdList?.contains(menuId) ?: false,
68+
),
7069
)
7170
return reviewService.writeMenuReview(request).isSuccess()
7271
}

app/src/main/java/com/eatssu/android/domain/repository/ReviewRepository.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ interface ReviewRepository {
1818
): Boolean
1919

2020
suspend fun writeMenuReview(
21+
menuId: Long,
2122
rating: Int,
2223
content: String,
2324
imageUrls: List<String>,

app/src/main/java/com/eatssu/android/domain/usecase/review/WriteReviewUseCase.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ class WriteReviewUseCase @Inject constructor(
1818
when (menuType) {
1919
MenuType.FIXED -> {
2020
return reviewRepository.writeMenuReview(
21+
menuId = itemId,
2122
rating = rating,
2223
content = content,
2324
imageUrls = if (imageUrl != null) listOf(imageUrl) else emptyList(),

app/src/main/java/com/eatssu/android/presentation/base/BaseActivity.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ abstract class BaseActivity<B : ViewBinding>(
3636
) : AppCompatActivity() {
3737

3838
@Inject
39-
protected lateinit var analyticsTracker: AnalyticsTracker
39+
lateinit var analyticsTracker: AnalyticsTracker
4040

4141
private var _binding: B? = null
4242
val binding get() = _binding!!

app/src/main/java/com/eatssu/android/presentation/base/BaseFragment.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ abstract class BaseFragment<B : ViewBinding>(
1717
) : Fragment() {
1818

1919
@Inject
20-
protected lateinit var analyticsTracker: AnalyticsTracker
20+
lateinit var analyticsTracker: AnalyticsTracker
2121

2222
private var _binding: B? = null
2323
val binding get() = _binding!!

app/src/test/java/com/eatssu/android/data/remote/repository/ReviewRepositoryImplBehaviorSpec.kt

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -91,9 +91,10 @@ class ReviewRepositoryImplBehaviorSpec : AppBehaviorSpec({
9191
val requestSlot = slot<WriteMenuReviewRequest>()
9292
coEvery { service.writeMenuReview(capture(requestSlot)) } returns ApiResult.Success(Unit)
9393

94-
then("첫 번째 likeMenuId만 menuLike로 매핑한다") {
94+
then("menuId와 isLike를 menuLike로 전달한다") {
9595
runTest {
9696
repository.writeMenuReview(
97+
menuId = 9L,
9798
rating = 3,
9899
content = "메뉴리뷰",
99100
imageUrls = listOf("img"),
@@ -114,15 +115,19 @@ class ReviewRepositoryImplBehaviorSpec : AppBehaviorSpec({
114115
val requestSlot = slot<WriteMenuReviewRequest>()
115116
coEvery { service.writeMenuReview(capture(requestSlot)) } returns ApiResult.Success(Unit)
116117

117-
then("menuLike=null로 전달한다") {
118+
then("menuLike.isLike=false로 전달한다") {
118119
runTest {
119120
repository.writeMenuReview(
121+
menuId = 1L,
120122
rating = 2,
121123
content = "x",
122124
imageUrls = emptyList(),
123125
likeMenuIdList = null,
124126
)
125-
requestSlot.captured.menuLike shouldBe null
127+
requestSlot.captured.menuLike shouldBe WriteMenuReviewRequest.MenuLike(
128+
menuId = 1L,
129+
isLike = false,
130+
)
126131
}
127132
}
128133
}
@@ -131,16 +136,20 @@ class ReviewRepositoryImplBehaviorSpec : AppBehaviorSpec({
131136
val requestSlot = slot<WriteMenuReviewRequest>()
132137
coEvery { service.writeMenuReview(capture(requestSlot)) } returns ApiResult.Success(Unit)
133138

134-
then("menuLike=null로 전달하고 정상 처리한다") {
139+
then("menuLike.isLike=false로 전달하고 정상 처리한다") {
135140
runTest {
136141
repository.writeMenuReview(
142+
menuId = 1L,
137143
rating = 1,
138144
content = "x",
139145
imageUrls = emptyList(),
140146
likeMenuIdList = emptyList(),
141147
) shouldBe true
142148

143-
requestSlot.captured.menuLike shouldBe null
149+
requestSlot.captured.menuLike shouldBe WriteMenuReviewRequest.MenuLike(
150+
menuId = 1L,
151+
isLike = false,
152+
)
144153
}
145154
}
146155
}

app/src/test/java/com/eatssu/android/domain/usecase/review/WriteReviewUseCaseBehaviorSpec.kt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ class WriteReviewUseCaseBehaviorSpec : AppBehaviorSpec({
2020
`when`("FIXED 메뉴에 이미지 없이 작성하면") {
2121
coEvery {
2222
reviewRepository.writeMenuReview(
23+
menuId = 100L,
2324
rating = 5,
2425
content = "good",
2526
imageUrls = emptyList(),
@@ -40,6 +41,7 @@ class WriteReviewUseCaseBehaviorSpec : AppBehaviorSpec({
4041

4142
coVerify(exactly = 1) {
4243
reviewRepository.writeMenuReview(
44+
menuId = 100L,
4345
rating = 5,
4446
content = "good",
4547
imageUrls = emptyList(),
@@ -53,6 +55,7 @@ class WriteReviewUseCaseBehaviorSpec : AppBehaviorSpec({
5355
`when`("FIXED 메뉴에 이미지가 있으면") {
5456
coEvery {
5557
reviewRepository.writeMenuReview(
58+
menuId = 100L,
5659
rating = 4,
5760
content = "",
5861
imageUrls = listOf("https://img"),

gradle/libs.versions.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ compressor = "3.0.1"
4444
coroutines = "1.7.3"
4545
kakao-login = "2.23.0"
4646
kakao-talk = "2.23.0"
47-
hilt = "2.50"
47+
hilt = "2.52"
4848
androidxHilt = "1.2.0"
4949
play-services-base = "18.0.1"
5050
firebase-bom = "32.6.0"

0 commit comments

Comments
 (0)