Simplify js api
This commit is contained in:
@@ -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)
|
||||
}
|
||||
|
||||
}
|
||||
@@ -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()) }
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user