v2.0.6 (#15)
- Adds XML documentation (#13) - Adds `HxSync` module and attribute helper - Updates script version to 2.0.6 - Drops .NET 6 support (#14 ) Reviewed-on: #15
This commit was merged in pull request #15.
This commit is contained in:
+45
-14
@@ -406,8 +406,8 @@ let hxEvent =
|
||||
Expect.equal (XhrProgress.ToHxOnString()) "xhr:progress" "XhrProgress hx-on event name not correct"
|
||||
}
|
||||
]
|
||||
|
||||
]
|
||||
|
||||
/// Tests for the HxHeaders module
|
||||
let hxHeaders =
|
||||
testList "HxHeaders" [
|
||||
@@ -497,6 +497,32 @@ let hxRequest =
|
||||
]
|
||||
]
|
||||
|
||||
/// Tests for the HxSync module
|
||||
let hxSync =
|
||||
testList "HxSync" [
|
||||
test "Drop is correct" {
|
||||
Expect.equal HxSync.Drop "drop" "Drop is incorrect"
|
||||
}
|
||||
test "Abort is correct" {
|
||||
Expect.equal HxSync.Abort "abort" "Abort is incorrect"
|
||||
}
|
||||
test "Replace is correct" {
|
||||
Expect.equal HxSync.Replace "replace" "Replace is incorrect"
|
||||
}
|
||||
test "Queue is correct" {
|
||||
Expect.equal HxSync.Queue "queue" "Queue is incorrect"
|
||||
}
|
||||
test "QueueFirst is correct" {
|
||||
Expect.equal HxSync.QueueFirst "queue first" "QueueFirst is incorrect"
|
||||
}
|
||||
test "QueueLast is correct" {
|
||||
Expect.equal HxSync.QueueLast "queue last" "QueueLast is incorrect"
|
||||
}
|
||||
test "QueueAll is correct" {
|
||||
Expect.equal HxSync.QueueAll "queue all" "QueueAll is incorrect"
|
||||
}
|
||||
]
|
||||
|
||||
/// Tests for the HxTrigger module
|
||||
let hxTrigger =
|
||||
testList "HxTrigger" [
|
||||
@@ -636,6 +662,9 @@ let hxTrigger =
|
||||
test "succeeds when it is not the first modifier" {
|
||||
Expect.equal (HxTrigger.Queue "def" "click") "click queue:def" "Queue modifier incorrect"
|
||||
}
|
||||
test "succeeds when no type of queueing is given" {
|
||||
Expect.equal (HxTrigger.Queue "" "blur") "blur queue" "Queue modifier incorrect"
|
||||
}
|
||||
]
|
||||
testList "QueueFirst" [
|
||||
test "succeeds when it is the first modifier" {
|
||||
@@ -726,7 +755,7 @@ let attributes =
|
||||
|> shouldRender """<figure hx-headers="{ "X-Special-Header": "some-header" }"></figure>"""
|
||||
}
|
||||
test "_hxHistory succeeds" {
|
||||
span [ _hxHistory "false" ] [] |> shouldRender """<span hx-history="false"></span>"""
|
||||
span [ _hxHistory false ] [] |> shouldRender """<span hx-history="false"></span>"""
|
||||
}
|
||||
test "_hxHistoryElt succeeds" {
|
||||
table [ _hxHistoryElt ] [] |> shouldRender """<table hx-history-elt></table>"""
|
||||
@@ -757,7 +786,7 @@ let attributes =
|
||||
hr [ _hxPost "/hear-ye-hear-ye" ] |> shouldRender """<hr hx-post="/hear-ye-hear-ye">"""
|
||||
}
|
||||
test "_hxPreserve succeeds" {
|
||||
img [ _hxPreserve ] |> shouldRender """<img hx-preserve="true">"""
|
||||
img [ _hxPreserve ] |> shouldRender """<img hx-preserve>"""
|
||||
}
|
||||
test "_hxPrompt succeeds" {
|
||||
strong [ _hxPrompt "Who goes there?" ] []
|
||||
@@ -792,7 +821,8 @@ let attributes =
|
||||
li [ _hxSwapOob "true" ] [] |> shouldRender """<li hx-swap-oob="true"></li>"""
|
||||
}
|
||||
test "_hxSync succeeds" {
|
||||
nav [ _hxSync "closest form:abort" ] [] |> shouldRender """<nav hx-sync="closest form:abort"></nav>"""
|
||||
nav [ _hxSync "closest form" HxSync.Abort ] []
|
||||
|> shouldRender """<nav hx-sync="closest form:abort"></nav>"""
|
||||
}
|
||||
test "_hxTarget succeeds" {
|
||||
header [ _hxTarget "#somewhereElse" ] [] |> shouldRender """<header hx-target="#somewhereElse"></header>"""
|
||||
@@ -819,14 +849,14 @@ let script =
|
||||
let html = RenderView.AsString.htmlNode Script.minified
|
||||
Expect.equal
|
||||
html
|
||||
"""<script src="https://unpkg.com/htmx.org@2.0.4" integrity="sha384-HGfztofotfshcF7+8n44JQL2oJmowVChPTg48S+jvZoztPfvwD79OC/LTtG6dMp+" crossorigin="anonymous"></script>"""
|
||||
"""<script src="https://cdn.jsdelivr.net/npm/htmx.org@2.0.6/dist/htmx.min.js" integrity="sha384-Akqfrbj/HpNVo8k11SXBb6TlBWmXXlYQrCSqEWmyKJe+hDm3Z/B2WVG4smwBkRVm" crossorigin="anonymous"></script>"""
|
||||
"Minified script tag is incorrect"
|
||||
}
|
||||
test "unminified succeeds" {
|
||||
let html = RenderView.AsString.htmlNode Script.unminified
|
||||
Expect.equal
|
||||
html
|
||||
"""<script src="https://unpkg.com/htmx.org@2.0.4/dist/htmx.js" integrity="sha384-oeUn82QNXPuVkGCkcrInrS1twIxKhkZiFfr2TdiuObZ3n3yIeMiqcRzkIcguaof1" crossorigin="anonymous"></script>"""
|
||||
"""<script src="https://cdn.jsdelivr.net/npm/htmx.org@2.0.6/dist/htmx.js" integrity="sha384-ksKjJrwjL5VxqAkAZAVOPXvMkwAykMaNYegdixAESVr+KqLkKE8XBDoZuwyWVUDv" crossorigin="anonymous"></script>"""
|
||||
"Unminified script tag is incorrect"
|
||||
}
|
||||
]
|
||||
@@ -839,7 +869,7 @@ let renderFragment =
|
||||
|
||||
/// Validate that the two object references are the same object
|
||||
let isSame obj1 obj2 message =
|
||||
Expect.isTrue (obj.ReferenceEquals (obj1, obj2)) message
|
||||
Expect.isTrue (obj.ReferenceEquals(obj1, obj2)) message
|
||||
|
||||
testList "findIdNode" [
|
||||
test "fails with a Text node" {
|
||||
@@ -921,7 +951,7 @@ let renderFragment =
|
||||
}
|
||||
test "fails when an ID is not matched" {
|
||||
Expect.equal
|
||||
(RenderFragment.AsBytes.htmlFromNodes "whiff" []) (utf8.GetBytes (nodeNotFound "whiff"))
|
||||
(RenderFragment.AsBytes.htmlFromNodes "whiff" []) (utf8.GetBytes(nodeNotFound "whiff"))
|
||||
"HTML bytes are incorrect"
|
||||
}
|
||||
]
|
||||
@@ -938,7 +968,7 @@ let renderFragment =
|
||||
}
|
||||
test "fails when an ID is not matched" {
|
||||
Expect.equal
|
||||
(RenderFragment.AsBytes.htmlFromNode "foo" (hr [])) (utf8.GetBytes (nodeNotFound "foo"))
|
||||
(RenderFragment.AsBytes.htmlFromNode "foo" (hr [])) (utf8.GetBytes(nodeNotFound "foo"))
|
||||
"HTML bytes are incorrect"
|
||||
}
|
||||
]
|
||||
@@ -946,31 +976,31 @@ let renderFragment =
|
||||
testList "IntoStringBuilder" [
|
||||
testList "htmlFromNodes" [
|
||||
test "succeeds when an ID is matched" {
|
||||
let sb = StringBuilder ()
|
||||
let sb = StringBuilder()
|
||||
RenderFragment.IntoStringBuilder.htmlFromNodes sb "find-me"
|
||||
[ p [] []; p [ _id "peekaboo" ] [ str "bzz"; str "nope"; span [ _id "find-me" ] [ str ";)" ] ]]
|
||||
Expect.equal (string sb) """<span id="find-me">;)</span>""" "HTML is incorrect"
|
||||
}
|
||||
test "fails when an ID is not matched" {
|
||||
let sb = StringBuilder ()
|
||||
let sb = StringBuilder()
|
||||
RenderFragment.IntoStringBuilder.htmlFromNodes sb "missing" []
|
||||
Expect.equal (string sb) (nodeNotFound "missing") "HTML is incorrect"
|
||||
}
|
||||
]
|
||||
testList "htmlFromNode" [
|
||||
test "succeeds when ID is matched at top level" {
|
||||
let sb = StringBuilder ()
|
||||
let sb = StringBuilder()
|
||||
RenderFragment.IntoStringBuilder.htmlFromNode sb "top" (p [ _id "top" ] [ str "pinnacle" ])
|
||||
Expect.equal (string sb) """<p id="top">pinnacle</p>""" "HTML is incorrect"
|
||||
}
|
||||
test "succeeds when ID is matched in child element" {
|
||||
let sb = StringBuilder ()
|
||||
let sb = StringBuilder()
|
||||
div [] [ p [] [ str "nada" ]; p [ _id "it" ] [ str "is here" ]]
|
||||
|> RenderFragment.IntoStringBuilder.htmlFromNode sb "it"
|
||||
Expect.equal (string sb) """<p id="it">is here</p>""" "HTML is incorrect"
|
||||
}
|
||||
test "fails when an ID is not matched" {
|
||||
let sb = StringBuilder ()
|
||||
let sb = StringBuilder()
|
||||
RenderFragment.IntoStringBuilder.htmlFromNode sb "bar" (hr [])
|
||||
Expect.equal (string sb) (nodeNotFound "bar") "HTML is incorrect"
|
||||
}
|
||||
@@ -986,6 +1016,7 @@ let allTests =
|
||||
hxHeaders
|
||||
hxParams
|
||||
hxRequest
|
||||
hxSync
|
||||
hxTrigger
|
||||
hxVals
|
||||
attributes
|
||||
|
||||
Reference in New Issue
Block a user