@@ -107,13 +107,25 @@ describe("raven-for-redux", () => {
107
107
expect ( extra . lastAction ) . toEqual ( { type : "DOUBLE" } ) ;
108
108
expect ( extra . state ) . toEqual ( 4 ) ;
109
109
} ) ;
110
+ it ( "preserves user context" , ( ) => {
111
+ const userData = { userId : 1 , username : "captbaritone" } ;
112
+ Raven . setUserContext ( userData ) ;
113
+ expect ( ( ) => {
114
+ context . store . dispatch ( { type : "THROW" , extra : "BAR" } ) ;
115
+ } ) . toThrow ( ) ;
116
+
117
+ expect ( context . mockTransport . mock . calls [ 0 ] [ 0 ] . data . user ) . toEqual (
118
+ userData
119
+ ) ;
120
+ } ) ;
110
121
} ) ;
111
122
describe ( "with all the options enabled" , ( ) => {
112
123
beforeEach ( ( ) => {
113
124
context . stateTransformer = jest . fn ( state => `transformed state ${ state } ` ) ;
114
125
context . actionTransformer = jest . fn (
115
126
action => `transformed action ${ action . type } `
116
127
) ;
128
+ context . getUserContext = jest . fn ( state => `user context ${ state } ` ) ;
117
129
context . breadcrumbDataFromAction = jest . fn ( action => ( {
118
130
extra : action . extra
119
131
} ) ) ;
@@ -128,7 +140,8 @@ describe("raven-for-redux", () => {
128
140
stateTransformer : context . stateTransformer ,
129
141
actionTransformer : context . actionTransformer ,
130
142
breadcrumbDataFromAction : context . breadcrumbDataFromAction ,
131
- filterBreadcrumbActions : context . filterBreadcrumbActions
143
+ filterBreadcrumbActions : context . filterBreadcrumbActions ,
144
+ getUserContext : context . getUserContext
132
145
} )
133
146
)
134
147
) ;
@@ -170,19 +183,62 @@ describe("raven-for-redux", () => {
170
183
expect ( breadcrumbs . values [ 0 ] . data ) . toMatchObject ( { extra : "FOO" } ) ;
171
184
expect ( breadcrumbs . values [ 1 ] . data ) . toMatchObject ( { extra : "BAR" } ) ;
172
185
} ) ;
173
- it ( "preserves user context" , ( ) => {
186
+ it ( "transforms the user context on data callback" , ( ) => {
187
+ context . store . dispatch ( { type : "INCREMENT" , extra : "FOO" } ) ;
174
188
const userData = { userId : 1 , username : "captbaritone" } ;
175
189
Raven . setUserContext ( userData ) ;
176
190
expect ( ( ) => {
177
191
context . store . dispatch ( { type : "THROW" , extra : "BAR" } ) ;
178
192
} ) . toThrow ( ) ;
179
193
180
194
expect ( context . mockTransport . mock . calls [ 0 ] [ 0 ] . data . user ) . toEqual (
181
- userData
195
+ "user context 1"
182
196
) ;
183
197
} ) ;
184
198
} ) ;
199
+ describe ( "with multiple data callbaks" , ( ) => {
200
+ beforeEach ( ( ) => {
201
+ context . firstOriginalDataCallback = jest . fn ( ( data , original ) => {
202
+ const newData = Object . assign ( { } , data , {
203
+ firstData : "first"
204
+ } ) ;
205
+ return original ? original ( newData ) : newData ;
206
+ } ) ;
207
+ context . secondOriginalDataCallback = jest . fn ( ( data , original ) => {
208
+ const newData = Object . assign ( { } , data , {
209
+ secondData : "second"
210
+ } ) ;
211
+ return original ? original ( newData ) : newData ;
212
+ } ) ;
213
+ Raven . setDataCallback ( context . firstOriginalDataCallback ) ;
214
+ Raven . setDataCallback ( context . secondOriginalDataCallback ) ;
215
+ context . stateTransformer = jest . fn ( state => `transformed state ${ state } ` ) ;
216
+
217
+ context . store = createStore (
218
+ reducer ,
219
+ applyMiddleware (
220
+ createRavenMiddleware ( Raven , {
221
+ stateTransformer : context . stateTransformer
222
+ } )
223
+ )
224
+ ) ;
225
+ } ) ;
185
226
227
+ it ( "runs all the data callbacks given" , ( ) => {
228
+ context . store . dispatch ( { type : "INCREMENT" } ) ;
229
+ expect ( ( ) => {
230
+ context . store . dispatch ( { type : "THROW" } ) ;
231
+ } ) . toThrow ( ) ;
232
+ expect ( context . firstOriginalDataCallback ) . toHaveBeenCalledTimes ( 1 ) ;
233
+ expect ( context . secondOriginalDataCallback ) . toHaveBeenCalledTimes ( 1 ) ;
234
+
235
+ expect ( context . mockTransport ) . toHaveBeenCalledTimes ( 1 ) ;
236
+ const data = context . mockTransport . mock . calls [ 0 ] [ 0 ] . data ;
237
+ expect ( data . extra . state ) . toEqual ( "transformed state 1" ) ;
238
+ expect ( data . firstData ) . toEqual ( "first" ) ;
239
+ expect ( data . secondData ) . toEqual ( "second" ) ;
240
+ } ) ;
241
+ } ) ;
186
242
describe ( "with filterBreadcrumbActions option enabled" , ( ) => {
187
243
beforeEach ( ( ) => {
188
244
context . filterBreadcrumbActions = action => {
0 commit comments