diff --git a/pom.xml b/pom.xml index 192ed5b7a..610ca7628 100644 --- a/pom.xml +++ b/pom.xml @@ -270,24 +270,10 @@ - com.nhaarman - mockito-kotlin - 1.5.0 + io.mockk + mockk + 1.9.1 test - - - org.jetbrains.kotlin - kotlin-stdlib - - - org.jetbrains.kotlin - kotlin-reflect - - - org.mockito - mockito-core - - diff --git a/src/test/kotlin/org/springframework/data/convert/KotlinClassGeneratingEntityInstantiatorUnitTests.kt b/src/test/kotlin/org/springframework/data/convert/KotlinClassGeneratingEntityInstantiatorUnitTests.kt index 016fff630..693da40f3 100644 --- a/src/test/kotlin/org/springframework/data/convert/KotlinClassGeneratingEntityInstantiatorUnitTests.kt +++ b/src/test/kotlin/org/springframework/data/convert/KotlinClassGeneratingEntityInstantiatorUnitTests.kt @@ -15,14 +15,10 @@ */ package org.springframework.data.convert -import com.nhaarman.mockito_kotlin.any -import com.nhaarman.mockito_kotlin.doReturn -import com.nhaarman.mockito_kotlin.whenever +import io.mockk.every +import io.mockk.mockk import org.assertj.core.api.Assertions import org.junit.Test -import org.junit.runner.RunWith -import org.mockito.Mock -import org.mockito.junit.MockitoJUnitRunner import org.springframework.data.annotation.PersistenceConstructor import org.springframework.data.mapping.PersistentEntity import org.springframework.data.mapping.context.SamplePersistentProperty @@ -35,23 +31,23 @@ import java.lang.IllegalArgumentException * Unit tests for [KotlinClassGeneratingEntityInstantiator] creating instances using Kotlin data classes. * * @author Mark Paluch + * @author Sebastien Deleuze */ -@RunWith(MockitoJUnitRunner::class) @Suppress("UNCHECKED_CAST") class KotlinClassGeneratingEntityInstantiatorUnitTests { - @Mock lateinit var entity: PersistentEntity<*, *> - @Mock lateinit var provider: ParameterValueProvider + val provider = mockk>() @Test // DATACMNS-1126 fun `should create instance`() { - val entity = this.entity as PersistentEntity + val entity = mockk>() val constructor = PreferredConstructorDiscoverer.discover(Contact::class.java) - doReturn("Walter", "White").`when`(provider).getParameterValue(any()) - doReturn(constructor).whenever(entity).persistenceConstructor - doReturn(constructor.constructor.declaringClass).whenever(entity).type + every { provider.getParameterValue(any()) }.returnsMany("Walter", "White") + every { entity.persistenceConstructor } returns constructor + every { entity.type } returns constructor.constructor.declaringClass + every { entity.typeInformation } returns mockk() val instance: Contact = KotlinClassGeneratingEntityInstantiator().createInstance(entity, provider) @@ -62,15 +58,18 @@ class KotlinClassGeneratingEntityInstantiatorUnitTests { @Test // DATACMNS-1126 fun `should create instance and fill in defaults`() { - val entity = this.entity as PersistentEntity + val entity = mockk>() val constructor = PreferredConstructorDiscoverer.discover(ContactWithDefaulting::class.java) - doReturn("Walter", null, "Skyler", null, null, null, null, null, null, null, /* 0-9 */ + every { provider.getParameterValue(any()) }.returnsMany( + "Walter", null, "Skyler", null, null, null, null, null, null, null, /* 0-9 */ null, null, null, null, null, null, null, null, null, null, /* 10-19 */ null, null, null, null, null, null, null, null, null, null, /* 20-29 */ - null, "Walter", null, "Junior", null).`when`(provider).getParameterValue(any()) - doReturn(constructor).whenever(entity).persistenceConstructor - doReturn(constructor.constructor.declaringClass).whenever(entity).type + null, "Walter", null, "Junior", null) + + every { entity.persistenceConstructor } returns constructor + every { entity.type } returns constructor.constructor.declaringClass + every { entity.typeInformation } returns mockk() val instance: ContactWithDefaulting = KotlinClassGeneratingEntityInstantiator().createInstance(entity, provider) @@ -85,11 +84,13 @@ class KotlinClassGeneratingEntityInstantiatorUnitTests { @Test // DATACMNS-1200 fun `absent primitive value should cause MappingInstantiationException`() { - val entity = this.entity as PersistentEntity + val entity = mockk>() val constructor = PreferredConstructorDiscoverer.discover(WithBoolean::class.java) - doReturn(constructor).whenever(entity).persistenceConstructor - doReturn(constructor.constructor.declaringClass).whenever(entity).type + every { provider.getParameterValue(any()) } returns null + every { entity.persistenceConstructor } returns constructor + every { entity.type } returns constructor.constructor.declaringClass + every { entity.typeInformation } returns mockk() Assertions.assertThatThrownBy { KotlinClassGeneratingEntityInstantiator().createInstance(entity, provider) } // .isInstanceOf(MappingInstantiationException::class.java) // @@ -100,11 +101,20 @@ class KotlinClassGeneratingEntityInstantiatorUnitTests { @Test // DATACMNS-1200 fun `should apply primitive defaulting for absent parameters`() { - val entity = this.entity as PersistentEntity + val entity = mockk>() val constructor = PreferredConstructorDiscoverer.discover(WithPrimitiveDefaulting::class.java) - doReturn(constructor).whenever(entity).persistenceConstructor - doReturn(constructor.constructor.declaringClass).whenever(entity).type + every { provider.getParameterValue(any()) } returns null + every { provider.getParameterValue(any()) } returns null + every { provider.getParameterValue(any()) } returns null + every { provider.getParameterValue(any()) } returns null + every { provider.getParameterValue(any()) } returns null + every { provider.getParameterValue(any()) } returns null + every { provider.getParameterValue(any()) } returns null + every { provider.getParameterValue(any()) } returns null + every { entity.persistenceConstructor } returns constructor + every { entity.type } returns constructor.constructor.declaringClass + every { entity.typeInformation } returns mockk() val instance: WithPrimitiveDefaulting = KotlinClassGeneratingEntityInstantiator().createInstance(entity, provider) @@ -121,12 +131,13 @@ class KotlinClassGeneratingEntityInstantiatorUnitTests { @Test // DATACMNS-1338 fun `should create instance using @PersistenceConstructor`() { - val entity = this.entity as PersistentEntity + val entity = mockk>() val constructor = PreferredConstructorDiscoverer.discover(CustomUser::class.java) - doReturn("Walter").`when`(provider).getParameterValue(any()) - doReturn(constructor).whenever(entity).persistenceConstructor - doReturn(constructor.constructor.declaringClass).whenever(entity).type + every { provider.getParameterValue(any()) } returns "Walter" + every { entity.persistenceConstructor } returns constructor + every { entity.type } returns constructor.constructor.declaringClass + every { entity.typeInformation } returns mockk() val instance: CustomUser = KotlinClassGeneratingEntityInstantiator().createInstance(entity, provider) diff --git a/src/test/kotlin/org/springframework/data/convert/ReflectionEntityInstantiatorDataClassUnitTests.kt b/src/test/kotlin/org/springframework/data/convert/ReflectionEntityInstantiatorDataClassUnitTests.kt index 7fd86ee20..f959211b3 100644 --- a/src/test/kotlin/org/springframework/data/convert/ReflectionEntityInstantiatorDataClassUnitTests.kt +++ b/src/test/kotlin/org/springframework/data/convert/ReflectionEntityInstantiatorDataClassUnitTests.kt @@ -15,14 +15,10 @@ */ package org.springframework.data.convert -import com.nhaarman.mockito_kotlin.any -import com.nhaarman.mockito_kotlin.doReturn -import com.nhaarman.mockito_kotlin.whenever +import io.mockk.every +import io.mockk.mockk import org.assertj.core.api.Assertions import org.junit.Test -import org.junit.runner.RunWith -import org.mockito.Mock -import org.mockito.junit.MockitoJUnitRunner import org.springframework.data.mapping.PersistentEntity import org.springframework.data.mapping.context.SamplePersistentProperty import org.springframework.data.mapping.model.ParameterValueProvider @@ -32,22 +28,21 @@ import org.springframework.data.mapping.model.PreferredConstructorDiscoverer * Unit tests for [ReflectionEntityInstantiator] creating instances using Kotlin data classes. * * @author Mark Paluch + * @author Sebastien Deleuze */ -@RunWith(MockitoJUnitRunner::class) @Suppress("UNCHECKED_CAST") class ReflectionEntityInstantiatorDataClassUnitTests { - @Mock lateinit var entity: PersistentEntity<*, *> - @Mock lateinit var provider: ParameterValueProvider + val provider = mockk>() @Test // DATACMNS-1126 fun `should create instance`() { - val entity = this.entity as PersistentEntity + val entity = mockk>() val constructor = PreferredConstructorDiscoverer.discover(Contact::class.java) - doReturn("Walter", "White").`when`(provider).getParameterValue(any()) - doReturn(constructor).whenever(entity).persistenceConstructor + every { provider.getParameterValue(any()) }.returnsMany("Walter", "White") + every { entity.persistenceConstructor } returns constructor val instance: Contact = ReflectionEntityInstantiator.INSTANCE.createInstance(entity, provider) @@ -58,11 +53,11 @@ class ReflectionEntityInstantiatorDataClassUnitTests { @Test // DATACMNS-1126 fun `should create instance and fill in defaults`() { - val entity = this.entity as PersistentEntity + val entity = mockk>() val constructor = PreferredConstructorDiscoverer.discover(ContactWithDefaulting::class.java) - doReturn("Walter", null).`when`(provider).getParameterValue(any()) - doReturn(constructor).whenever(entity).persistenceConstructor + every { provider.getParameterValue(any()) }.returnsMany("Walter", null) + every { entity.persistenceConstructor } returns constructor val instance: ContactWithDefaulting = ReflectionEntityInstantiator.INSTANCE.createInstance(entity, provider) diff --git a/src/test/kotlin/org/springframework/data/repository/CrudRepositoryExtensionsTests.kt b/src/test/kotlin/org/springframework/data/repository/CrudRepositoryExtensionsTests.kt index 4e00aba0c..625658657 100644 --- a/src/test/kotlin/org/springframework/data/repository/CrudRepositoryExtensionsTests.kt +++ b/src/test/kotlin/org/springframework/data/repository/CrudRepositoryExtensionsTests.kt @@ -15,28 +15,30 @@ */ package org.springframework.data.repository -import com.nhaarman.mockito_kotlin.verify +import io.mockk.every +import io.mockk.mockk +import io.mockk.verify +import org.junit.Assert.assertEquals import org.junit.Test -import org.junit.runner.RunWith -import org.mockito.Answers -import org.mockito.Mock -import org.mockito.junit.MockitoJUnitRunner import org.springframework.data.repository.sample.User +import java.util.* +import kotlin.test.assertNull /** * Unit tests for CrudRepositoryExtensions. * * @author Sebastien Deleuze */ -@RunWith(MockitoJUnitRunner::class) class CrudRepositoryExtensionsTests { - @Mock(answer = Answers.RETURNS_MOCKS) - lateinit var repository: CrudRepository + var repository = mockk>() @Test // DATACMNS-1346 fun `CrudRepository#findByIdOrNull() extension should call its Java counterpart`() { - repository.findByIdOrNull("foo") - verify(repository).findById("foo") + val user = User() + every { repository.findById("foo") }.returnsMany(Optional.of(user), Optional.empty()) + assertEquals(user, repository.findByIdOrNull("foo")) + assertNull(repository.findByIdOrNull("foo")) + verify(exactly = 2) { repository.findById("foo") } } }