mirror of
https://github.com/phfroidmont/scalive.git
synced 2025-12-25 13:36:59 +01:00
Stream events and responses
This commit is contained in:
parent
dc3cc0ac07
commit
fcc5f1799e
9 changed files with 233 additions and 153 deletions
|
|
@ -27,8 +27,9 @@ object LiveViewSpec extends TestSuite:
|
|||
|
||||
test("Static only") {
|
||||
val lv =
|
||||
new LiveView[String, Unit]:
|
||||
val el = div("Static string")
|
||||
new LiveView[Nothing]:
|
||||
val el = div("Static string")
|
||||
def handleEvent = _ => ()
|
||||
lv.el.syncAll()
|
||||
|
||||
test("init") {
|
||||
|
|
@ -47,14 +48,14 @@ object LiveViewSpec extends TestSuite:
|
|||
|
||||
test("Dynamic string") {
|
||||
val lv =
|
||||
new LiveView[UpdateEvent, Nothing]:
|
||||
new LiveView[UpdateEvent]:
|
||||
val model = Var(TestModel())
|
||||
val el =
|
||||
div(
|
||||
h1(model(_.title)),
|
||||
p(model(_.otherString))
|
||||
)
|
||||
override def handleClientEvent(evt: UpdateEvent): Unit = model.update(evt.f)
|
||||
def handleEvent = evt => model.update(evt.f)
|
||||
|
||||
lv.el.syncAll()
|
||||
lv.el.setAllUnchanged()
|
||||
|
|
@ -75,19 +76,19 @@ object LiveViewSpec extends TestSuite:
|
|||
assertEqualsDiff(lv.el, emptyDiff)
|
||||
}
|
||||
test("diff with update") {
|
||||
lv.handleClientEvent(UpdateEvent(_.copy(title = "title updated")))
|
||||
lv.handleEvent(UpdateEvent(_.copy(title = "title updated")))
|
||||
assertEqualsDiff(
|
||||
lv.el,
|
||||
Json.Obj("0" -> Json.Str("title updated"))
|
||||
)
|
||||
}
|
||||
test("diff with update and no change") {
|
||||
lv.handleClientEvent(UpdateEvent(_.copy(title = "title value")))
|
||||
lv.handleEvent(UpdateEvent(_.copy(title = "title value")))
|
||||
assertEqualsDiff(lv.el, emptyDiff)
|
||||
}
|
||||
test("diff with update in multiple commands") {
|
||||
lv.handleClientEvent(UpdateEvent(_.copy(title = "title updated")))
|
||||
lv.handleClientEvent(UpdateEvent(_.copy(otherString = "other string updated")))
|
||||
lv.handleEvent(UpdateEvent(_.copy(title = "title updated")))
|
||||
lv.handleEvent(UpdateEvent(_.copy(otherString = "other string updated")))
|
||||
assertEqualsDiff(
|
||||
lv.el,
|
||||
Json
|
||||
|
|
@ -101,11 +102,11 @@ object LiveViewSpec extends TestSuite:
|
|||
|
||||
test("Dynamic attribute") {
|
||||
val lv =
|
||||
new LiveView[UpdateEvent, Nothing]:
|
||||
new LiveView[UpdateEvent]:
|
||||
val model = Var(TestModel())
|
||||
val el =
|
||||
div(cls := model(_.cls))
|
||||
override def handleClientEvent(evt: UpdateEvent): Unit = model.update(evt.f)
|
||||
def handleEvent = evt => model.update(evt.f)
|
||||
|
||||
lv.el.syncAll()
|
||||
lv.el.setAllUnchanged()
|
||||
|
|
@ -126,7 +127,7 @@ object LiveViewSpec extends TestSuite:
|
|||
assertEqualsDiff(lv.el, emptyDiff)
|
||||
}
|
||||
test("diff with update") {
|
||||
lv.handleClientEvent(UpdateEvent(_.copy(cls = "text-md")))
|
||||
lv.handleEvent(UpdateEvent(_.copy(cls = "text-md")))
|
||||
assertEqualsDiff(
|
||||
lv.el,
|
||||
Json.Obj("0" -> Json.Str("text-md"))
|
||||
|
|
@ -136,7 +137,7 @@ object LiveViewSpec extends TestSuite:
|
|||
|
||||
test("when mod") {
|
||||
val lv =
|
||||
new LiveView[UpdateEvent, Nothing]:
|
||||
new LiveView[UpdateEvent]:
|
||||
val model = Var(TestModel())
|
||||
val el =
|
||||
div(
|
||||
|
|
@ -144,7 +145,7 @@ object LiveViewSpec extends TestSuite:
|
|||
div("static string", model(_.nestedTitle))
|
||||
)
|
||||
)
|
||||
override def handleClientEvent(evt: UpdateEvent): Unit = model.update(evt.f)
|
||||
def handleEvent = evt => model.update(evt.f)
|
||||
|
||||
lv.el.syncAll()
|
||||
lv.el.setAllUnchanged()
|
||||
|
|
@ -164,11 +165,11 @@ object LiveViewSpec extends TestSuite:
|
|||
assertEqualsDiff(lv.el, emptyDiff)
|
||||
}
|
||||
test("diff with unrelated update") {
|
||||
lv.handleClientEvent(UpdateEvent(_.copy(title = "title updated")))
|
||||
lv.handleEvent(UpdateEvent(_.copy(title = "title updated")))
|
||||
assertEqualsDiff(lv.el, emptyDiff)
|
||||
}
|
||||
test("diff when true and nested update") {
|
||||
lv.handleClientEvent(UpdateEvent(_.copy(bool = true)))
|
||||
lv.handleEvent(UpdateEvent(_.copy(bool = true)))
|
||||
assertEqualsDiff(
|
||||
lv.el,
|
||||
Json.Obj(
|
||||
|
|
@ -183,10 +184,10 @@ object LiveViewSpec extends TestSuite:
|
|||
)
|
||||
}
|
||||
test("diff when nested change") {
|
||||
lv.handleClientEvent(UpdateEvent(_.copy(bool = true)))
|
||||
lv.handleEvent(UpdateEvent(_.copy(bool = true)))
|
||||
lv.el.syncAll()
|
||||
lv.el.setAllUnchanged()
|
||||
lv.handleClientEvent(UpdateEvent(_.copy(bool = true, nestedTitle = "nested title updated")))
|
||||
lv.handleEvent(UpdateEvent(_.copy(bool = true, nestedTitle = "nested title updated")))
|
||||
assertEqualsDiff(
|
||||
lv.el,
|
||||
Json.Obj(
|
||||
|
|
@ -209,7 +210,7 @@ object LiveViewSpec extends TestSuite:
|
|||
)
|
||||
)
|
||||
val lv =
|
||||
new LiveView[UpdateEvent, Nothing]:
|
||||
new LiveView[UpdateEvent]:
|
||||
val model = Var(initModel)
|
||||
val el =
|
||||
div(
|
||||
|
|
@ -224,7 +225,7 @@ object LiveViewSpec extends TestSuite:
|
|||
)
|
||||
)
|
||||
)
|
||||
override def handleClientEvent(evt: UpdateEvent): Unit = model.update(evt.f)
|
||||
def handleEvent = evt => model.update(evt.f)
|
||||
|
||||
lv.el.syncAll()
|
||||
lv.el.setAllUnchanged()
|
||||
|
|
@ -265,11 +266,11 @@ object LiveViewSpec extends TestSuite:
|
|||
assertEqualsDiff(lv.el, emptyDiff)
|
||||
}
|
||||
test("diff with unrelated update") {
|
||||
lv.handleClientEvent(UpdateEvent(_.copy(title = "title updated")))
|
||||
lv.handleEvent(UpdateEvent(_.copy(title = "title updated")))
|
||||
assertEqualsDiff(lv.el, emptyDiff)
|
||||
}
|
||||
test("diff with item changed") {
|
||||
lv.handleClientEvent(
|
||||
lv.handleEvent(
|
||||
UpdateEvent(_.copy(items = initModel.items.updated(2, NestedModel("c", 99))))
|
||||
)
|
||||
assertEqualsDiff(
|
||||
|
|
@ -289,7 +290,7 @@ object LiveViewSpec extends TestSuite:
|
|||
)
|
||||
}
|
||||
test("diff with item added") {
|
||||
lv.handleClientEvent(
|
||||
lv.handleEvent(
|
||||
UpdateEvent(
|
||||
_.copy(items = initModel.items.appended(NestedModel("d", 35)))
|
||||
)
|
||||
|
|
@ -312,7 +313,7 @@ object LiveViewSpec extends TestSuite:
|
|||
)
|
||||
}
|
||||
test("diff with first item removed") {
|
||||
lv.handleClientEvent(
|
||||
lv.handleEvent(
|
||||
UpdateEvent(
|
||||
_.copy(items = initModel.items.tail)
|
||||
)
|
||||
|
|
@ -339,7 +340,7 @@ object LiveViewSpec extends TestSuite:
|
|||
)
|
||||
}
|
||||
test("diff all removed") {
|
||||
lv.handleClientEvent(UpdateEvent(_.copy(items = List.empty)))
|
||||
lv.handleEvent(UpdateEvent(_.copy(items = List.empty)))
|
||||
assertEqualsDiff(
|
||||
lv.el,
|
||||
Json.Obj(
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue