@@ -1,5 +1,6 @@
11{-# LANGUAGE DataKinds #-}
22{-# LANGUAGE FlexibleInstances #-}
3+{-# LANGUAGE LambdaCase #-}
34{-# LANGUAGE OverloadedStrings #-}
45{-# LANGUAGE RankNTypes #-}
56{-# OPTIONS_GHC -fno-warn-orphans #-}
@@ -11,9 +12,10 @@ import Control.Monad.Reader
1112import Control.Monad.Trans.Control
1213import Data.Aeson (ToJSON (..), Value (..), object, (.=))
1314import qualified Data.Aeson as A
15+import qualified Data.Aeson.KeyMap as Aeson.KeyMap
1416import qualified Data.ByteString as B
1517import qualified Data.ByteString.Lazy as BL
16−import qualified Data.HashMap.Strict as HM
18+import Data.Functor.Identity (runIdentity)
1719import Data.Proxy
1820import Data.Text (Text)
1921import qualified Data.Text as T
@@ -408,13 +410,13 @@ httpbin = https "httpbin.org"
408410-- | Remove “origin” field from JSON value. Origin may change, we don't want
409411-- to depend on that.
410412stripOrigin :: Value -> Value
411−stripOrigin (Object m) = Object (HM.delete "origin" m)
413+stripOrigin (Object m) = Object (Aeson.KeyMap.delete "origin" m)
412414stripOrigin value = value
413415
414416-- | Remove funny headers that might break the tests.
415417stripFunnyHeaders :: Value -> Value
416418stripFunnyHeaders (Object m) =
417− let f (Object p) = Object $ HM.filterWithKey (\k _ -> k `elem` hs) p
419+ let f (Object p) = Object $ Aeson.KeyMap.filterWithKey (\k _ -> k `elem` hs) p
418420 f value = value
419421 hs =
420422 [ "Content-Type",
@@ -424,7 +426,7 @@ stripFunnyHeaders (Object m) =
424426 "Foo",
425427 "Baz"
426428 ]
427− in Object (HM.adjust f "headers" m)
429+ in Object (runIdentity (Aeson.KeyMap.alterF (pure . fmap f) "headers" m))
428430stripFunnyHeaders value = value
429431
430432-- | This is a complete test case that makes use of <https://httpbin.org> to
@@ -457,7 +459,7 @@ selector404 _ = False
457459
458460-- | The empty JSON 'Object'.
459461emptyObject :: Value
460−emptyObject = Object HM.empty
462+emptyObject = Object Aeson.KeyMap.empty
461463
462464-- | Get a rendered JSON value as 'Text'.
463465reflectJSON :: ToJSON a => a -> Text