Files
sodalive-backend-spring-boot/src/test/kotlin/kr/co/vividnext/sodalive/extensions/LocalDateTimeExtensionsTest.kt

38 lines
1.4 KiB
Kotlin

package kr.co.vividnext.sodalive.extensions
import org.junit.jupiter.api.Assertions.assertEquals
import org.junit.jupiter.api.Assertions.fail
import org.junit.jupiter.api.Test
import java.time.LocalDateTime
import java.time.ZoneId
class LocalDateTimeExtensionsTest {
@Test
fun shouldConvertToUtcUsingKstByDefault() {
val localDateTime = LocalDateTime.of(2026, 4, 9, 10, 0)
val utcDateTime = invokeConvertToUtc(localDateTime)
assertEquals(LocalDateTime.of(2026, 4, 9, 1, 0), utcDateTime)
}
@Test
fun shouldConvertToUtcUsingProvidedTimezone() {
val localDateTime = LocalDateTime.of(2026, 4, 9, 10, 0)
val utcDateTime = invokeConvertToUtc(localDateTime, ZoneId.of("Asia/Bangkok"))
assertEquals(LocalDateTime.of(2026, 4, 9, 3, 0), utcDateTime)
}
private fun invokeConvertToUtc(localDateTime: LocalDateTime, timeZone: ZoneId = ZoneId.of("Asia/Seoul")): LocalDateTime {
return try {
val method = Class.forName("kr.co.vividnext.sodalive.extensions.LocalDateTimeExtensionsKt")
.getMethod("convertToUtc", LocalDateTime::class.java, ZoneId::class.java)
method.invoke(null, localDateTime, timeZone) as LocalDateTime
} catch (e: ReflectiveOperationException) {
fail("LocalDateTime.convertToUtc 확장함수를 찾을 수 없습니다.")
}
}
}