71 lines
1.6 KiB
Kotlin
71 lines
1.6 KiB
Kotlin
@file:Suppress("MemberVisibilityCanBePrivate", "PackageDirectoryMismatch")
|
|
|
|
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
|
|
|
|
@TestInstance(Lifecycle.PER_CLASS)
|
|
class ScriptEngineTest {
|
|
|
|
val scriptContext = mockk<ScriptContext>()
|
|
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" }) } returns "blah"
|
|
|
|
val script = """
|
|
const ctx = {
|
|
"something": "hello"
|
|
}
|
|
|
|
render("test", ctx)
|
|
""".trimIndent()
|
|
|
|
scriptEngine.eval(script)
|
|
|
|
verify { scriptContext.render(any(), any()) }
|
|
}
|
|
|
|
@Test
|
|
fun prompt() {
|
|
every { scriptContext.prompt("a", null) } returns "a"
|
|
|
|
val script = "prompt('a')"
|
|
scriptEngine.eval(script)
|
|
|
|
verify { scriptContext.prompt(any(), null) }
|
|
}
|
|
|
|
@Test
|
|
fun promptWithDefault(){
|
|
every { scriptContext.prompt("a", "default") } returns "default"
|
|
|
|
val script = "prompt('a', 'default')"
|
|
scriptEngine.eval(script)
|
|
|
|
verify { scriptContext.prompt(any(), any()) }
|
|
}
|
|
|
|
}
|