@@ -11,7 +11,9 @@ import qualified Data.Aeson.KeyMap as KM
1111
1212import Control.Monad.Reader
1313import Data.Aeson
14- import Data.Text
14+ import qualified Data.ByteString.Lazy as DBL
15+ import Data.Text.Encoding
16+ import Data.Text as T
1517import Data.Yaml.Config
1618import Rollbar.Client
1719import Test.Hspec
@@ -143,3 +145,28 @@ spec = do
143145 reportDeploy deploy
144146
145147 deployId `shouldSatisfy` (> 0 )
148+
149+ describe " ToJSON Item" $ do
150+ context " when serializing to JSON" $ do
151+ let item = Item
152+ { itemEnvironment = Environment " test"
153+ , itemBody = Body { bodyPayload = PayloadMessage (Message " Test" mempty ) }
154+ , itemLevel = Just LevelInfo
155+ , itemPlatform = Just " haskell"
156+ , itemLanguage = Just " Haskell"
157+ , itemFramework = Just " GHC"
158+ , itemRequest = Nothing
159+ , itemServer = Nothing
160+ , custom = Just mempty
161+ , title = Nothing
162+ , uuid = Just " 12345"
163+ , fingerprint = Nothing
164+ , itemNotifier = Notifier " rollbar-client" " 1.1.0"
165+ }
166+ jsonItem = decodeUtf8 $ DBL. toStrict $ encode item
167+
168+ it " omits fields if they are Nothing values" $
169+ T. unpack jsonItem `shouldNotContain` " \" server\" "
170+
171+ it " includes fields if they are Just values" $
172+ T. unpack jsonItem `shouldContain` " \" platform\" :\" haskell\" "
0 commit comments