packages feed

webgear-server-1.1.0: test/Unit/Trait/Path.hs

module Unit.Trait.Path (
  tests,
) where

import Data.Functor.Identity (runIdentity)
import Network.Wai (defaultRequest, pathInfo)
import Test.Tasty (TestTree, testGroup)
import Test.Tasty.HUnit (assertFailure, testCase, (@?=))
import WebGear.Core.Request (Request (..))
import WebGear.Core.Trait (getTrait, wzero)
import WebGear.Core.Trait.Path (PathVar (..), PathVarError (..))
import WebGear.Server.Handler (runServerHandler)
import WebGear.Server.Trait.Path ()

testMissingPathVar :: TestTree
testMissingPathVar = testCase "PathVar match: missing variable" $ do
  let req = wzero $ Request $ defaultRequest{pathInfo = []}
  runIdentity $ do
    res <- runServerHandler (getTrait (PathVar @"tag" @Int)) [] req
    pure $ case res of
      Right (Left e) -> e @?= PathVarNotFound
      _ -> assertFailure "unexpected success"

tests :: TestTree
tests = testGroup "Trait.Path" [testMissingPathVar]