-
Notifications
You must be signed in to change notification settings - Fork 47
/
Copy pathSurveysApiTest.java
167 lines (124 loc) · 4.92 KB
/
SurveysApiTest.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
package com.instabug.flutter;
import static com.instabug.flutter.util.GlobalMocks.reflected;
import static com.instabug.flutter.util.MockResult.makeResult;
import static org.junit.Assert.assertEquals;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.eq;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.mockStatic;
import static org.mockito.Mockito.never;
import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.verify;
import com.instabug.flutter.generated.SurveysPigeon;
import com.instabug.flutter.modules.SurveysApi;
import com.instabug.flutter.util.GlobalMocks;
import com.instabug.flutter.util.MockReflected;
import com.instabug.library.Feature;
import com.instabug.library.Platform;
import com.instabug.survey.Survey;
import com.instabug.survey.Surveys;
import com.instabug.survey.callbacks.OnDismissCallback;
import com.instabug.survey.callbacks.OnShowCallback;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.mockito.MockedStatic;
import java.util.Collections;
import java.util.List;
import io.flutter.plugin.common.BinaryMessenger;
public class SurveysApiTest {
private final BinaryMessenger mMessenger = mock(BinaryMessenger.class);
private final SurveysPigeon.SurveysFlutterApi flutterApi = new SurveysPigeon.SurveysFlutterApi(mMessenger);
private final SurveysApi api = new SurveysApi(flutterApi);
private MockedStatic<Surveys> mSurveys;
private MockedStatic<SurveysPigeon.SurveysHostApi> mHostApi;
@Before
public void setUp() throws NoSuchMethodException {
mSurveys = mockStatic(Surveys.class);
mHostApi = mockStatic(SurveysPigeon.SurveysHostApi.class);
GlobalMocks.setUp();
}
@After
public void cleanUp() {
mSurveys.close();
mHostApi.close();
GlobalMocks.close();
}
@Test
public void testInit() {
SurveysApi.init(mMessenger);
mHostApi.verify(() -> SurveysPigeon.SurveysHostApi.setup(eq(mMessenger), any(SurveysApi.class)));
}
@Test
public void testSetEnabledGivenTrue() {
boolean isEnabled = true;
api.setEnabled(isEnabled);
mSurveys.verify(() -> Surveys.setState(Feature.State.ENABLED));
}
@Test
public void testSetEnabledGivenFalse() {
boolean isEnabled = false;
api.setEnabled(isEnabled);
mSurveys.verify(() -> Surveys.setState(Feature.State.DISABLED));
}
@Test
public void testShowSurveyIfAvailable() {
api.showSurveyIfAvailable();
mSurveys.verify(Surveys::showSurveyIfAvailable);
}
@Test
public void testShowSurveyCp() {
String token = "survey-token";
api.showSurveyCP(token);
reflected.verify(() -> MockReflected.showSurveyCP(token));
}
@Test
public void testShowSurvey() {
String token = "survey-token";
api.showSurvey(token);
reflected.verify(() -> MockReflected.showSurveyCP(token));
mSurveys.verify(() -> Surveys.showSurvey(token), never());
}
@Test
public void testSetAutoShowingEnabled() {
boolean isEnabled = true;
api.setAutoShowingEnabled(isEnabled);
mSurveys.verify(() -> Surveys.setAutoShowingEnabled(isEnabled));
}
@Test
public void testSetShouldShowWelcomeScreen() {
boolean shouldShowWelcomeScreen = true;
api.setShouldShowWelcomeScreen(shouldShowWelcomeScreen);
mSurveys.verify(() -> Surveys.setShouldShowWelcomeScreen(shouldShowWelcomeScreen));
}
@Test
public void testHasRespondedToSurvey() {
String token = "survey-token";
boolean expected = true;
SurveysPigeon.Result<Boolean> result = spy(makeResult((actual) -> assertEquals(expected, actual)));
mSurveys.when(() -> Surveys.hasRespondToSurvey(token)).thenReturn(expected);
api.hasRespondedToSurvey(token, result);
verify(result).success(expected);
mSurveys.verify(() -> Surveys.hasRespondToSurvey(token));
}
@Test
public void testGetAvailableSurveys() {
List<String> expected = Collections.singletonList("survey1");
List<Survey> surveys = Collections.singletonList(new Survey(1, "survey1"));
SurveysPigeon.Result<List<String>> result = spy(makeResult((actual) -> assertEquals(expected, actual)));
mSurveys.when(Surveys::getAvailableSurveys).thenReturn(surveys);
api.getAvailableSurveys(result);
verify(result).success(expected);
mSurveys.verify(Surveys::getAvailableSurveys);
}
@Test
public void testBindOnShowSurveyCallback() {
api.bindOnShowSurveyCallback();
mSurveys.verify(() -> Surveys.setOnShowCallback(any(OnShowCallback.class)));
}
@Test
public void testBindOnDismissSurveyCallback() {
api.bindOnDismissSurveyCallback();
mSurveys.verify(() -> Surveys.setOnDismissCallback(any(OnDismissCallback.class)));
}
}