@@ -30,7 +30,11 @@ defmodule Sentry.ClientTest do
3030 valid: "yes" ,
3131 self: self ( ) ,
3232 keyword: [ key: "value" ] ,
33- nested: % { self: self ( ) }
33+ nested: % { self: self ( ) } ,
34+ bool: true ,
35+ null: nil ,
36+ int: 2 ,
37+ map: % { bool: false }
3438 } ,
3539 user: % { id: "valid-ID" , email: { "user" , "@example.com" } } ,
3640 tags: % { valid: "yes" , tokens: MapSet . new ( [ 1 ] ) }
@@ -42,13 +46,36 @@ defmodule Sentry.ClientTest do
4246 assert rendered . extra . self == inspect ( self ( ) )
4347 assert rendered . extra . keyword == [ ~s( {:key, "value"}) ]
4448 assert rendered . extra . nested . self == inspect ( self ( ) )
49+ assert rendered . extra . bool == true
50+ assert rendered . extra . null == nil
51+ assert rendered . extra . int == 2
52+ assert rendered . extra . map . bool == false
4553
4654 assert rendered . user . id == "valid-ID"
4755 assert rendered . user . email == ~s( {"user", "@example.com"})
4856
4957 assert rendered . tags . valid == "yes"
5058 assert rendered . tags . tokens == inspect ( MapSet . new ( [ 1 ] ) )
5159 end
60+
61+ test "works if the JSON library crashes" do
62+ defmodule RaisingJSONClient do
63+ def encode ( :crash ) , do: raise ( "Oops" )
64+ def encode ( term ) , do: Jason . encode ( term )
65+
66+ def decode ( term ) , do: Jason . decode ( term )
67+ end
68+
69+ put_test_config ( json_library: RaisingJSONClient )
70+
71+ event = Event . create_event ( message: "Something went wrong" , extra: % { crasher: :crash } )
72+
73+ assert % { } = rendered = Client . render_event ( event )
74+ assert rendered . extra . crasher == ":crash"
75+ after
76+ :code . delete ( RaisingJSONClient )
77+ :code . purge ( RaisingJSONClient )
78+ end
5279 end
5380
5481 describe "send_event/2" do
0 commit comments