{-# LANGUAGE OverloadedLists #-} {-# LANGUAGE QuasiQuotes #-} module Test.URISpec where import Skeletest import Web.Hyperbole import Web.Hyperbole.Data.URI spec :: Spec spec = do describe "URI" $ do it "should preserve slashes" $ do let u = [uri|http://example.com|] ./. "hello" u.uriPath `shouldBe` "/hello" it "should render with path slashes" $ do let u = [uri|http://example.com/test|] uriToText (u ./. ["wahoo"]) `shouldBe` "http://example.com/test/wahoo" uriToText (u ./. ["/wahoo"]) `shouldBe` "http://example.com/test/wahoo" uriToText (u ./. []) `shouldBe` "http://example.com/test" uriToText (u ./. "/") `shouldBe` "http://example.com/test" describe "Path" $ do it "handles edge cases" $ do path "" `shouldBe` [] path "/" `shouldBe` [] it "normal paths" $ do path "woot" `shouldBe` ["woot"] path "woot/hello" `shouldBe` ["woot", "hello"] path "/woot/hello" `shouldBe` ["woot", "hello"] path "/woot/hello/" `shouldBe` ["woot", "hello"]