generated from pricelees/issue-pr-template
73 lines
2.5 KiB
Kotlin
73 lines
2.5 KiB
Kotlin
package roomescape.util
|
|
|
|
import io.kotest.core.config.AbstractProjectConfig
|
|
import io.kotest.core.spec.Spec
|
|
import io.kotest.core.spec.style.FunSpec
|
|
import io.kotest.extensions.spring.SpringExtension
|
|
import io.kotest.extensions.spring.SpringTestExtension
|
|
import io.restassured.RestAssured
|
|
import org.springframework.beans.factory.annotation.Autowired
|
|
import org.springframework.boot.test.context.SpringBootTest
|
|
import org.springframework.boot.test.context.TestConfiguration
|
|
import org.springframework.boot.test.web.server.LocalServerPort
|
|
import org.springframework.context.annotation.Bean
|
|
import org.springframework.context.annotation.Import
|
|
import org.springframework.test.context.ActiveProfiles
|
|
import roomescape.admin.infrastructure.persistence.AdminRepository
|
|
import roomescape.member.infrastructure.persistence.UserRepository
|
|
import roomescape.payment.business.PaymentWriter
|
|
import roomescape.payment.infrastructure.persistence.PaymentRepository
|
|
import roomescape.reservation.infrastructure.persistence.ReservationRepository
|
|
import roomescape.schedule.infrastructure.persistence.ScheduleRepository
|
|
import roomescape.theme.infrastructure.persistence.ThemeRepository
|
|
|
|
object KotestConfig : AbstractProjectConfig() {
|
|
override fun extensions(): List<SpringTestExtension> = listOf(SpringExtension)
|
|
}
|
|
|
|
@Import(TestConfig::class)
|
|
@ActiveProfiles("test")
|
|
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
|
|
abstract class FunSpecSpringbootTest : FunSpec({
|
|
extension(DatabaseCleanerExtension())
|
|
}) {
|
|
@Autowired
|
|
private lateinit var userRepository: UserRepository
|
|
|
|
@Autowired
|
|
private lateinit var adminRepository: AdminRepository
|
|
|
|
@Autowired
|
|
lateinit var dummyInitializer: DummyInitializer
|
|
|
|
@LocalServerPort
|
|
var port: Int = 0
|
|
|
|
lateinit var authUtil: AuthUtil
|
|
|
|
override suspend fun beforeSpec(spec: Spec) {
|
|
RestAssured.port = port
|
|
authUtil = AuthUtil(userRepository, adminRepository)
|
|
}
|
|
}
|
|
|
|
@TestConfiguration
|
|
class TestConfig {
|
|
@Bean
|
|
fun dummyInitializer(
|
|
themeRepository: ThemeRepository,
|
|
scheduleRepository: ScheduleRepository,
|
|
reservationRepository: ReservationRepository,
|
|
paymentWriter: PaymentWriter,
|
|
paymentRepository: PaymentRepository
|
|
): DummyInitializer {
|
|
return DummyInitializer(
|
|
themeRepository = themeRepository,
|
|
scheduleRepository = scheduleRepository,
|
|
reservationRepository = reservationRepository,
|
|
paymentWriter = paymentWriter,
|
|
paymentRepository = paymentRepository
|
|
)
|
|
}
|
|
}
|