refactor: common.persistence 모듈 분리로 인한 기존 테스트 코드 수정

This commit is contained in:
이상진 2025-09-27 20:19:00 +09:00
parent 07869020be
commit 81572246d2
6 changed files with 948 additions and 954 deletions

View File

@ -1,13 +1,12 @@
package com.sangdol.roomescape.auth
import io.kotest.assertions.throwables.shouldThrow
import io.kotest.core.spec.style.FunSpec
import io.kotest.matchers.shouldBe
import com.sangdol.roomescape.auth.exception.AuthErrorCode
import com.sangdol.roomescape.auth.exception.AuthException
import com.sangdol.roomescape.auth.infrastructure.jwt.JwtUtils
import com.sangdol.roomescape.common.config.next
import com.sangdol.roomescape.supports.tsidFactory
import com.sangdol.roomescape.supports.IDGenerator
import io.kotest.assertions.throwables.shouldThrow
import io.kotest.core.spec.style.FunSpec
import io.kotest.matchers.shouldBe
class JwtUtilsTest : FunSpec() {
private val jwtUtils: JwtUtils = JwtUtils(
@ -18,7 +17,7 @@ class JwtUtilsTest : FunSpec() {
init {
context("종합 테스트") {
test("Subject + Claim을 담아 토큰을 생성한 뒤 읽어온다.") {
val subject = "${tsidFactory.next()}"
val subject = "${IDGenerator.create()}"
val claim = mapOf("name" to "sangdol")
jwtUtils.createToken(subject, claim).also { token ->
@ -32,7 +31,7 @@ class JwtUtilsTest : FunSpec() {
}
context("실패 테스트") {
val subject = "${tsidFactory.next()}"
val subject = "${IDGenerator.create()}"
val claim = mapOf("name" to "sangdol")
val commonToken = jwtUtils.createToken(subject, claim)

View File

@ -1,12 +1,10 @@
package com.sangdol.roomescape.data
import org.apache.poi.xssf.usermodel.XSSFWorkbook
import com.sangdol.roomescape.common.config.next
import com.sangdol.roomescape.store.infrastructure.persistence.StoreStatus
import com.sangdol.roomescape.supports.IDGenerator
import com.sangdol.roomescape.supports.randomPhoneNumber
import com.sangdol.roomescape.supports.tsidFactory
import org.apache.poi.xssf.usermodel.XSSFWorkbook
import java.io.File
import java.nio.file.Paths
import java.time.LocalDateTime
import java.time.ZoneId
import java.time.format.DateTimeFormatter
@ -146,7 +144,7 @@ class StoreDataInitializer {
val createdAt = randomLocalDateTime()
val updatedAt = createdAt
val id: Long = tsidFactory.next().also { storeIds.add(it) }
val id: Long = IDGenerator.create().also { storeIds.add(it) }
val createdBy = creatableAdminIds.random()

View File

@ -1,7 +1,5 @@
package com.sangdol.roomescape.supports
import org.springframework.data.repository.findByIdOrNull
import com.sangdol.roomescape.common.config.next
import com.sangdol.roomescape.payment.business.PaymentWriter
import com.sangdol.roomescape.payment.infrastructure.client.CardDetail
import com.sangdol.roomescape.payment.infrastructure.client.EasyPayDetail
@ -31,6 +29,7 @@ import com.sangdol.roomescape.theme.infrastructure.persistence.ThemeRepository
import com.sangdol.roomescape.theme.web.ThemeCreateRequest
import com.sangdol.roomescape.theme.web.toEntity
import com.sangdol.roomescape.user.infrastructure.persistence.UserEntity
import org.springframework.data.repository.findByIdOrNull
import java.time.LocalDateTime
class DummyInitializer(
@ -43,7 +42,7 @@ class DummyInitializer(
) {
fun createStore(
id: Long = tsidFactory.next(),
id: Long = IDGenerator.create(),
name: String = "행복${randomPhoneNumber()}호점",
address: String = "강북구 행복로 $name",
contact: String = randomPhoneNumber(),
@ -71,11 +70,11 @@ class DummyInitializer(
fun createTheme(
request: ThemeCreateRequest = ThemeFixture.createRequest
): ThemeEntity {
return request.toEntity(tsidFactory.next()).also { themeRepository.save(it) }
return request.toEntity(IDGenerator.create()).also { themeRepository.save(it) }
}
fun createSchedule(
storeId: Long = tsidFactory.next(),
storeId: Long = IDGenerator.create(),
request: ScheduleCreateRequest = ScheduleFixture.createRequest,
status: ScheduleStatus = ScheduleStatus.AVAILABLE
): ScheduleEntity {
@ -102,7 +101,7 @@ class DummyInitializer(
fun createPendingReservation(
user: UserEntity,
storeId: Long = tsidFactory.next(),
storeId: Long = IDGenerator.create(),
themeRequest: ThemeCreateRequest = ThemeFixture.createRequest,
scheduleRequest: ScheduleCreateRequest = ScheduleFixture.createRequest,
reservationRequest: PendingReservationCreateRequest = ReservationFixture.pendingCreateRequest,
@ -129,14 +128,14 @@ class DummyInitializer(
reserverContact = reservationRequest.reserverContact,
participantCount = reservationRequest.participantCount,
requirement = reservationRequest.requirement,
).toEntity(id = tsidFactory.next(), userId = user.id)
).toEntity(id = IDGenerator.create(), userId = user.id)
return reservationRepository.save(reservation)
}
fun createConfirmReservation(
user: UserEntity,
storeId: Long = tsidFactory.next(),
storeId: Long = IDGenerator.create(),
themeRequest: ThemeCreateRequest = ThemeFixture.createRequest,
scheduleRequest: ScheduleCreateRequest = ScheduleFixture.createRequest,
reservationRequest: PendingReservationCreateRequest = ReservationFixture.pendingCreateRequest,

View File

@ -1,10 +1,10 @@
package com.sangdol.roomescape.supports
import com.github.f4b6a3.tsid.TsidFactory
import com.sangdol.common.persistence.TsidIDGenerator
import com.sangdol.roomescape.admin.infrastructure.persistence.AdminEntity
import com.sangdol.roomescape.admin.infrastructure.persistence.AdminPermissionLevel
import com.sangdol.roomescape.admin.infrastructure.persistence.AdminType
import com.sangdol.roomescape.common.config.next
import com.sangdol.roomescape.payment.infrastructure.client.*
import com.sangdol.roomescape.payment.infrastructure.common.*
import com.sangdol.roomescape.payment.web.PaymentCancelRequest
@ -28,7 +28,7 @@ import java.time.LocalTime
import java.time.OffsetDateTime
const val INVALID_PK: Long = 9999L
val tsidFactory = TsidFactory(0)
val IDGenerator = TsidIDGenerator(TsidFactory(0))
object StoreFixture {
val registerRequest = StoreRegisterRequest(
@ -40,7 +40,7 @@ object StoreFixture {
)
fun create(
id: Long = tsidFactory.next(),
id: Long = IDGenerator.create(),
name: String = "행복${randomPhoneNumber()}호점",
address: String = "서울특별시 강북구 행복${randomPhoneNumber()}",
contact: String = randomPhoneNumber(),
@ -72,12 +72,12 @@ object AdminFixture {
)
fun createStoreAdmin(
id: Long = tsidFactory.next(),
id: Long = IDGenerator.create(),
account: String = randomString(),
password: String = "adminPassword",
name: String = "admin12345",
phone: String = randomPhoneNumber(),
storeId: Long = tsidFactory.next(),
storeId: Long = IDGenerator.create(),
permissionLevel: AdminPermissionLevel = AdminPermissionLevel.FULL_ACCESS
): AdminEntity {
return create(
@ -93,7 +93,7 @@ object AdminFixture {
}
fun createHqAdmin(
id: Long = tsidFactory.next(),
id: Long = IDGenerator.create(),
account: String = randomString(),
password: String = "adminPassword",
name: String = "admin12345",
@ -113,13 +113,13 @@ object AdminFixture {
}
fun create(
id: Long = tsidFactory.next(),
id: Long = IDGenerator.create(),
account: String = randomString(),
password: String = "adminPassword",
name: String = "admin",
phone: String = randomPhoneNumber(),
type: AdminType = AdminType.STORE,
storeId: Long? = tsidFactory.next(),
storeId: Long? = IDGenerator.create(),
permissionLevel: AdminPermissionLevel = AdminPermissionLevel.FULL_ACCESS
): AdminEntity {
val storeId = if (type == AdminType.HQ) null else storeId
@ -144,7 +144,7 @@ object UserFixture {
)
fun createUser(
id: Long = tsidFactory.next(),
id: Long = IDGenerator.create(),
name: String = randomString(),
email: String = randomEmail(),
password: String = "a".repeat(MIN_PASSWORD_LENGTH),
@ -186,7 +186,7 @@ object ThemeFixture {
)
fun create(
id: Long = tsidFactory.next(),
id: Long = IDGenerator.create(),
name: String = randomString(),
description: String = randomString(),
thumbnailUrl: String = "http://www.bing.com/search?q=fugit",
@ -218,15 +218,15 @@ object ScheduleFixture {
val createRequest: ScheduleCreateRequest = ScheduleCreateRequest(
date = LocalDate.now().plusDays(1),
time = LocalTime.now(),
themeId = tsidFactory.next()
themeId = IDGenerator.create()
)
fun create(
id: Long = tsidFactory.next(),
id: Long = IDGenerator.create(),
date: LocalDate = LocalDate.now().plusDays(1),
time: LocalTime = LocalTime.now(),
storeId: Long = tsidFactory.next(),
themeId: Long = tsidFactory.next()
storeId: Long = IDGenerator.create(),
themeId: Long = IDGenerator.create()
): ScheduleEntity = ScheduleEntityFactory.create(
id = id,
date = date,
@ -245,7 +245,7 @@ object PaymentFixture {
)
val cancelRequest: PaymentCancelRequest = PaymentCancelRequest(
reservationId = tsidFactory.next(),
reservationId = IDGenerator.create(),
cancelReason = "cancelReason",
)
@ -322,7 +322,7 @@ object PaymentFixture {
object ReservationFixture {
val pendingCreateRequest: PendingReservationCreateRequest = PendingReservationCreateRequest(
scheduleId = tsidFactory.next(),
scheduleId = IDGenerator.create(),
reserverName = "Wilbur Stuart",
reserverContact = "wilbur@example.com",
participantCount = 5,

View File

@ -1,11 +1,5 @@
package com.sangdol.roomescape.theme
import io.kotest.matchers.collections.shouldContainInOrder
import io.kotest.matchers.collections.shouldHaveSize
import org.hamcrest.CoreMatchers.equalTo
import org.springframework.http.HttpMethod
import org.springframework.http.HttpStatus
import com.sangdol.roomescape.common.config.next
import com.sangdol.roomescape.common.util.DateUtils
import com.sangdol.roomescape.supports.*
import com.sangdol.roomescape.theme.exception.ThemeErrorCode
@ -14,6 +8,11 @@ import com.sangdol.roomescape.theme.infrastructure.persistence.ThemeRepository
import com.sangdol.roomescape.theme.web.ThemeInfoResponse
import com.sangdol.roomescape.theme.web.toEntity
import com.sangdol.roomescape.user.infrastructure.persistence.UserEntity
import io.kotest.matchers.collections.shouldContainInOrder
import io.kotest.matchers.collections.shouldHaveSize
import org.hamcrest.CoreMatchers.equalTo
import org.springframework.http.HttpMethod
import org.springframework.http.HttpStatus
import java.time.LocalDate
class ThemeApiTest(
@ -78,7 +77,7 @@ class ThemeApiTest(
val user: UserEntity = testAuthUtil.defaultUser()
val themeIds: List<Long> = (1..5).map {
themeRepository.save(ThemeFixture.createRequest.copy().toEntity(id = tsidFactory.next())).id
themeRepository.save(ThemeFixture.createRequest.copy().toEntity(id = IDGenerator.create())).id
}
val store = dummyInitializer.createStore()