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

Commit 5ef5399

Browse files
authored
Merge pull request #100 from ASAP-Lettering/ASAP-237
ASAP-237 refactor: 이벤트를 도메인 안에 저장한 다음 영속화할 때 배포하도록 수정
2 parents bf38f96 + 255451d commit 5ef5399

File tree

26 files changed

+113
-46
lines changed

26 files changed

+113
-46
lines changed

Application-Module/src/main/kotlin/com/asap/application/user/service/UserCommandService.kt

Lines changed: 1 addition & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
package com.asap.application.user.service
22

3-
import com.asap.application.user.event.UserEvent
43
import com.asap.application.user.exception.UserException
54
import com.asap.application.user.port.`in`.DeleteUserUsecase
65
import com.asap.application.user.port.`in`.RegisterUserUsecase
@@ -14,7 +13,6 @@ import com.asap.domain.user.entity.User
1413
import com.asap.domain.user.entity.UserAuth
1514
import com.asap.domain.user.entity.UserToken
1615
import com.asap.domain.user.vo.UserPermission
17-
import org.springframework.context.ApplicationEventPublisher
1816
import org.springframework.stereotype.Service
1917
import org.springframework.transaction.annotation.Transactional
2018

@@ -25,7 +23,6 @@ class UserCommandService(
2523
private val userAuthManagementPort: UserAuthManagementPort,
2624
private val userManagementPort: UserManagementPort,
2725
private val userTokenManagementPort: UserTokenManagementPort,
28-
private val applicationEventPublisher: ApplicationEventPublisher,
2926
) : RegisterUserUsecase,
3027
DeleteUserUsecase,
3128
UpdateUserUsecase {
@@ -38,7 +35,7 @@ class UserCommandService(
3835
throw UserException.UserAlreadyRegisteredException()
3936
}
4037
val registerUser =
41-
User(
38+
User.create(
4239
username = command.realName,
4340
profileImage = userClaims.profileImage,
4441
permission =
@@ -65,9 +62,6 @@ class UserCommandService(
6562

6663
userTokenManagementPort.saveUserToken(UserToken(token = refreshToken, userId = registerUser.id))
6764

68-
// TODO: 이벤트 발행을 이렇게하는게 좋은지 다시 생각해보기
69-
applicationEventPublisher.publishEvent(UserEvent.UserCreatedEvent(registerUser))
70-
7165
return RegisterUserUsecase.Response(accessToken, refreshToken)
7266
}
7367

@@ -77,7 +71,6 @@ class UserCommandService(
7771
.apply {
7872
this.delete()
7973
userManagementPort.save(this)
80-
applicationEventPublisher.publishEvent(UserEvent.UserDeletedEvent(this))
8174
}.also {
8275
userAuthManagementPort.getNotNull(it.id).apply {
8376
this.delete()

Application-Module/src/test/kotlin/com/asap/application/image/service/ImageCommandServiceTest.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,9 +25,10 @@ class ImageCommandServiceTest :
2525
)
2626

2727
given("이미지 업로드 요청이 들어올 때") {
28+
val mockUser = UserFixture.createUser()
2829
val command =
2930
UploadImageUsecase.Command(
30-
userId = "user-id",
31+
userId = mockUser.id.value,
3132
image =
3233
FileMetaData(
3334
name = "name",
@@ -36,7 +37,6 @@ class ImageCommandServiceTest :
3637
inputStream = InputStream.nullInputStream(),
3738
),
3839
)
39-
val mockUser = UserFixture.createUser("user-id")
4040
every {
4141
mockUserManagementPort.getUserNotNull(any())
4242
} returns mockUser

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

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -67,10 +67,11 @@ class LetterCommandServiceTest :
6767

6868
given("편지 검증 시에") {
6969
val letterCode = "letter-code"
70+
val mockUser = UserFixture.createUser(username = "receiver-name")
7071
val verifyCommand =
7172
VerifyLetterAccessibleUsecase.Command(
7273
letterCode = letterCode,
73-
userId = "user-id",
74+
userId = mockUser.id.value,
7475
)
7576
val sendLetter =
7677
SendLetter(
@@ -84,7 +85,7 @@ class LetterCommandServiceTest :
8485
senderId = DomainId("sender-id"),
8586
letterCode = letterCode,
8687
)
87-
val mockUser = UserFixture.createUser("user-id", "receiver-name")
88+
8889
every { mockSendLetterManagementPort.verifiedLetter(any(), letterCode) } returns false
8990
every { mockSendLetterManagementPort.getLetterByCodeNotNull(any()) } returns sendLetter
9091
every { mockUserManagementPort.getUserNotNull(any()) } returns mockUser
@@ -107,7 +108,7 @@ class LetterCommandServiceTest :
107108
}
108109
}
109110

110-
val anotherUser = UserFixture.createUser("another-user-id")
111+
val anotherUser = UserFixture.createUser()
111112
every { mockSendLetterManagementPort.getLetterByCodeNotNull(any()) } returns sendLetter
112113
every { mockUserManagementPort.getUserNotNull(any()) } returns anotherUser
113114
`when`("편지의 수신자 이름과 사용자 이름이 다르면") {

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ class LetterQueryServiceTest :
6060
senderId = DomainId.generate(),
6161
letterCode = "letter-code",
6262
)
63-
val mockSender = UserFixture.createUser(mockSendLetter.senderId.value, "sender-name")
63+
val mockSender = UserFixture.createUser(mockSendLetter.senderId, "sender-name")
6464
every {
6565
mockSendLetterManagementPort.getReadLetterNotNull(
6666
receiverId = DomainId(query.userId),

Application-Module/src/test/kotlin/com/asap/application/space/service/SpaceQueryServiceTest.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,11 +35,11 @@ class SpaceQueryServiceTest :
3535
MainSpace(
3636
id = DomainId.generate(),
3737
)
38+
val user = UserFixture.createUser()
3839
val query =
3940
GetMainSpaceUsecase.Query(
40-
userId = "userId",
41+
userId = user.id.value,
4142
)
42-
val user = UserFixture.createUser("userId")
4343
val space =
4444
Space(
4545
id = mainSpace.id,

Application-Module/src/test/kotlin/com/asap/application/user/service/SocialLoginServiceTest.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ class SocialLoginServiceTest :
4343
socialId = "socialId",
4444
socialLoginProvider = SocialLoginProvider.KAKAO,
4545
)
46-
val getUser = UserFixture.createUser(getUserAuth.userId.value)
46+
val getUser = UserFixture.createUser(getUserAuth.userId)
4747
every { mockAuthInfoRetrievePort.getAuthInfo(SocialLoginProvider.KAKAO, "registered") } returns authInfo
4848
every {
4949
mockUserAuthManagementPort.getUserAuth(

Application-Module/src/test/kotlin/com/asap/application/user/service/UserCommandServiceTest.kt

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
package com.asap.application.user.service
22

3-
import com.asap.application.user.event.UserEvent
43
import com.asap.application.user.exception.UserException
54
import com.asap.application.user.port.`in`.RegisterUserUsecase
65
import com.asap.application.user.port.`in`.UpdateUserUsecase
@@ -19,7 +18,6 @@ import io.kotest.matchers.shouldBe
1918
import io.mockk.every
2019
import io.mockk.mockk
2120
import io.mockk.verify
22-
import org.springframework.context.ApplicationEventPublisher
2321
import java.time.LocalDate
2422

2523
class UserCommandServiceTest :
@@ -29,15 +27,13 @@ class UserCommandServiceTest :
2927
val mockUserAuthManagementPort = mockk<UserAuthManagementPort>(relaxed = true)
3028
val mockUserTokenConvertPort = mockk<UserTokenConvertPort>()
3129
val mockUserTokenManagementPort = mockk<UserTokenManagementPort>(relaxed = true)
32-
val mockEventApplicationPublisher = mockk<ApplicationEventPublisher>(relaxed = true)
3330

3431
val userCommandService =
3532
UserCommandService(
3633
mockUserTokenConvertPort,
3734
mockUserAuthManagementPort,
3835
mockUserManagementPort,
3936
mockUserTokenManagementPort,
40-
mockEventApplicationPublisher,
4137
)
4238

4339
given("회원 가입 요청이 들어왔을 때") {
@@ -68,7 +64,6 @@ class UserCommandServiceTest :
6864
response.accessToken.isNotEmpty() shouldBe true
6965
response.refreshToken.isNotEmpty() shouldBe true
7066
verify { mockUserManagementPort.save(any()) }
71-
verify { mockEventApplicationPublisher.publishEvent(any(UserEvent.UserCreatedEvent::class)) }
7267
}
7368
}
7469

Application-Module/src/test/kotlin/com/asap/application/user/service/UserTokenCommandServiceTest.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -57,11 +57,11 @@ class UserTokenCommandServiceTest :
5757

5858
val refreshToken = "valid"
5959
every { mockUserTokenManagementPort.isExistsToken(refreshToken) } returns true
60+
val mockUser = UserFixture.createUser()
6061
every { mockUserTokenConvertPort.resolveRefreshToken(refreshToken) } returns
6162
UserClaims.Refresh(
62-
userId = "123",
63+
userId = mockUser.id.value,
6364
)
64-
val mockUser = UserFixture.createUser("123")
6565
every { mockUserManagementPort.getUserNotNull(any()) } returns mockUser
6666
every { mockUserTokenConvertPort.generateAccessToken(mockUser) } returns "accessToken"
6767
every { mockUserTokenConvertPort.generateRefreshToken(mockUser) } returns "refreshToken"

Bootstrap-Module/build.gradle.kts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,4 +22,6 @@ dependencies {
2222

2323
implementation(project(Modules.INFRASTRUCTURE_PERSISTENCE_MODULE))
2424
testFixturesImplementation(testFixtures(project(Modules.INFRASTRUCTURE_PERSISTENCE_MODULE)))
25+
26+
implementation(project(Modules.INFRASTRUCTURE_EVENT_MODULE))
2527
}

Bootstrap-Module/src/main/kotlin/com/asap/bootstrap/BootstrapApplication.kt

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ package com.asap.bootstrap
33
import com.asap.application.ApplicationConfig
44
import com.asap.aws.AwsConfig
55
import com.asap.client.ClientConfig
6+
import com.asap.event.EventConfig
67
import com.asap.persistence.PersistenceConfig
78
import com.asap.security.SecurityConfig
89
import org.springframework.boot.SpringApplication
@@ -16,11 +17,12 @@ import org.springframework.context.annotation.Import
1617
ClientConfig::class,
1718
SecurityConfig::class,
1819
AwsConfig::class,
19-
PersistenceConfig::class
20-
]
20+
PersistenceConfig::class,
21+
EventConfig::class,
22+
],
2123
)
22-
class BootstrapApplication {}
24+
class BootstrapApplication
2325

2426
fun main(args: Array<String>) {
2527
SpringApplication.run(BootstrapApplication::class.java, *args)
26-
}
28+
}

0 commit comments

Comments
 (0)