This repository was archived by the owner on Jan 20, 2023. It is now read-only.
File tree Expand file tree Collapse file tree 3 files changed +37
-3
lines changed
main/kotlin/com/mapk/krowmapper
test/kotlin/com/mapk/krowmapper Expand file tree Collapse file tree 3 files changed +37
-3
lines changed Original file line number Diff line number Diff line change @@ -6,7 +6,7 @@ plugins {
66}
77
88group = " com.mapk"
9- version = " 0.1 "
9+ version = " 0.2 "
1010
1111java {
1212 sourceCompatibility = JavaVersion .VERSION_1_8
@@ -36,7 +36,7 @@ dependencies {
3636 exclude(module = " spring-jcl" )
3737 exclude(module = " spring-tx" )
3838 }
39- implementation (" com.github.ProjectMapK:Shared:0.6 " )
39+ api (" com.github.ProjectMapK:Shared:0.7 " )
4040
4141 // https://mvnrepository.com/artifact/org.junit.jupiter/junit-jupiter
4242 testImplementation(group = " org.junit.jupiter" , name = " junit-jupiter" , version = " 5.6.0" ) {
Original file line number Diff line number Diff line change @@ -2,6 +2,7 @@ package com.mapk.krowmapper
22
33import com.mapk.core.EnumMapper
44import com.mapk.core.KFunctionForCall
5+ import com.mapk.core.isUseDefaultArgument
56import com.mapk.core.toKConstructor
67import java.sql.ResultSet
78import kotlin.reflect.KClass
@@ -22,7 +23,7 @@ class KRowMapper<T : Any> private constructor(
2223 )
2324
2425 private val parameters: List <ParameterForMap <* >> = function.parameters
25- .filter { it.kind != KParameter .Kind .INSTANCE }
26+ .filter { it.kind != KParameter .Kind .INSTANCE && ! it.isUseDefaultArgument() }
2627 .map { ParameterForMap .newInstance(it, propertyNameConverter) }
2728
2829 override fun mapRow (rs : ResultSet , rowNum : Int ): T {
Original file line number Diff line number Diff line change 1+ package com.mapk.krowmapper
2+
3+ import com.google.common.base.CaseFormat
4+ import com.mapk.annotations.KUseDefaultArgument
5+ import io.mockk.every
6+ import io.mockk.mockk
7+ import io.mockk.verify
8+ import java.sql.ResultSet
9+ import org.junit.jupiter.api.Assertions
10+ import org.junit.jupiter.api.DisplayName
11+ import org.junit.jupiter.api.Test
12+
13+ class DefaultValueTest {
14+ data class Dst (val fooId : Int , @param:KUseDefaultArgument val barValue : String = " default" )
15+
16+ private fun camelToSnake (camel : String ): String = CaseFormat .LOWER_CAMEL .to(CaseFormat .LOWER_UNDERSCORE , camel)
17+
18+ @Test
19+ @DisplayName(" デフォルト値を用いたマッピングテスト" )
20+ fun test () {
21+ val resultSet = mockk<ResultSet >()
22+ every { resultSet.getObject(" foo_id" , any<Class <* >>()) } returns 1
23+ every { resultSet.getObject(" bar_value" , any<Class <* >>()) } returns " From result set."
24+
25+ val result = KRowMapper (::Dst , this ::camelToSnake).mapRow(resultSet, 0 )
26+
27+ Assertions .assertEquals(1 , result.fooId)
28+ Assertions .assertEquals(" default" , result.barValue)
29+
30+ verify(exactly = 1 ) { resultSet.getObject(" foo_id" , Int ::class .java) }
31+ verify(exactly = 0 ) { resultSet.getObject(" bar_value" , String ::class .java) }
32+ }
33+ }
You can’t perform that action at this time.
0 commit comments