86 lines
2.5 KiB
Kotlin
86 lines
2.5 KiB
Kotlin
package be.simplenotes.persistence
|
|
|
|
import be.simplenotes.persistence.repositories.UserRepository
|
|
import be.simplenotes.persistence.users.fakeUser
|
|
import org.assertj.core.api.Assertions.assertThat
|
|
import org.junit.jupiter.api.BeforeEach
|
|
import org.junit.jupiter.api.Nested
|
|
import org.junit.jupiter.api.Test
|
|
import org.ktorm.database.Database
|
|
import org.ktorm.dsl.eq
|
|
import org.ktorm.entity.find
|
|
import org.ktorm.entity.toList
|
|
|
|
internal class UserRepositoryImplTest : DbTest() {
|
|
|
|
private lateinit var userRepo: UserRepository
|
|
private lateinit var db: Database
|
|
|
|
@BeforeEach
|
|
fun setup() {
|
|
userRepo = beanContext.getBean()
|
|
db = beanContext.getBean()
|
|
}
|
|
|
|
@Test
|
|
fun `insert user`() {
|
|
val user = fakeUser()
|
|
assertThat(userRepo.create(user))
|
|
.isNotNull
|
|
.extracting("username", "password")
|
|
.contains(user.username, user.password)
|
|
|
|
assertThat(db.users.find { Users.username eq user.username }).isNotNull
|
|
assertThat(db.users.toList()).hasSize(1)
|
|
assertThat(userRepo.create(user)).isNull()
|
|
}
|
|
|
|
@Nested
|
|
inner class Query {
|
|
|
|
@Test
|
|
fun `query existing user`() {
|
|
val user = fakeUser()
|
|
userRepo.create(user)
|
|
|
|
val foundUserMaybe = userRepo.find(user.username)
|
|
assertThat(foundUserMaybe).isNotNull
|
|
val foundUser = foundUserMaybe!!
|
|
assertThat(foundUser)
|
|
.usingRecursiveComparison()
|
|
.ignoringFields("id")
|
|
.isEqualTo(user)
|
|
assertThat(userRepo.exists(user.username)).isTrue
|
|
assertThat(userRepo.find(foundUser.id)).isEqualTo(foundUser)
|
|
assertThat(userRepo.exists(foundUser.id)).isTrue
|
|
}
|
|
|
|
@Test
|
|
fun `query non existing user`() {
|
|
assertThat(userRepo.find("I don't exist")).isNull()
|
|
assertThat(userRepo.find(1)).isNull()
|
|
assertThat(userRepo.exists(1)).isFalse
|
|
assertThat(userRepo.exists("I don't exist")).isFalse
|
|
}
|
|
}
|
|
|
|
@Nested
|
|
inner class Delete {
|
|
|
|
@Test
|
|
fun `delete existing user`() {
|
|
val user = fakeUser()
|
|
userRepo.create(user)
|
|
|
|
val foundUser = userRepo.find(user.username)!!
|
|
assertThat(userRepo.delete(foundUser.id)).isTrue
|
|
assertThat(db.users.toList()).isEmpty()
|
|
}
|
|
|
|
@Test
|
|
fun `delete non existing user`() {
|
|
assertThat(userRepo.delete(1)).isFalse
|
|
}
|
|
}
|
|
}
|