@@ -7,27 +7,56 @@ open Xunit
77
88[<AutoOpen>]
99module private Common =
10- let testElem attr =
11- Elem.div attr [ Text.raw " div " ]
10+ let renderAttr attr =
11+ Elem.div [ attr ] [ ]
1212 |> renderNode
1313
1414module DsTests =
1515 [<Fact>]
1616 let ``Ds.bind should create an attribute`` () =
17- testElem [ Ds.bind " signalPath" ]
18- |> should equal """ <div data-bind:signal-path>div </div>"""
17+ renderAttr ( Ds.bind " signalPath" )
18+ |> should equal """ <div data-bind:signal-path></div>"""
1919
2020 [<Fact>]
2121 let ``Ds.post`` () =
2222 Ds.post " /channel"
2323 |> should equal """ @post('/channel')"""
2424
2525 [<Fact>]
26- let ``Ds.post with Form `` () =
26+ let ``Ds.post with Form`` () =
2727 Ds.post ( " /channel" , { RequestOptions.Defaults with ContentType = Form })
2828 |> should equal """ @post('/channel',{"contentType":"form"})"""
2929
3030 [<Fact>]
31- let ``Ds.post with SelectedForm `` () =
31+ let ``Ds.post with SelectedForm`` () =
3232 Ds.post ( " /channel" , { RequestOptions.Defaults with ContentType = ( SelectedForm " myForm" ) })
3333 |> should equal """ @post('/channel',{"contentType":"form","selector":"myForm"})"""
34+
35+ [<Fact>]
36+ let ``Ds.jsonSignalsOptions Exclude`` () =
37+ let filterFiles : SignalsFilter = { IncludePattern = ValueNone; ExcludePattern = ValueSome " files" }
38+ renderAttr ( Ds.jsonSignalsOptions filterFiles)
39+ |> should equal """ <div data-json-signals="{ exclude: /files/ }"></div>"""
40+
41+ [<Fact>]
42+ let ``Ds.jsonSignalsOptions Include`` () =
43+ let filterFiles : SignalsFilter = { IncludePattern = ValueSome " files" ; ExcludePattern = ValueNone }
44+ renderAttr ( Ds.jsonSignalsOptions filterFiles)
45+ |> should equal """ <div data-json-signals="{ include: /files/ }"></div>"""
46+
47+ [<Fact>]
48+ let ``Ds.jsonSignalsOptions Both`` () =
49+ let filterFiles : SignalsFilter = { IncludePattern = ValueSome " files$" ; ExcludePattern = ValueSome " ^files" }
50+ renderAttr ( Ds.jsonSignalsOptions filterFiles)
51+ |> should equal """ <div data-json-signals="{ include: /files$/,exclude: /^files/ }"></div>"""
52+
53+ [<Fact>]
54+ let ``Ds.jsonSignalsOptions Terse`` () =
55+ renderAttr ( Ds.jsonSignalsOptions ( terse = true ))
56+ |> should equal """ <div data-json-signals__terse></div>"""
57+
58+ [<Fact>]
59+ let ``Ds.jsonSignalsOptions Terse and Both Filters`` () =
60+ let filterFiles : SignalsFilter = { IncludePattern = ValueSome " files$" ; ExcludePattern = ValueSome " ^files" }
61+ renderAttr ( Ds.jsonSignalsOptions ( filterFiles, terse = true ))
62+ |> should equal """ <div data-json-signals__terse="{ include: /files$/,exclude: /^files/ }"></div>"""
0 commit comments