Skip to content

Commit 6be58b5

Browse files
authored
fix: createItem not serializing Nothings correctly (#81)
1 parent dc514a0 commit 6be58b5

File tree

7 files changed

+41
-10
lines changed

7 files changed

+41
-10
lines changed

rollbar-cli/rollbar-cli.cabal

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -68,4 +68,5 @@ test-suite spec
6868
build-depends:
6969
base >=4.13 && <5
7070
, rollbar-cli
71+
, bytestring >=0.10 && <1
7172
default-language: Haskell2010

rollbar-client/rollbar-client.cabal

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -99,4 +99,5 @@ test-suite spec
9999
, text
100100
, unordered-containers
101101
, yaml
102+
, bytestring >=0.10 && <1
102103
default-language: Haskell2010

rollbar-client/src/Rollbar/Client/Item.hs

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -97,15 +97,15 @@ instance ToJSON Item where
9797
let dataFields =
9898
[ "environment" .= itemEnvironment
9999
, "body" .= itemBody
100-
, "level" .= itemLevel
101-
, "platform" .= itemPlatform
102-
, "language" .= itemLanguage
103-
, "framework" .= itemFramework
104-
, "request" .= itemRequest
105-
, "server" .= itemServer
106100
, "notifier" .= itemNotifier
107101
] ++ catMaybes
108-
[ ("custom" .=) <$> custom
102+
[ ("level" .=) <$> itemLevel
103+
, ("platform" .=) <$> itemPlatform
104+
, ("language" .=) <$> itemLanguage
105+
, ("framework" .=) <$> itemFramework
106+
, ("request" .=) <$> itemRequest
107+
, ("server" .=) <$> itemServer
108+
, ("custom" .=) <$> custom
109109
, ("fingerprint" .=) <$> fingerprint
110110
, ("title" .=) <$> title
111111
, ("uuid" .=) <$> uuid

rollbar-client/test/Rollbar/ClientSpec.hs

Lines changed: 28 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,9 @@ import qualified Data.Aeson.KeyMap as KM
1111

1212
import Control.Monad.Reader
1313
import 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
1517
import Data.Yaml.Config
1618
import Rollbar.Client
1719
import 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\""

rollbar-wai/package.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ library:
4848
- text >= 1.2 && < 2.1
4949
- unordered-containers >= 0.2 && < 1
5050
- wai >= 3.2 && < 4
51-
- wai-extra >= 3.0 && < 4
51+
- wai-extra < 3.1.17 # TODO: update breaks yesod-core, see https://github.com/yesodweb/yesod/issues/1854
5252

5353
executables:
5454
wai-example:

rollbar-wai/rollbar-wai.cabal

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ library
5454
, text >=1.2 && <2.1
5555
, unordered-containers >=0.2 && <1
5656
, wai >=3.2 && <4
57-
, wai-extra >=3.0 && <4
57+
, wai-extra >=3.0 && < 3.1.17 -- TODO: update breaks yesod-core, see https://github.com/yesodweb/yesod/issues/1854
5858
default-language: Haskell2010
5959

6060
executable wai-example
@@ -101,4 +101,5 @@ test-suite spec
101101
, unordered-containers
102102
, wai
103103
, warp >=3.3 && <4
104+
, bytestring >=0.10 && <1
104105
default-language: Haskell2010

rollbar-yesod/rollbar-yesod.cabal

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -91,4 +91,5 @@ test-suite spec
9191
, wai
9292
, yesod-core
9393
, yesod-test >=1.6 && <2
94+
, bytestring >=0.10 && <1
9495
default-language: Haskell2010

0 commit comments

Comments
 (0)