http-media-0.8 changed mapAcceptMedia
This commit is contained in:
parent
b534a8c2cf
commit
6d90d48b36
2 changed files with 19 additions and 5 deletions
|
@ -161,6 +161,7 @@ test-suite spec
|
||||||
, base-compat
|
, base-compat
|
||||||
, aeson
|
, aeson
|
||||||
, bytestring
|
, bytestring
|
||||||
|
, http-media
|
||||||
, mtl
|
, mtl
|
||||||
, servant
|
, servant
|
||||||
, string-conversions
|
, string-conversions
|
||||||
|
|
|
@ -1,3 +1,4 @@
|
||||||
|
{-# LANGUAGE CPP #-}
|
||||||
{-# LANGUAGE DataKinds #-}
|
{-# LANGUAGE DataKinds #-}
|
||||||
{-# LANGUAGE DeriveGeneric #-}
|
{-# LANGUAGE DeriveGeneric #-}
|
||||||
{-# LANGUAGE MultiParamTypeClasses #-}
|
{-# LANGUAGE MultiParamTypeClasses #-}
|
||||||
|
@ -20,7 +21,7 @@ import Data.Either
|
||||||
import Data.Function
|
import Data.Function
|
||||||
(on)
|
(on)
|
||||||
import Data.List
|
import Data.List
|
||||||
(maximumBy)
|
(sortBy)
|
||||||
import qualified Data.List.NonEmpty as NE
|
import qualified Data.List.NonEmpty as NE
|
||||||
import Data.Maybe
|
import Data.Maybe
|
||||||
(fromJust, isJust, isNothing)
|
(fromJust, isJust, isNothing)
|
||||||
|
@ -134,17 +135,29 @@ spec = describe "Servant.API.ContentTypes" $ do
|
||||||
== Just ("application/json;charset=utf-8", encode x)
|
== Just ("application/json;charset=utf-8", encode x)
|
||||||
|
|
||||||
it "respects the Accept spec ordering" $ do
|
it "respects the Accept spec ordering" $ do
|
||||||
let highest a b c = maximumBy (compare `on` snd)
|
let highest a b c = last $ sortBy (compare `on` snd)
|
||||||
|
-- when qualities are same, http-media-0.8 picks first; 0.7 last.
|
||||||
|
#if MIN_VERSION_http_media(0,8,0)
|
||||||
|
[ ("text/plain;charset=utf-8", c)
|
||||||
|
, ("application/json;charset=utf-8", b)
|
||||||
|
, ("application/octet-stream", a)
|
||||||
|
]
|
||||||
|
#else
|
||||||
[ ("application/octet-stream", a)
|
[ ("application/octet-stream", a)
|
||||||
, ("application/json;charset=utf-8", b)
|
, ("application/json;charset=utf-8", b)
|
||||||
, ("text/plain;charset=utf-8", c)
|
, ("text/plain;charset=utf-8", c)
|
||||||
]
|
]
|
||||||
|
#endif
|
||||||
let acceptH a b c = addToAccept (Proxy :: Proxy OctetStream) a $
|
let acceptH a b c = addToAccept (Proxy :: Proxy OctetStream) a $
|
||||||
addToAccept (Proxy :: Proxy JSON) b $
|
addToAccept (Proxy :: Proxy JSON) b $
|
||||||
addToAccept (Proxy :: Proxy PlainText ) c ""
|
addToAccept (Proxy :: Proxy PlainText ) c $
|
||||||
|
""
|
||||||
let val a b c i = handleAcceptH (Proxy :: Proxy '[OctetStream, JSON, PlainText])
|
let val a b c i = handleAcceptH (Proxy :: Proxy '[OctetStream, JSON, PlainText])
|
||||||
(acceptH a b c) (i :: Int)
|
(acceptH a b c) (i :: Int)
|
||||||
property $ \a b c i -> fst (fromJust $ val a b c i) == fst (highest a b c)
|
property $ \a b c i ->
|
||||||
|
let acc = acceptH a b c
|
||||||
|
in counterexample (show acc) $
|
||||||
|
fst (fromJust $ val a b c i) === fst (highest a b c)
|
||||||
|
|
||||||
describe "handleCTypeH" $ do
|
describe "handleCTypeH" $ do
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue