packages feed

servant-routes-0.1.0.0: test/Servant/API/Routes/HeaderSpec.hs

module Servant.API.Routes.HeaderSpec
  ( spec
  , sampleReps
  )
where

import Servant.API (Header)
import Servant.API.Routes.Header
import Servant.API.Routes.Internal.Header
import Servant.API.Routes.Util
import Test.Hspec as H

spec :: Spec
spec = do
  describe "mkHeaderRep" $ do
    it "should work" $ do
      mkHeaderRep @"sym" @Int `shouldBe` HeaderRep "sym" intTypeRep

  describe "GetheaderReps" $ do
    it "should return an empty list for an empty type-level list" $
      getHeaderReps @'[] `shouldBe` []
    it "should recurse properly" $
      sampleReps `shouldBe` HeaderRep "h1" intTypeRep : getHeaderReps @'[H2, H3]

type H1 = Header "h1" Int

type H2 = Header "h2" Char

type H3 = Header "h3" [Integer]

sampleReps :: [HeaderRep]
sampleReps = getHeaderReps @'[H1, H2, H3]