Scaffold/app/test/scripting/ScriptEngineTest.kt

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()) }
}
}