Skip to content

Commit 508d907

Browse files
committed
test(bukkit): Migrate to MockK and Kotest assertions
1 parent 03899d4 commit 508d907

16 files changed

+255
-581
lines changed

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313

1414
- Update Kotlin to 1.6.10
1515
- Update Gradle to 7.3.3
16+
- Migrate tests to MockK and Kotest assertions
1617

1718
## [v0.6.1] (2021-08-23)
1819

buildSrc/src/main/kotlin/commons.gradle.kts

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,4 @@ fun DependencyHandlerScope.testingDependencies() {
6363
testImplementation(junit.jupiter_params)
6464
testImplementation(misc.mockk)
6565
testImplementation(kotest.assertions)
66-
testImplementation(mockito.kotlin)
67-
testImplementation(mockito.inline)
6866
}

buildSrc/src/main/kotlin/dependencies.kt

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -32,8 +32,3 @@ object kotest {
3232
private const val version = "5.0.3"
3333
const val assertions = "io.kotest:kotest-assertions-core:$version"
3434
}
35-
36-
object mockito {
37-
const val kotlin = "com.nhaarman.mockitokotlin2:mockito-kotlin:2.2.0"
38-
const val inline = "org.mockito:mockito-inline:2.23.0"
39-
}

mimic-bukkit/src/test/kotlin/BukkitTestBase.kt

Lines changed: 17 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -19,49 +19,43 @@
1919

2020
package ru.endlesscode.mimic
2121

22-
import com.nhaarman.mockitokotlin2.doReturn
23-
import com.nhaarman.mockitokotlin2.mock
22+
import io.mockk.every
23+
import io.mockk.mockk
24+
import io.mockk.mockkStatic
2425
import org.bukkit.Bukkit
2526
import org.bukkit.Server
2627
import org.bukkit.entity.Player
2728
import org.bukkit.plugin.Plugin
2829
import org.bukkit.plugin.ServicesManager
2930
import org.bukkit.plugin.SimpleServicesManager
3031
import java.util.*
31-
import kotlin.test.BeforeTest
3232

