packages feed

modern-uri-0.3.1.0: tests/Text/QQSpec.hs

{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE QuasiQuotes       #-}
{-# LANGUAGE TemplateHaskell   #-}

module Text.QQSpec (spec) where

import Test.Hspec
import Text.URI
import qualified Text.URI.QQ as QQ

spec :: Spec
spec = do
  describe "uri" . it "works" $ do
    let uriQQ = [QQ.uri|https://markkarpov.com|]
    uri <- mkURI "https://markkarpov.com"
    uriQQ `shouldBe` uri
  describe "scheme" . it "works" $ do
    let schemeQQ = [QQ.scheme|https|]
    scheme <- mkScheme "https"
    schemeQQ `shouldBe` scheme
  describe "host" . it "works" $ do
    let hostQQ = [QQ.host|markkarpov.com|]
    host <- mkHost "markkarpov.com"
    hostQQ `shouldBe` host
  describe "username" . it "works" $ do
    let usernameQQ = [QQ.username|mark|]
    username <- mkUsername "mark"
    usernameQQ `shouldBe` username
  describe "password" . it "works" $ do
    let passwordQQ = [QQ.password|secret123|]
    password <- mkPassword "secret123"
    passwordQQ `shouldBe` password
  describe "pathPiece" . it "works" $ do
    let pathPieceQQ = [QQ.pathPiece|foo|]
    pathPiece <- mkPathPiece "foo"
    pathPieceQQ `shouldBe` pathPiece
  describe "queryKey" . it "works" $ do
    let queryKeyQQ = [QQ.queryKey|foo|]
    queryKey <- mkQueryKey "foo"
    queryKeyQQ `shouldBe` queryKey
  describe "queryValue" . it "works" $ do
    let queryValueQQ = [QQ.queryValue|bar|]
    queryValue <- mkQueryKey "bar"
    queryValueQQ `shouldBe` queryValue
  describe "fragment" . it "works" $ do
    let fragmentQQ = [QQ.fragment|frag|]
    fragment <- mkQueryKey "frag"
    fragmentQQ `shouldBe` fragment