Skip to content
This repository was archived by the owner on Jul 7, 2025. It is now read-only.

Commit 480a1a2

Browse files
committed
ASAP-451 익명 편지 생성 로직 및 테스트 추가
1 parent c8df9d0 commit 480a1a2

4 files changed

Lines changed: 59 additions & 10 deletions

File tree

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,27 @@
11
package com.asap.application.letter.port.`in`
22

33
interface SendLetterUsecase {
4+
fun send(command: Command): Response
45

5-
fun send(
6-
command: Command
7-
): Response
6+
fun sendAnonymous(command: AnonymousCommand): Response
87

98
data class Command(
109
val receiverName: String,
1110
val content: String,
1211
val images: List<String>,
1312
val templateType: Int,
1413
val draftId: String?,
15-
val userId: String
14+
val userId: String,
15+
)
16+
17+
data class AnonymousCommand(
18+
val receiverName: String,
19+
val content: String,
20+
val images: List<String>,
21+
val templateType: Int,
1622
)
1723

1824
data class Response(
19-
val letterCode: String
25+
val letterCode: String,
2026
)
21-
}
27+
}

Application-Module/src/main/kotlin/com/asap/application/letter/service/LetterCommandService.kt

Lines changed: 25 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,27 @@ class LetterCommandService(
5656
return SendLetterUsecase.Response(letterCode = sendLetter.letterCode!!)
5757
}
5858

59+
override fun sendAnonymous(command: SendLetterUsecase.AnonymousCommand): SendLetterUsecase.Response {
60+
val sendLetter =
61+
SendLetter.createAnonymous(
62+
receiverName = command.receiverName,
63+
content =
64+
LetterContent(
65+
content = command.content,
66+
templateType = command.templateType,
67+
images = command.images.toMutableList(),
68+
),
69+
letterCode =
70+
letterCodeGenerator.generateCode(
71+
content = command.content,
72+
),
73+
)
74+
75+
sendLetterManagementPort.save(sendLetter)
76+
77+
return SendLetterUsecase.Response(letterCode = sendLetter.letterCode!!)
78+
}
79+
5980
override fun verify(command: VerifyLetterAccessibleUsecase.Command): VerifyLetterAccessibleUsecase.Response {
6081
if (sendLetterManagementPort.verifiedLetter(DomainId(command.userId), command.letterCode)) {
6182
val sendLetter =
@@ -89,7 +110,10 @@ class LetterCommandService(
89110
sender =
90111
SenderInfo(
91112
senderId = sendLetter.senderId,
92-
senderName = userManagementPort.getUserNotNull(sendLetter.senderId).username,
113+
senderName =
114+
sendLetter.senderId
115+
?.let { userManagementPort.getUserNotNull(it).username }
116+
.orEmpty(),
93117
),
94118
receiver =
95119
ReceiverInfo(

Application-Module/src/test/kotlin/com/asap/application/letter/service/LetterCommandServiceTest.kt

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,26 @@ class LetterCommandServiceTest :
5757
}
5858
}
5959

60+
given("익명 편지 전송 요청이 들어올 때") {
61+
val command =
62+
SendLetterUsecase.AnonymousCommand(
63+
receiverName = "receiver-name",
64+
content = "content",
65+
images = emptyList(),
66+
templateType = 1,
67+
)
68+
`when`("익명 편지 전송 요청을 처리하면") {
69+
val response = letterCommandService.sendAnonymous(command)
70+
then("편지 코드가 생성되고, 편지가 저장되어야 한다") {
71+
response.letterCode shouldNotBeNull {
72+
this.isNotBlank()
73+
this.isNotEmpty()
74+
}
75+
verify { mockSendLetterManagementPort.save(any()) }
76+
}
77+
}
78+
}
79+
6080
given("편지 검증 시에") {
6181
val letterCode = "letter-code"
6282
val mockUser = UserFixture.createUser(username = "receiver-name")

Domain-Module/src/main/kotlin/com/asap/domain/letter/service/LetterCodeGenerator.kt

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,9 @@ import java.security.MessageDigest
44
import java.util.*
55

66
class LetterCodeGenerator {
7-
87
fun generateCode(
98
content: String,
10-
ownerId: String
9+
ownerId: String = UUID.randomUUID().toString(),
1110
): String {
1211
val salt = UUID.randomUUID().toString()
1312
val input = content + ownerId + salt
@@ -22,4 +21,4 @@ class LetterCodeGenerator {
2221
val letterCode = hexString.toString()
2322
return letterCode
2423
}
25-
}
24+
}

0 commit comments

Comments
 (0)