git.iko.soy/typeable/bloodhound
on master help sign in
Added tests for omitNulls
71de653Liam Atkinson
Database/Bloodhound/Types.hs+1
@@ -22,6 +22,7 @@ module Database.Bloodhound.Types
22 , mkBoolQuery
22 , mkBoolQuery
23 , mkRangeQuery
23 , mkRangeQuery
24 , mkQueryStringQuery
24 , mkQueryStringQuery
25+ , omitNulls
25 , Version(..)
26 , Version(..)
26 , Status(..)
27 , Status(..)
27 , Existence(..)
28 , Existence(..)
bloodhound.cabal+3−1
@@ -50,5 +50,7 @@ test-suite tests
50 time >= 1.4,
50 time >= 1.4,
51 aeson >= 0.7,
51 aeson >= 0.7,
52 semigroups >= 0.15,
52 semigroups >= 0.15,
53− QuickCheck
53+ QuickCheck,
54+ vector >= 0.10.11,
55+ unordered-containers >=0.2.5.0
54 default-language: Haskell2010
56 default-language: Haskell2010
tests/tests.hs+24
@@ -5,12 +5,14 @@ module Main where
5
5
6import Control.Applicative
6import Control.Applicative
7import Data.Aeson
7import Data.Aeson
8+import Data.HashMap.Strict (fromList)
8import Data.List (nub)
9import Data.List (nub)
9import Data.List.NonEmpty (NonEmpty (..))
10import Data.List.NonEmpty (NonEmpty (..))
10import Data.Text (Text)
11import Data.Text (Text)
11import qualified Data.Text as T
12import qualified Data.Text as T
12import Data.Time.Calendar (Day (..))
13import Data.Time.Calendar (Day (..))
13import Data.Time.Clock (UTCTime (..), secondsToDiffTime)
14import Data.Time.Clock (UTCTime (..), secondsToDiffTime)
15+import qualified Data.Vector as V
14import Database.Bloodhound
16import Database.Bloodhound
15import GHC.Generics (Generic)
17import GHC.Generics (Generic)
16import Network.HTTP.Client
18import Network.HTTP.Client
@@ -382,3 +384,25 @@ main = hspec $ do
382 let String str = toJSON flags
384 let String str = toJSON flags
383 flagStrs = T.splitOn "|" str
385 flagStrs = T.splitOn "|" str
384 in noDuplicates flagStrs
386 in noDuplicates flagStrs
387+
388+
389+ describe "omitNulls" $ do
390+ it "checks that omitNulls drops list elements when it should" $
391+ let dropped = omitNulls $ [ "test1" .= (toJSON ([] :: [Int]))
392+ , "test2" .= (toJSON ("some value" :: Text))]
393+ in dropped `shouldBe` Object (fromList [("test2", String "some value")])
394+
395+ it "checks that omitNulls doesn't drop list elements when it shouldn't" $
396+ let notDropped = omitNulls $ [ "test1" .= (toJSON ([1] :: [Int]))
397+ , "test2" .= (toJSON ("some value" :: Text))]
398+ in notDropped `shouldBe` Object (fromList [ ("test1", Array (V.fromList [Number 1.0]))
399+ , ("test2", String "some value")])
400+ it "checks that omitNulls drops non list elements when it should" $
401+ let dropped = omitNulls $ [ "test1" .= (toJSON Null)
402+ , "test2" .= (toJSON ("some value" :: Text))]
403+ in dropped `shouldBe` Object (fromList [("test2", String "some value")])
404+ it "checks that omitNulls doesn't drop non list elements when it shouldn't" $
405+ let notDropped = omitNulls $ [ "test1" .= (toJSON (1 :: Int))
406+ , "test2" .= (toJSON ("some value" :: Text))]
407+ in notDropped `shouldBe` Object (fromList [ ("test1", Number 1.0)
408+ , ("test2", String "some value")])