This repository was archived by the owner on Jul 7, 2025. It is now read-only.
File tree Expand file tree Collapse file tree
main/kotlin/com/asap/application/letter
test/kotlin/com/asap/application/letter/service
Domain-Module/src/main/kotlin/com/asap/domain/letter/service Expand file tree Collapse file tree Original file line number Diff line number Diff line change 11package com.asap.application.letter.port.`in`
22
33interface 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+ }
Original file line number Diff line number Diff 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 (
Original file line number Diff line number Diff 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" )
Original file line number Diff line number Diff line change @@ -4,10 +4,9 @@ import java.security.MessageDigest
44import java.util.*
55
66class 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+ }
You can’t perform that action at this time.
0 commit comments