-
Notifications
You must be signed in to change notification settings - Fork 13
/
FloorItemFactoryTest.kt
48 lines (43 loc) · 1.33 KB
/
FloorItemFactoryTest.kt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
package org.redrune.engine.entity.factory
import io.mockk.Runs
import io.mockk.every
import io.mockk.junit5.MockKExtension
import io.mockk.just
import io.mockk.verify
import org.junit.Assert.assertEquals
import org.junit.jupiter.api.BeforeEach
import org.junit.jupiter.api.Test
import org.junit.jupiter.api.extension.ExtendWith
import org.koin.dsl.module
import org.koin.test.mock.declareMock
import org.redrune.engine.entity.event.Registered
import org.redrune.engine.event.EventBus
import org.redrune.engine.event.eventBusModule
import org.redrune.engine.model.Tile
import org.redrune.engine.script.KoinMock
import org.redrune.utility.get
/**
* @author Greg Hibberd <greg></greg>@greghibberd.com>
* @since March 30, 2020
*/
@ExtendWith(MockKExtension::class)
internal class FloorItemFactoryTest : KoinMock() {
@BeforeEach
fun setup() {
loadModules(module { single { FloorItemFactory() } }, eventBusModule)
}
@Test
fun `Spawn registers`() {
// Given
val factory: FloorItemFactory = get()
val bus: EventBus = declareMock {
every { emit(any<Registered>()) } just Runs
}
// When
val item = factory.spawn(1, 10, 20, 1)
// Then
assertEquals(1, item.id)
verify { bus.emit<Registered>(any()) }
assertEquals(item.tile, Tile(10, 20, 1))
}
}