Skip to content
This repository was archived by the owner on Jan 20, 2023. It is now read-only.

Commit 0aa28c5

Browse files
committed
デシリアライザーのテストを追加
1 parent a379b0b commit 0aa28c5

File tree

1 file changed

+50
-0
lines changed

1 file changed

+50
-0
lines changed
Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
package com.mapk.krowmapper
2+
3+
import com.mapk.deserialization.KColumnDeserializeBy
4+
import com.mapk.deserialization.KColumnDeserializer
5+
import io.mockk.every
6+
import io.mockk.mockk
7+
import java.sql.ResultSet
8+
import java.time.LocalDateTime
9+
import java.time.format.DateTimeFormatter
10+
import org.junit.jupiter.api.Assertions.assertEquals
11+
import org.junit.jupiter.api.DisplayName
12+
import org.junit.jupiter.api.Test
13+
14+
@DisplayName("アノテーションによるデシリアライザー指定のテスト")
15+
class DeserializerTest {
16+
@Target(AnnotationTarget.VALUE_PARAMETER)
17+
@Retention(AnnotationRetention.RUNTIME)
18+
@MustBeDocumented
19+
@KColumnDeserializeBy(LocalDateTimeDeserializerImpl::class)
20+
annotation class LocalDateTimeDeserializer(val pattern: String = "yyyy-MM-dd'T'HH:mm:ss")
21+
22+
class LocalDateTimeDeserializerImpl(
23+
annotation: LocalDateTimeDeserializer
24+
) : KColumnDeserializer<LocalDateTimeDeserializer, String, LocalDateTime>(annotation) {
25+
private val formatter: DateTimeFormatter = DateTimeFormatter.ofPattern(annotation.pattern)
26+
27+
override val srcClass: Class<String> = String::class.javaObjectType
28+
29+
override fun deserialize(source: String?): LocalDateTime? {
30+
return source?.let {
31+
LocalDateTime.parse(it, formatter)
32+
}
33+
}
34+
}
35+
36+
data class Dst(@LocalDateTimeDeserializer val dateTime: LocalDateTime)
37+
38+
@Test
39+
fun test() {
40+
val resultSet = mockk<ResultSet>()
41+
every { resultSet.getObject("dateTime", any<Class<*>>()) } returns "2020-02-01T01:23:45"
42+
43+
val result = KRowMapper(::Dst).mapRow(resultSet, 0)
44+
45+
assertEquals(
46+
LocalDateTime.parse("2020-02-01T01:23:45", DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss")),
47+
result.dateTime
48+
)
49+
}
50+
}

0 commit comments

Comments
 (0)