1
1
package com .instabug .reactlibrary ;
2
2
3
3
import android .os .Looper ;
4
+
5
+ import com .facebook .react .bridge .Arguments ;
4
6
import com .facebook .react .bridge .JavaOnlyArray ;
7
+ import com .facebook .react .bridge .JavaOnlyMap ;
8
+ import com .facebook .react .bridge .ReactApplicationContext ;
9
+ import com .facebook .react .bridge .WritableMap ;
5
10
import com .instabug .bug .BugReporting ;
6
11
import com .instabug .library .Feature ;
12
+ import com .instabug .library .OnSdkDismissCallback ;
7
13
import com .instabug .library .extendedbugreport .ExtendedBugReport ;
8
14
import com .instabug .library .invocation .InstabugInvocationEvent ;
15
+ import com .instabug .library .invocation .OnInvokeCallback ;
9
16
import com .instabug .library .invocation .util .InstabugVideoRecordingButtonPosition ;
17
+ import com .instabug .reactlibrary .utils .InstabugUtil ;
10
18
import com .instabug .reactlibrary .utils .MainThreadHandler ;
11
19
12
20
13
21
import org .junit .After ;
14
22
import org .junit .Before ;
15
23
import org .junit .Test ;
16
- import org .junit .runner .RunWith ;
17
24
import org .mockito .Matchers ;
18
25
import org .mockito .MockedStatic ;
19
- import org .mockito .Mockito ;
20
26
import org .mockito .internal .verification .VerificationModeFactory ;
21
27
import org .mockito .invocation .InvocationOnMock ;
22
28
import org .mockito .stubbing .Answer ;
27
33
import java .util .concurrent .ScheduledExecutorService ;
28
34
29
35
import static org .mockito .ArgumentMatchers .any ;
36
+ import static org .mockito .ArgumentMatchers .eq ;
30
37
import static org .mockito .Mockito .doAnswer ;
31
38
import static org .mockito .Mockito .mock ;
32
39
import static org .mockito .Mockito .mockStatic ;
33
40
import static org .mockito .Mockito .verify ;
34
41
import static org .mockito .Mockito .when ;
35
42
36
-
37
-
38
43
public class RNInstabugBugReportingModuleTest {
39
44
40
- private RNInstabugBugReportingModule bugReportingModule = new RNInstabugBugReportingModule (null );
45
+ private RNInstabugBugReportingModule bugReportingModule = new RNInstabugBugReportingModule (mock ( ReactApplicationContext . class ) );
41
46
private final static ScheduledExecutorService mainThread = Executors .newSingleThreadScheduledExecutor ();
42
47
43
48
// Mock Objects
44
49
private MockedStatic <Looper > mockLooper ;
45
50
private MockedStatic <MainThreadHandler > mockMainThreadHandler ;
46
51
private MockedStatic <BugReporting > mockBugReporting ;
52
+ private MockedStatic <InstabugUtil > mockInstabugUtil ;
47
53
48
54
@ Before
49
55
public void mockMainThreadHandler () throws Exception {
50
56
// Mock static functions
51
57
mockBugReporting = mockStatic (BugReporting .class );
52
58
mockLooper = mockStatic (Looper .class );
53
59
mockMainThreadHandler = mockStatic (MainThreadHandler .class );
60
+ mockInstabugUtil = mockStatic (InstabugUtil .class );
54
61
55
62
// Mock Looper class
56
63
Looper mockMainThreadLooper = mock (Looper .class );
@@ -73,6 +80,7 @@ public void tearDown() {
73
80
mockLooper .close ();
74
81
mockMainThreadHandler .close ();
75
82
mockBugReporting .close ();
83
+ mockInstabugUtil .close ();
76
84
}
77
85
78
86
/********BugReporting*********/
@@ -222,68 +230,52 @@ public void tearDown() {
222
230
BugReporting .setOptions (option2 );
223
231
}
224
232
225
- // @Test
226
- // public void given$setOnInvokeHandler_whenQuery_thenShouldSetNativeCallback() {
227
- //
228
- // try {
229
- // // given
230
- //
231
- // mockStatic(InstabugUtil.class);
232
- // // when
233
- // doAnswer(new Answer<Object>() {
234
- // @Override
235
- // public Object answer(InvocationOnMock invocation) {
236
- // ((OnInvokeCallback) invocation.getArguments()[0]).onInvoke();
237
- // return null;
238
- // }
239
- // }).when(BugReporting.class);
240
- // BugReporting.setOnDismissCallback(anyObject());
241
- // bugReportingModule.setOnInvokeHandler(null);
242
- // // then
243
- // verify(InstabugUtil.class,VerificationModeFactory.times(1));
244
- //
245
- // InstabugUtil.sendEvent(any(ReactApplicationContext.class), eq(Constants.IBG_PRE_INVOCATION_HANDLER), Matchers.isNull(WritableMap.class));
246
- //
247
- //
248
- // } catch (Exception e) {
249
- // e.printStackTrace();
250
- // }
251
- // }
252
- //
253
-
254
- // @Test
255
- // public void given$setOnSDKDismissedHandler_whenQuery_thenShouldSetNativeCallback() {
256
- // try {
257
- // // given
258
- // mockStatic(Arguments.class);
259
- //
260
- // // when
261
- // when(Arguments.createMap()).thenReturn(new JavaOnlyMap());
262
- // doAnswer(new Answer<Object>() {
263
- // @Override
264
- // public Object answer(InvocationOnMock invocation) {
265
- // mockStatic(InstabugUtil.class);
266
- // doNothing().when(InstabugUtil.class);
267
- // InstabugUtil.sendEvent(any(),any(),any());
268
- // ((OnSdkDismissCallback) invocation.getArguments()[0])
269
- // .call(OnSdkDismissCallback.DismissType.CANCEL, OnSdkDismissCallback.ReportType.BUG);
270
- // return null;
271
- // }
272
- // }).when(BugReporting.class);
273
- // BugReporting.setOnDismissCallback(anyObject());
274
- // bugReportingModule.setOnSDKDismissedHandler(null);
275
- // // then
276
- // WritableMap params = new JavaOnlyMap();
277
- // params.putString("dismissType", OnSdkDismissCallback.DismissType.CANCEL.toString());
278
- // params.putString("reportType", OnSdkDismissCallback.ReportType.BUG.toString());
279
- // verify(InstabugUtil.class,VerificationModeFactory.times(1));
280
- //
281
- // InstabugUtil.sendEvent(any(ReactApplicationContext.class), eq(Constants.IBG_POST_INVOCATION_HANDLER), eq(params));
282
- //
283
- // } catch (Exception e) {
284
- // e.printStackTrace();
285
- // }
286
- // }
233
+ @ Test
234
+ public void given$setOnInvokeHandler_whenQuery_thenShouldSetNativeCallback () {
235
+ // when
236
+ mockBugReporting .when (() -> BugReporting .setOnInvokeCallback (any (OnInvokeCallback .class )))
237
+ .thenAnswer (new Answer <Object >() {
238
+ @ Override
239
+ public Object answer (InvocationOnMock invocation ) {
240
+ ((OnInvokeCallback ) invocation .getArguments ()[0 ]).onInvoke ();
241
+ return null ;
242
+ }
243
+ });
244
+
245
+ bugReportingModule .setOnInvokeHandler (null );
246
+
247
+ // then
248
+ verify (InstabugUtil .class ,VerificationModeFactory .times (1 ));
249
+ InstabugUtil .sendEvent (any (ReactApplicationContext .class ), eq (Constants .IBG_PRE_INVOCATION_HANDLER ), Matchers .isNull (WritableMap .class ));
250
+ }
251
+
252
+
253
+ @ Test
254
+ public void given$setOnSDKDismissedHandler_whenQuery_thenShouldSetNativeCallback () {
255
+ // given
256
+ MockedStatic mockArgument = mockStatic (Arguments .class );
257
+ MockedStatic mockReactApplicationContext = mockStatic (ReactApplicationContext .class );
258
+
259
+ // when
260
+ when (Arguments .createMap ()).thenReturn (new JavaOnlyMap ());
261
+ mockBugReporting .when (() -> BugReporting .setOnDismissCallback (any (OnSdkDismissCallback .class ))).thenAnswer (new Answer () {
262
+ public Object answer (InvocationOnMock invocation ) {
263
+ InstabugUtil .sendEvent (any (),any (),any ());
264
+ ((OnSdkDismissCallback ) invocation .getArguments ()[0 ])
265
+ .call (OnSdkDismissCallback .DismissType .CANCEL , OnSdkDismissCallback .ReportType .BUG );
266
+ return null ;
267
+ }});
268
+ bugReportingModule .setOnSDKDismissedHandler (null );
269
+
270
+ // then
271
+ WritableMap params = new JavaOnlyMap ();
272
+ params .putString ("dismissType" , OnSdkDismissCallback .DismissType .CANCEL .toString ());
273
+ params .putString ("reportType" , OnSdkDismissCallback .ReportType .BUG .toString ());
274
+ verify (InstabugUtil .class ,VerificationModeFactory .times (1 ));
275
+ InstabugUtil .sendEvent (any (ReactApplicationContext .class ), eq (Constants .IBG_POST_INVOCATION_HANDLER ), eq (params ));
276
+ mockArgument .close ();
277
+ mockReactApplicationContext .close ();
278
+ }
287
279
288
280
@ Test
289
281
public void givenArray$setReportTypes_whenQuery_thenShouldCallNativeApiWithEnumArgs () {
0 commit comments