Simplify js api

This commit is contained in:
2021-04-03 22:27:41 +02:00
parent 907fdb4f10
commit 10af871d2b
9 changed files with 178 additions and 116 deletions
+60
View File
@@ -0,0 +1,60 @@
@file:Suppress("MemberVisibilityCanBePrivate")
package scaffold
import com.github.ajalt.clikt.output.CliktConsole
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.params.ParameterizedTest
import org.junit.jupiter.params.provider.CsvSource
import strikt.api.expectThat
import strikt.assertions.isEqualTo
@TestInstance(TestInstance.Lifecycle.PER_CLASS)
class PromptTest {
val console = mockk<CliktConsole>()
val prompt = Prompt(console)
@BeforeEach
fun beforeEach() = clearMocks(console)
@CsvSource(
value = [
"null, answer, answer",
"def, answer, answer",
"def, '', def"
]
)
@ParameterizedTest(name = "prompt string({argumentsWithNames})")
fun `prompt string`(default: String?, answer: String, expectedValue: String) {
every { console.promptForLine(any(), any()) } returns answer
expectThat(prompt.string("test", default)).isEqualTo(expectedValue)
}
@CsvSource(
value = [
"null, y, true",
"null, n, false",
"true, '', true",
"true, y, true",
"true, n, false",
"false, '', false",
"false, y, true",
"false, n, false",
]
)
@ParameterizedTest(name = "prompt boolean({argumentsWithNames})")
fun `prompt boolean`(default: Boolean?, answer: String, expectedValue: Boolean) {
every { console.promptForLine(any(), any()) } returns answer
expectThat(prompt.boolean("test", default)).isEqualTo(expectedValue)
}
}
+8 -24
View File
@@ -1,4 +1,4 @@
@file:Suppress("MemberVisibilityCanBePrivate", "PackageDirectoryMismatch")
@file:Suppress("MemberVisibilityCanBePrivate")
package scaffold.scripting
@@ -10,11 +10,15 @@ 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>()
val scriptContext = mockk<ScriptContext>().also {
every { it.prompt } returns Prompt()
}
val scriptEngine = ScriptEngine(scriptContext)
@BeforeEach
@@ -32,7 +36,7 @@ class ScriptEngineTest {
@Test
fun render() {
every { scriptContext.render("test", match { it["something"] == "hello" }) } returns "blah"
every { scriptContext.render("test", match { it["something"] == "hello" }, null) } returns Unit
val script = """
const ctx = {
@@ -44,27 +48,7 @@ class ScriptEngineTest {
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()) }
verify { scriptContext.render(any(), any(), any()) }
}
}