package test.pl.treksoft.kvision.dropdown
import pl.treksoft.kvision.core.Root
import pl.treksoft.kvision.dropdown.DD
import pl.treksoft.kvision.dropdown.DropDown
import test.pl.treksoft.kvision.DomSpec
import kotlin.browser.document
import kotlin.test.Test
import kotlin.test.assertEquals
import kotlin.test.assertTrue
class DropDownSpec : DomSpec {
@Test
fun render() {
run {
val root = Root("test")
val dd = DropDown("Dropdown", listOf("abc" to "#!/x", "def" to "#!/y"), "flag")
root.add(dd)
dd.toggle()
val element = document.getElementById("test")
val id = dd.button.id
assertEquals("
", element?.innerHTML, "Should render correct drop down")
}
}
@Test
fun renderDropUp() {
run {
val root = Root("test")
val dd = DropDown("Dropdown", listOf("abc" to "#!/x", "def" to "#!/y"), "flag", dropup = true)
root.add(dd)
dd.toggle()
val element = document.getElementById("test")
val id = dd.button.id
assertEquals("
", element?.innerHTML, "Should render correct drop down")
}
}
@Test
fun renderHeaderElement() {
run {
val root = Root("test")
val dd = DropDown("Dropdown", listOf("abc" to DD.HEADER.type), "flag")
root.add(dd)
dd.toggle()
val element = document.getElementById("test")
val id = dd.button.id
assertEquals("
abc
", element?.innerHTML, "Should render correct drop down")
}
}
@Test
fun renderSeparatorElement() {
run {
val root = Root("test")
val dd = DropDown("Dropdown", listOf("abc" to DD.SEPARATOR.type), "flag")
root.add(dd)
dd.toggle()
val element = document.getElementById("test")
val id = dd.button.id
assertEquals("
abc
", element?.innerHTML, "Should render correct drop down")
}
}
@Test
fun renderDisabledElement() {
run {
val root = Root("test")
val dd = DropDown("Dropdown", listOf("abc" to DD.DISABLED.type), "flag")
root.add(dd)
dd.toggle()
val element = document.getElementById("test")
val id = dd.button.id
assertEquals("
", element?.innerHTML, "Should render correct drop down")
}
}
@Test
fun toggle() {
run {
val root = Root("test")
val dd = DropDown("Dropdown", listOf("abc" to "#!/x", "def" to "#!/y"), "flag")
root.add(dd)
val menu = dd.list.getElementJQuery()
assertTrue("Dropdown menu is not rendered before toggle") { menu == null }
dd.toggle()
val classes = dd.getElementJQuery()?.attr("class")
assertTrue("Dropdown is visible after toggle") { classes?.contains("open") == true }
val menu2 = dd.list.getElementJQuery()
assertTrue("Dropdown menu is rendered after toggle") { menu2 != null }
}
}
}