55 lines
1.2 KiB
Kotlin
55 lines
1.2 KiB
Kotlin
@file:Suppress("MemberVisibilityCanBePrivate")
|
|
|
|
package scaffold.scripting
|
|
|
|
import io.mockk.clearMocks
|
|
import io.mockk.every
|
|
import io.mockk.mockk
|
|
import io.mockk.verify
|
|
import org.junit.jupiter.api.BeforeEach
|
|
import org.junit.jupiter.api.Test
|
|
import org.junit.jupiter.api.TestInstance
|
|
import org.junit.jupiter.api.TestInstance.Lifecycle
|
|
import scaffold.Prompt
|
|
|
|
@TestInstance(Lifecycle.PER_CLASS)
|
|
class ScriptEngineTest {
|
|
|
|
val scriptContext = mockk<ScriptContext>().also {
|
|
every { it.prompt } returns Prompt()
|
|
}
|
|
|
|
val scriptEngine = ScriptEngine(scriptContext)
|
|
|
|
@BeforeEach
|
|
fun beforeEach() = clearMocks(scriptContext)
|
|
|
|
@Test
|
|
fun echo() {
|
|
every { scriptContext.echo("test") } returns Unit
|
|
|
|
val script = "echo('test')"
|
|
scriptEngine.eval(script)
|
|
|
|
verify { scriptContext.echo(any()) }
|
|
}
|
|
|
|
@Test
|
|
fun render() {
|
|
every { scriptContext.render("test", match { it["something"] == "hello" }, null) } returns Unit
|
|
|
|
val script = """
|
|
const ctx = {
|
|
"something": "hello"
|
|
}
|
|
|
|
render("test", ctx)
|
|
""".trimIndent()
|
|
|
|
scriptEngine.eval(script)
|
|
|
|
verify { scriptContext.render(any(), any(), any()) }
|
|
}
|
|
|
|
}
|