git.iko.soy/typeable/bloodhound
on master help sign in
Added tests for omitNulls
commit71de653c5329dd2360aa68775baade7faa22ae9a authorLiam Atkinson <liamatkinson@gmail.com> dateFri 10 Oct 2014, 00:01 (12 years ago) parent721e7a6
3 files changed+28−1
Database/Bloodhound/Types.hs+1 bloodhound.cabal+3−1 tests/tests.hs+24
Database/Bloodhound/Types.hs+1
@@ -22,6 +22,7 @@ module Database.Bloodhound.Types
2222 , mkBoolQuery
2323 , mkRangeQuery
2424 , mkQueryStringQuery
25+ , omitNulls
2526 , Version(..)
2627 , Status(..)
2728 , Existence(..)
bloodhound.cabal+3−1
@@ -50,5 +50,7 @@ test-suite tests
5050 time >= 1.4,
5151 aeson >= 0.7,
5252 semigroups >= 0.15,
53− QuickCheck
53+ QuickCheck,
54+ vector >= 0.10.11,
55+ unordered-containers >=0.2.5.0
5456 default-language: Haskell2010
tests/tests.hs+24
@@ -5,12 +5,14 @@ module Main where
55
66import Control.Applicative
77import Data.Aeson
8+import Data.HashMap.Strict (fromList)
89import Data.List (nub)
910import Data.List.NonEmpty (NonEmpty (..))
1011import Data.Text (Text)
1112import qualified Data.Text as T
1213import Data.Time.Calendar (Day (..))
1314import Data.Time.Clock (UTCTime (..), secondsToDiffTime)
15+import qualified Data.Vector as V
1416import Database.Bloodhound
1517import GHC.Generics (Generic)
1618import Network.HTTP.Client
@@ -382,3 +384,25 @@ main = hspec $ do
382384 let String str = toJSON flags
383385 flagStrs = T.splitOn "|" str
384386 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")])