SpringDataSourcePropertySupplier
Samples
import io.microkt.example.app.KontainersDemoApplication
import io.microkt.example.app.domain.Animal
import io.microkt.example.app.repository.ReactiveAnimalRepository
import io.microkt.kontainers.junit5.annotation.DatabaseKontainer
import io.microkt.kontainers.junit5.annotation.Kontainer
import io.microkt.kontainers.postgresql.PostgresKontainer
import io.microkt.kontainers.redis.RedisKontainer
import io.microkt.kontainers.redis.spring.SpringBootRedisPropertySupplier
import kotlinx.coroutines.reactive.awaitFirst
import kotlinx.coroutines.runBlocking
import org.junit.jupiter.api.Assertions.assertEquals
import org.junit.jupiter.api.Tag
import org.junit.jupiter.api.Tags
import org.junit.jupiter.api.Test
import org.springframework.beans.factory.annotation.Autowired
import org.springframework.boot.test.context.SpringBootTest
import org.springframework.data.r2dbc.core.R2dbcEntityTemplate
import org.springframework.data.r2dbc.core.awaitFirst
import org.springframework.data.r2dbc.core.select
import org.springframework.data.relational.core.query.Criteria.where
import org.springframework.data.relational.core.query.Query.query
fun main() {
//sampleStart
@Tags(
Tag("docker"),
Tag("kubernetes")
)
@SpringBootTest(classes = [KontainersDemoApplication::class])
@DatabaseKontainer(PostgresKontainer::class)
@Kontainer(RedisKontainer::class, propertySuppliers = [SpringBootRedisPropertySupplier::class])
class KontainersDemoApplicationTests {
@Autowired
private lateinit var template: R2dbcEntityTemplate
@Autowired
private lateinit var animalRepository: ReactiveAnimalRepository
@Test
fun contextLoads() {
runBlocking {
val animal = template.select<Animal>()
.matching(query(where("name").`is`("cat")))
.awaitFirst()
assertEquals("cat", animal.name)
assertEquals("dog", animalRepository.findByName("dog").awaitFirst().name)
}
}
}
//sampleEnd
}