elm-pages-v3-beta/tests/HeadTests.elm
2022-11-15 11:05:30 -08:00

67 lines
2.1 KiB
Elm

module HeadTests exposing (suite)
import Expect
import Head
import Json.Decode
import Test exposing (Test, describe, test)
suite : Test
suite =
describe "strips loading/pre-loading directives"
[ test "strips script" <|
\() ->
Head.nonLoadingNode "script"
[ ( "src", Head.raw "/script.js" )
]
|> expectStripped
, test "strips script with different casing" <|
\() ->
Head.nonLoadingNode "scripT"
[ ( "src", Head.raw "/script.js" )
]
|> expectStripped
, test "link preload is stripped" <|
\() ->
Head.nonLoadingNode "link"
[ ( "rel", Head.raw "preload" )
]
|> expectStripped
, test "link modulepreload is stripped" <|
\() ->
Head.nonLoadingNode "link"
[ ( "rel", Head.raw "modulepreload" )
]
|> expectStripped
, test "link stylesheet is stripped" <|
\() ->
Head.nonLoadingNode "link"
[ ( "rel", Head.raw "stylesheet" )
, ( "src", Head.raw "/style.css" )
]
|> expectStripped
, test "preserves non-loading link tags" <|
\() ->
Head.nonLoadingNode "link"
[ ( "rel", Head.raw "me" )
, ( "href", Head.raw "mysite.com" )
]
|> expectPreserved
]
expectStripped : Head.Tag -> Expect.Expectation
expectStripped actual =
actual
|> Head.toJson "" ""
|> Json.Decode.decodeValue (Json.Decode.field "type" Json.Decode.string)
|> Expect.equal (Ok "stripped")
expectPreserved : Head.Tag -> Expect.Expectation
expectPreserved actual =
actual
|> Head.toJson "" ""
|> Json.Decode.decodeValue (Json.Decode.field "type" Json.Decode.string)
|> Expect.notEqual (Ok "stripped")