3333
/** Base for all Bukkit-related tests. */
3434
open class BukkitTestBase {
35-
protected lateinit var server: Server
36-
protected lateinit var plugin: Plugin
37-
protected lateinit var player: Player
38-
protected val servicesManager: ServicesManager = SimpleServicesManager()
39-
40-
@BeforeTest
41-
open fun setUp() {
42-
server = mockServer()
43-
plugin = mockPlugin()
44-
player = mockPlayer()
35+
protected val server: Server = mockServer()
36+
protected val plugin: Plugin = mockPlugin(server)
37+
protected val player: Player = mockPlayer()
38+
protected val servicesManager: ServicesManager = server.servicesManager
4539

40+
init {
4641
mockBukkit()
4742
}
4843

49-
private fun mockServer(): Server = mock {
50-
on { pluginManager } doReturn mock()
51-
on { servicesManager } doReturn servicesManager
44+
private fun mockServer(): Server = mockk {
45+
every { pluginManager } returns mockk(relaxUnitFun = true)
46+
every { servicesManager } returns SimpleServicesManager()
5247
}
5348

54-
private fun mockPlugin(): Plugin = mock {
55-
on { server } doReturn server
49+
private fun mockPlugin(mockServer: Server): Plugin = mockk {
50+
every { server } returns mockServer
5651
}
5752

58-
private fun mockPlayer(): Player = mock {
59-
on { uniqueId } doReturn UUID.randomUUID()
53+
private fun mockPlayer(): Player = mockk(relaxUnitFun = true) {
54+
every { uniqueId } returns UUID.randomUUID()
6055
}
6156

6257
private fun mockBukkit() {
63-
val serverField = Bukkit::class.java.getDeclaredField("server")
64-
serverField.isAccessible = true
65-
serverField.set(null, server)
58+
mockkStatic(Bukkit::class)
59+
every { Bukkit.getServer() } returns server
6660
}
6761
}

mimic-bukkit/src/test/kotlin/impl/battlelevels/BattleLevelsLevelSystemTest.kt

Lines changed: 33 additions & 87 deletions
Original file line numberDiff line numberDiff line change
@@ -19,184 +19,130 @@
1919

2020
package ru.endlesscode.mimic.impl.battlelevels
2121

22-
import com.nhaarman.mockitokotlin2.*
22+
import io.mockk.every
23+
import io.mockk.mockk
24+
import io.mockk.verify
2325
import ru.endlesscode.mimic.BukkitTestBase
24-
import kotlin.test.BeforeTest
2526
import kotlin.test.Test
2627

2728
class BattleLevelsLevelSystemTest : BukkitTestBase() {
2829

29-
private lateinit var battleLevelsApi: BattleLevelsApiWrapper
30+
private val battleLevelsApi: BattleLevelsApiWrapper = mockk(relaxUnitFun = true) {
31+
// Our formula exp to next level is static = 10
32+
every { getNeededFor(any()) } answers { arg<Int>(0) * 10.0 }
33+
}
3034

3135
// SUT
32-
private lateinit var levelSystem: BattleLevelsLevelSystem
33-
34-
@BeforeTest
35-
override fun setUp() {
36-
super.setUp()
37-
battleLevelsApi = mock {
38-
// Our formula exp to next level is static = 10
39-
on { getNeededFor(any()) } doAnswer { it.getArgument<Int>(0) * 10.0 }
40-
}
41-
levelSystem = BattleLevelsLevelSystem(player, battleLevelsApi)
42-
}
36+
private val levelSystem: BattleLevelsLevelSystem = BattleLevelsLevelSystem(player, battleLevelsApi)
4337

4438
@Test
4539
fun `when set level lower than current - should remove level`() {
46-
// Given
4740
set(level = 10)
48-
49-
// When
5041
levelSystem.level = 6
5142

52-
// Then
53-
verify(battleLevelsApi).removeLevel(any(), eq(4))
43+
verify { battleLevelsApi.removeLevel(any(), eq(4)) }
5444
}
5545

5646
@Test
5747
fun `when set level higher than current - should add level`() {
58-
// Given
5948
set(level = 10)
60-
61-
// When
6249
levelSystem.level = 16
6350

64-
// Then
65-
verify(battleLevelsApi).addLevel(any(), eq(6))
51+
verify { battleLevelsApi.addLevel(any(), eq(6)) }
6652
}
6753

6854
@Test
6955
fun `when set level equal to current - should not change level`() {
70-
// Given
7156
set(level = 10)
72-
73-
// When
7457
levelSystem.level = 10
7558

76-
// Then
77-
verify(battleLevelsApi, never()).removeLevel(any(), any())
78-
verify(battleLevelsApi, never()).addLevel(any(), any())
59+
verify(exactly = 0) { battleLevelsApi.removeLevel(any(), any()) }
60+
verify(exactly = 0) { battleLevelsApi.addLevel(any(), any()) }
7961
}
8062

8163
@Test
8264
fun `when set total exp lower than current - should remove score`() {
83-
// Given
84-
set(totalExp = 100.0)
85-
86-
// When
65+
set(level = 1, totalExp = 100.0)
8766
levelSystem.totalExp = 60.0
8867

89-
// Then
90-
verify(battleLevelsApi).removeScore(any(), eq(40.0))
68+
verify { battleLevelsApi.removeScore(any(), eq(40.0)) }
9169
}
9270

9371
@Test
9472
fun `when set total exp higher than current - should add score`() {
95-
// Given
9673
set(level = 10, totalExp = 100.0)
97-
98-
// When
9974
levelSystem.totalExp = 160.0
10075

101-
// Then
102-
verify(battleLevelsApi).addLevel(any(), eq(6))
76+
verify { battleLevelsApi.addLevel(any(), eq(6)) }
10377
}
10478

10579
@Test
10680
fun `when set total exp equal to current - should not change score`() {
107-
// Given
10881
set(totalExp = 100.0)
109-
110-
// When
11182
levelSystem.totalExp = 100.0
11283

113-
// Then
114-
verify(battleLevelsApi, never()).removeScore(any(), any())
115-
verify(battleLevelsApi, never()).addScore(any(), any())
84+
verify(exactly = 0) { battleLevelsApi.removeScore(any(), any()) }
85+
verify(exactly = 0) { battleLevelsApi.addScore(any(), any()) }
11686
}
11787

11888
@Test
11989
fun `when give exp more than one level - should add level and give extra exp`() {
120-
// Given
12190
set(level = 1, totalExp = 16.0)
122-
123-
// When
12491
levelSystem.giveExp(28.0)
12592

126-
// Then
127-
verify(battleLevelsApi).addLevel(any(), eq(3))
128-
verify(battleLevelsApi).addScore(any(), eq(4.0))
93+
verify { battleLevelsApi.addLevel(any(), eq(3)) }
94+
verify { battleLevelsApi.addScore(any(), eq(4.0)) }
12995
}
13096

13197
@Test
13298
fun `when give exp equal to one level - should add level`() {
133-
// Given
13499
set(level = 1, totalExp = 16.0)
135-
136-
// When
137100
levelSystem.giveExp(4.0)
138101

139-
// Then
140-
verify(battleLevelsApi).addLevel(any(), eq(1))
141-
verify(battleLevelsApi, never()).addScore(any(), any())
102+
verify { battleLevelsApi.addLevel(any(), eq(1)) }
103+
verify(exactly = 0) { battleLevelsApi.addScore(any(), any()) }
142104
}
143105

144106
@Test
145107
fun `when give exp not more than one level - should add exp`() {
146-
// Given
147108
set(level = 1, totalExp = 16.0)
148-
149-
// When
150109
levelSystem.giveExp(3.0)
151110

152-
// Then
153-
verify(battleLevelsApi).addScore(any(), eq(3.0))
154-
verify(battleLevelsApi, never()).addLevel(any(), any())
111+
verify { battleLevelsApi.addScore(any(), eq(3.0)) }
112+
verify(exactly = 0) { battleLevelsApi.addLevel(any(), any()) }
155113
}
156114

157115
@Test
158116
fun `when take exp more than current exp - should take level and give extra exp`() {
159-
// Given
160117
set(level = 10, totalExp = 106.0)
161-
162-
// When
163118
levelSystem.takeExp(28.0)
164119

165-
// Then
166-
verify(battleLevelsApi).removeLevel(any(), eq(3))
167-
verify(battleLevelsApi).addScore(any(), eq(8.0))
168-
verify(battleLevelsApi, never()).removeScore(any(), any())
120+
verify { battleLevelsApi.removeLevel(any(), eq(3)) }
121+
verify { battleLevelsApi.addScore(any(), eq(8.0)) }
122+
verify(exactly = 0) { battleLevelsApi.removeScore(any(), any()) }
169123
}
170124

171125
@Test
172126
fun `when take exp equal to two levels - should take level and not give extra exp`() {
173-
// Given
174127
set(level = 10, totalExp = 106.0)
175-
176-
// When
177128
levelSystem.takeExp(26.0)
178129

179-
// Then
180-
verify(battleLevelsApi).removeLevel(any(), eq(2))
181-
verify(battleLevelsApi, never()).addScore(any(), any())
182-
verify(battleLevelsApi, never()).removeScore(any(), any())
130+
verify { battleLevelsApi.removeLevel(any(), eq(2)) }
131+
verify(exactly = 0) { battleLevelsApi.addScore(any(), any()) }
132+
verify(exactly = 0) { battleLevelsApi.removeScore(any(), any()) }
183133
}
184134

185135
@Test
186136
fun `when take exp not more than current exp - should take only exp`() {
187-
// Given
188137
set(level = 10, totalExp = 106.0)
189-
190-
// When
191138
levelSystem.takeExp(6.0)
192139

193-
// Then
194-
verify(battleLevelsApi).removeScore(any(), eq(6.0))
195-
verify(battleLevelsApi, never()).removeLevel(any(), any())
140+
verify { battleLevelsApi.removeScore(any(), eq(6.0)) }
141+
verify(exactly = 0) { battleLevelsApi.removeLevel(any(), any()) }
196142
}
197143

198144
private fun set(level: Int? = null, totalExp: Double? = null) {
199-
if (level != null) whenever(battleLevelsApi.getLevel(any())) doReturn level
200-
if (totalExp != null) whenever(battleLevelsApi.getScore(any())) doReturn totalExp
145+
if (level != null) every { battleLevelsApi.getLevel(any()) } returns level
146+
if (totalExp != null) every { battleLevelsApi.getScore(any()) } returns totalExp
201147
}
202148
}

0 commit comments

Comments
 (0)