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