on master help sign in
Add tests for ‘urlQ’
commit872cc15ed1fed83a2e70ec2a73fd63062ce446ff authorLila <lila91142@gmail.com> dateTue 26 May 2020, 02:22 (6 years ago) parent47eb2fd
2 files changed+19−1
pure-tests/Network/HTTP/ReqSpec.hs+18−1 req.cabal+1
pure-tests/Network/HTTP/ReqSpec.hs+18−1
@@ -8,6 +8,7 @@
88{-# LANGUAGE RankNTypes #-}
99{-# LANGUAGE RecordWildCards #-}
1010{-# LANGUAGE ScopedTypeVariables #-}
11+{-# LANGUAGE TypeApplications #-}
1112{-# LANGUAGE NoMonomorphismRestriction #-}
1213{-# OPTIONS_GHC -fno-warn-orphans #-}
1314
@@ -26,13 +27,16 @@ import qualified Data.ByteString.Lazy as BL
2627import qualified Data.CaseInsensitive as CI
2728import Data.Either (isRight)
2829import qualified Data.List.NonEmpty as NE
29−import Data.Maybe (fromJust, fromMaybe, isNothing)
30+import Data.Maybe (fromJust, fromMaybe, isJust, isNothing)
3031import Data.Proxy
3132import Data.Text (Text)
3233import qualified Data.Text as T
3334import qualified Data.Text.Encoding as T
3435import Data.Time
36+import Data.Typeable (Typeable, eqT)
3537import GHC.Generics
38+import qualified Language.Haskell.TH as TH
39+import qualified Language.Haskell.TH.Quote as TH
3640import qualified Network.HTTP.Client as L
3741import Network.HTTP.Req
3842import qualified Network.HTTP.Types as Y
@@ -409,6 +413,19 @@ spec = do
409413 request <- req_ GET url NoReqBody (httpVersion major minor)
410414 L.requestVersion request `shouldBe` Y.HttpVersion major minor
411415
416+ describe "quasiquoter" $ do
417+ it "works for valid urls" $
418+ -- Doing it this way instead of just checking if [urlQ|...|] :: (Url
419+ -- 'Https, Option _) type checks, so we can catch if the type of scheme
420+ -- is unspecified.
421+ let testTypeOfQuoterResult ::
422+ forall a s. Typeable a => (a, Option s) -> Bool
423+ testTypeOfQuoterResult _ = isJust $ eqT @a @(Url 'Https)
424+ in property $ testTypeOfQuoterResult [urlQ|https://example.org/|]
425+ it "doesn't work for invalid urls"
426+ $ property
427+ $ TH.runQ (TH.quoteExp urlQ "not a url") `shouldThrow` anyIOException
428+
412429----------------------------------------------------------------------------
413430-- Instances
414431
req.cabal+1
@@ -91,6 +91,7 @@ test-suite pure-tests
9191 mtl >=2.0 && <3.0,
9292 req -any,
9393 retry >=0.8 && <0.9,
94+ template-haskell >=2.14 && <2.17,
9495 text >=0.2 && <1.3,
9596 time >=1.2 && <1.10
9697