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