Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix issue: createItem not serializing Nothings correctly #81

Open
wants to merge 3 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions rollbar-cli/rollbar-cli.cabal
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,7 @@ library
base >=4.13 && <5
, optparse-applicative >=0.14 && <1
, rollbar-client >=1.0 && <2
, bytestring >=0.10 && <1
default-language: Haskell2010

executable rollbar
Expand All @@ -68,4 +69,5 @@ test-suite spec
build-depends:
base >=4.13 && <5
, rollbar-cli
, bytestring >=0.10 && <1
default-language: Haskell2010
1 change: 1 addition & 0 deletions rollbar-client/rollbar-client.cabal
Original file line number Diff line number Diff line change
Expand Up @@ -99,4 +99,5 @@ test-suite spec
, text
, unordered-containers
, yaml
, bytestring
default-language: Haskell2010
14 changes: 7 additions & 7 deletions rollbar-client/src/Rollbar/Client/Item.hs
Original file line number Diff line number Diff line change
Expand Up @@ -97,15 +97,15 @@ instance ToJSON Item where
let dataFields =
[ "environment" .= itemEnvironment
, "body" .= itemBody
, "level" .= itemLevel
, "platform" .= itemPlatform
, "language" .= itemLanguage
, "framework" .= itemFramework
, "request" .= itemRequest
, "server" .= itemServer
, "notifier" .= itemNotifier
] ++ catMaybes
[ ("custom" .=) <$> custom
[ ("level" .=) <$> itemLevel
, ("platform" .=) <$> itemPlatform
, ("language" .=) <$> itemLanguage
, ("framework" .=) <$> itemFramework
, ("request" .=) <$> itemRequest
, ("server" .=) <$> itemServer
, ("custom" .=) <$> custom
, ("fingerprint" .=) <$> fingerprint
, ("title" .=) <$> title
, ("uuid" .=) <$> uuid
Expand Down
29 changes: 28 additions & 1 deletion rollbar-client/test/Rollbar/ClientSpec.hs
Original file line number Diff line number Diff line change
Expand Up @@ -11,10 +11,12 @@ import qualified Data.Aeson.KeyMap as KM

import Control.Monad.Reader
import Data.Aeson
import Data.Text
import Data.Text as T
import Data.Yaml.Config
import Rollbar.Client
import Test.Hspec
import Data.Text.Encoding
import qualified Data.ByteString.Lazy as DBL

data Package = Package
{ packageName :: Text
Expand Down Expand Up @@ -143,3 +145,28 @@ spec = do
reportDeploy deploy

deployId `shouldSatisfy` (> 0)

describe "ToJSON Item" $ do
context "when serializing to JSON" $ do
let item = Item
{ itemEnvironment = Environment "test"
, itemBody = Body { bodyPayload = PayloadMessage (Message "Test" mempty) }
, itemLevel = Just LevelInfo
, itemPlatform = Just "haskell"
, itemLanguage = Just "Haskell"
, itemFramework = Just "GHC"
, itemRequest = Nothing
, itemServer = Nothing
, custom = Just mempty
, title = Nothing
, uuid = Just "12345"
, fingerprint = Nothing
, itemNotifier = Notifier "rollbar-client" "1.1.0"
}
jsonItem = decodeUtf8 $ DBL.toStrict $ encode item

it "omits fields if they are Nothing values" $
T.unpack jsonItem `shouldNotContain` "\"server\""

it "includes fields if they are Just values" $
T.unpack jsonItem `shouldContain` "\"platform\":\"haskell\""
2 changes: 1 addition & 1 deletion rollbar-wai/package.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ library:
- text >= 1.2 && < 2.1
- unordered-containers >= 0.2 && < 1
- wai >= 3.2 && < 4
- wai-extra >= 3.0 && < 4
- wai-extra < 3.1.17 # TODO: update breaks yesod-core, see https://github.com/yesodweb/yesod/issues/1854

executables:
wai-example:
Expand Down
4 changes: 3 additions & 1 deletion rollbar-wai/rollbar-wai.cabal
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,8 @@ library
, text >=1.2 && <2.1
, unordered-containers >=0.2 && <1
, wai >=3.2 && <4
, wai-extra >=3.0 && <4
, wai-extra >=3.0 && < 3.1.17
-- TODO: update breaks yesod-core, see https://github.com/yesodweb/yesod/issues/1854
default-language: Haskell2010

executable wai-example
Expand Down Expand Up @@ -101,4 +102,5 @@ test-suite spec
, unordered-containers
, wai
, warp >=3.3 && <4
, bytestring
default-language: Haskell2010
2 changes: 2 additions & 0 deletions rollbar-yesod/rollbar-yesod.cabal
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,7 @@ library
, unliftio >=0.2 && <1
, wai >=3.2 && <4
, yesod-core >=1.6 && <2
, bytestring >= 0.10
default-language: Haskell2010

executable yesod-example
Expand Down Expand Up @@ -91,4 +92,5 @@ test-suite spec
, wai
, yesod-core
, yesod-test >=1.6 && <2
, bytestring >= 0.10
default-language: Haskell2010
Loading