Skip to content

Commit 0bc7383

Browse files
author
Peter Vestlin
committed
Lade till JDBC-tester.
1 parent 9e3dd22 commit 0bc7383

File tree

7 files changed

+67
-6
lines changed

7 files changed

+67
-6
lines changed

build.gradle

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,9 @@ dependencies {
4343

4444

4545
testCompile 'junit:junit'
46-
46+
testCompile "org.springframework.boot:spring-boot-starter-test"
47+
testCompile 'org.jetbrains.kotlin:kotlin-test-junit:1.0.0'
48+
testCompile 'org.hamcrest:hamcrest-junit:2.0.0.0'
4749

4850
}
4951

src/main/kotlin/nu/westlin/kartrepo/JdbcKartRepository.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,15 @@
11
package nu.westlin.kartrepo
22

3-
import org.springframework.beans.factory.annotation.Autowired
43
import org.springframework.jdbc.JdbcUpdateAffectedIncorrectNumberOfRowsException
54
import org.springframework.jdbc.core.JdbcOperations
65
import org.springframework.jdbc.core.RowMapper
76
import org.springframework.stereotype.Repository
87
import java.sql.ResultSet
98
import java.sql.SQLException
9+
import javax.inject.Inject
1010

1111
@Repository
12-
open class JdbcKartRepository @Autowired constructor(var jdbcOperations: JdbcOperations) : KartRepository {
12+
open class JdbcKartRepository @Inject constructor(var jdbcOperations: JdbcOperations) : KartRepository {
1313

1414
override fun store(user: Driver) {
1515
val rows: Int = jdbcOperations.update("insert into driver(alias, firstname, lastname) values(?,?,?)",

src/main/kotlin/nu/westlin/kartrepo/KartController.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
package nu.westlin.kartrepo
22

3-
import org.springframework.beans.factory.annotation.Autowired
43
import org.springframework.dao.IncorrectResultSizeDataAccessException
54
import org.springframework.http.HttpStatus
65
import org.springframework.web.bind.annotation.*
6+
import javax.inject.Inject
77

88
@RestController
9-
open class KartController @Autowired constructor(val kartRepository: KartRepository) {
9+
open class KartController @Inject constructor(val kartRepository: KartRepository) {
1010

1111
@RequestMapping("/driver")
1212
fun greeting(@RequestParam(value = "username", defaultValue = "pwestlin") username: String): Driver {
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
package nu.westlin.kartrepo
2+
3+
import org.junit.runner.RunWith
4+
import org.springframework.boot.test.SpringApplicationConfiguration
5+
import org.springframework.test.context.junit4.AbstractTransactionalJUnit4SpringContextTests
6+
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner
7+
8+
@RunWith(SpringJUnit4ClassRunner::class)
9+
@SpringApplicationConfiguration(classes = arrayOf(TestConfiguration::class))
10+
abstract class AbstractDatabaseTest : AbstractTransactionalJUnit4SpringContextTests()
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
package nu.westlin.kartrepo
2+
3+
import org.hamcrest.CoreMatchers.`is`
4+
import org.junit.Assert.assertThat
5+
import org.junit.Test
6+
import org.springframework.boot.test.SpringApplicationConfiguration
7+
import org.springframework.jdbc.core.JdbcOperations
8+
import javax.inject.Inject
9+
10+
@SpringApplicationConfiguration(classes = arrayOf(TestConfiguration::class))
11+
open class JdbcKartRepositoryTest() : AbstractDatabaseTest() {
12+
13+
val driver = Driver("alias", "firstname", "lastname")
14+
15+
@Inject
16+
lateinit var jdbcOperations: JdbcOperations
17+
18+
@Inject
19+
lateinit var repository: JdbcKartRepository
20+
21+
@Test
22+
fun store() {
23+
repository.store(driver)
24+
25+
assertThat(repository.load(driver.alias),
26+
`is`(jdbcOperations.queryForObject("select alias,firstname,lastname from driver where alias=?", JdbcKartRepository.DriverRowMapper(), driver.alias)))
27+
}
28+
29+
@Test
30+
fun load() {
31+
jdbcOperations.update(
32+
"insert into driver(alias, firstname, lastname) values(?,?,?)",
33+
driver.alias, driver.firstname, driver.lastname)
34+
35+
assertThat(repository.load(driver.alias), `is`(driver))
36+
}
37+
}
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
package nu.westlin.kartrepo
2+
3+
import org.springframework.boot.autoconfigure.EnableAutoConfiguration
4+
import org.springframework.context.annotation.ComponentScan
5+
import org.springframework.context.annotation.Configuration
6+
7+
@Configuration
8+
@EnableAutoConfiguration
9+
@ComponentScan("nu.westlin.kartrepo")
10+
open class TestConfiguration

todo.txt

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,9 @@ Applikationstyp: Command line, Spring Boot.
1414
Byggverktyg: Gradle
1515

1616
Saker kvar:
17-
-enhetstester (även JDBC)
17+
-enhetstester
18+
-JDBC-tester
19+
-
1820

1921
Saker att testa:
2022
-Något annat än JDBC för databasanrop (ex https://github.com/JetBrains/Exposed).

0 commit comments

Comments
 (0)