@@ -84,22 +84,63 @@ defmodule Sentry.ClientTest do
8484 :code . purge ( RaisingJSONClient )
8585 end
8686
87- test "renders threads with stacktrace property deleted if :frames field set to nil if empty" do
87+ test "renders stacktrace for threads" do
88+ event =
89+ Event . create_event (
90+ message: "Stacktrace for threads" ,
91+ stacktrace: [
92+ { Kernel , :apply , 3 , [ file: "lib/kernel.ex" , line: 1 ] } ,
93+ { URI , :new! , 1 , [ file: "lib/uri.ex" , line: 2 ] }
94+ ]
95+ )
96+
97+ assert % { threads: [ thread ] } = Client . render_event ( event )
98+
99+ refute is_struct ( thread . stacktrace ) ,
100+ ":stacktrace shouldn't be a struct, got: #{ inspect ( thread . stacktrace ) } "
101+
102+ assert [
103+ % { module: URI , function: "URI.new!/1" , filename: "lib/uri.ex" , lineno: 2 } ,
104+ % { module: Kernel , function: "Kernel.apply/3" , filename: "lib/kernel.ex" , lineno: 1 }
105+ ] = thread . stacktrace . frames
106+ end
107+
108+ test "renders threads with :stacktrace property deleted if :frames field set to nil if empty" do
88109 event =
89110 Event . create_event ( message: "No frames in stacktrace" , stacktrace: [ ] )
90111
91- client = Client . render_event ( event )
112+ assert % { threads: [ thread ] } = Client . render_event ( event )
113+ refute Map . has_key? ( thread , :stacktrace )
114+ end
115+
116+ test "renders stacktrace for exceptions" do
117+ event =
118+ Event . transform_exception (
119+ % RuntimeError { message: "foo" } ,
120+ stacktrace: [
121+ { Kernel , :apply , 3 , [ file: "lib/kernel.ex" , line: 1 ] } ,
122+ { URI , :new! , 1 , [ file: "lib/uri.ex" , line: 2 ] }
123+ ]
124+ )
125+
126+ assert % { exception: [ exception ] } = Client . render_event ( event )
127+
128+ refute is_struct ( exception . stacktrace ) ,
129+ ":stacktrace shouldn't be a struct, got: #{ inspect ( exception . stacktrace ) } "
92130
93- assert is_nil ( get_in ( client . threads , [ Access . at ( 0 ) , :stacktrace ] ) )
131+ assert [
132+ % { module: URI , function: "URI.new!/1" , filename: "lib/uri.ex" , lineno: 2 } ,
133+ % { module: Kernel , function: "Kernel.apply/3" , filename: "lib/kernel.ex" , lineno: 1 }
134+ ] = exception . stacktrace . frames
94135 end
95136
96- test "renders exception with stacktrace property deleted if :frames field set to nil if empty" do
137+ test "renders exception with : stacktrace property deleted if :frames field set to nil if empty" do
97138 event =
98139 Event . transform_exception ( % RuntimeError { message: "foo" } , stacktrace: [ ] )
99140
100- client = Client . render_event ( event )
141+ assert % { exception: [ exception ] } = Client . render_event ( event )
101142
102- assert is_nil ( get_in ( client . exception , [ Access . at ( 0 ) , :stacktrace ] ) )
143+ refute Map . has_key? ( exception , :stacktrace )
103144 end
104145
105146 test "removes non-payload fields" do
0 commit comments