Skip to content

Commit a617df9

Browse files
authored
test: make handler methods private (#1080)
1 parent 8b8badb commit a617df9

File tree

6 files changed

+119
-86
lines changed

6 files changed

+119
-86
lines changed

lib/src/inappmessages.dart

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ class OneSignalInAppMessages {
2121

2222
// constructor method
2323
OneSignalInAppMessages() {
24-
this._channel.setMethodCallHandler(handleMethod);
24+
this._channel.setMethodCallHandler(_handleMethod);
2525
}
2626

2727
List<OnClickInAppMessageListener> _clickListeners =
@@ -79,8 +79,7 @@ class OneSignalInAppMessages {
7979
}
8080

8181
// Private function that gets called by ObjC/Java
82-
// Exposed as public for testing purposes
83-
Future<Null> handleMethod(MethodCall call) async {
82+
Future<Null> _handleMethod(MethodCall call) async {
8483
if (call.method == 'OneSignal#onClickInAppMessage') {
8584
for (var listener in _clickListeners) {
8685
listener(

lib/src/notifications.dart

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ class OneSignalNotifications {
2626
<OnNotificationPermissionChangeObserver>[];
2727
// constructor method
2828
OneSignalNotifications() {
29-
this._channel.setMethodCallHandler(handleMethod);
29+
this._channel.setMethodCallHandler(_handleMethod);
3030
}
3131

3232
bool _permission = false;
@@ -123,7 +123,7 @@ class OneSignalNotifications {
123123
return await _channel.invokeMethod("OneSignal#lifecycleInit");
124124
}
125125

126-
Future<Null> handleMethod(MethodCall call) async {
126+
Future<Null> _handleMethod(MethodCall call) async {
127127
if (call.method == 'OneSignal#onClickNotification') {
128128
for (var listener in _clickListeners) {
129129
listener(

pubspec.yaml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,5 +27,5 @@ dev_dependencies:
2727
rps: ^0.9.1
2828

2929
environment:
30-
sdk: ">=3.0.0 <4.0.0"
31-
flutter: ">=3.0.0"
30+
sdk: ">=2.12.0 <4.0.0"
31+
flutter: ">=2.0.0"

test/inappmessages_test.dart

Lines changed: 45 additions & 70 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
import 'package:flutter/services.dart';
21
import 'package:flutter_test/flutter_test.dart';
32
import 'package:onesignal_flutter/src/inappmessage.dart';
43
import 'package:onesignal_flutter/src/inappmessages.dart';
@@ -146,14 +145,12 @@ void main() {
146145

147146
inAppMessages.addClickListener(listener);
148147

149-
await inAppMessages.handleMethod(
150-
MethodCall(
151-
'OneSignal#onClickInAppMessage',
152-
{
153-
'message': validMessageJson,
154-
'result': validClickResultJson,
155-
},
156-
),
148+
channelController.simulateInAppMessageEvent(
149+
'OneSignal#onClickInAppMessage',
150+
{
151+
'message': validMessageJson,
152+
'result': validClickResultJson,
153+
},
157154
);
158155

159156
expect(listenerCalled, true);
@@ -169,14 +166,12 @@ void main() {
169166
inAppMessages.addClickListener(listener);
170167
inAppMessages.removeClickListener(listener);
171168

172-
await inAppMessages.handleMethod(
173-
MethodCall(
174-
'OneSignal#onClickInAppMessage',
175-
{
176-
'message': validMessageJson,
177-
'result': validClickResultJson,
178-
},
179-
),
169+
channelController.simulateInAppMessageEvent(
170+
'OneSignal#onClickInAppMessage',
171+
{
172+
'message': validMessageJson,
173+
'result': validClickResultJson,
174+
},
180175
);
181176

182177
expect(listenerCalled, false);
@@ -195,11 +190,9 @@ void main() {
195190

196191
inAppMessages.addWillDisplayListener(listener);
197192

198-
await inAppMessages.handleMethod(
199-
MethodCall(
200-
'OneSignal#onWillDisplayInAppMessage',
201-
{'message': validMessageJson},
202-
),
193+
channelController.simulateInAppMessageEvent(
194+
'OneSignal#onWillDisplayInAppMessage',
195+
{'message': validMessageJson},
203196
);
204197

205198
expect(listenerCalled, true);
@@ -216,11 +209,9 @@ void main() {
216209
inAppMessages.addWillDisplayListener(listener);
217210
inAppMessages.removeWillDisplayListener(listener);
218211

219-
await inAppMessages.handleMethod(
220-
MethodCall(
221-
'OneSignal#onWillDisplayInAppMessage',
222-
{'message': validMessageJson},
223-
),
212+
channelController.simulateInAppMessageEvent(
213+
'OneSignal#onWillDisplayInAppMessage',
214+
{'message': validMessageJson},
224215
);
225216

226217
expect(listenerCalled, false);
@@ -237,11 +228,9 @@ void main() {
237228

238229
inAppMessages.addDidDisplayListener(listener);
239230

240-
await inAppMessages.handleMethod(
241-
MethodCall(
242-
'OneSignal#onDidDisplayInAppMessage',
243-
{'message': validMessageJson},
244-
),
231+
channelController.simulateInAppMessageEvent(
232+
'OneSignal#onDidDisplayInAppMessage',
233+
{'message': validMessageJson},
245234
);
246235

247236
expect(listenerCalled, true);
@@ -257,11 +246,9 @@ void main() {
257246
inAppMessages.addDidDisplayListener(listener);
258247
inAppMessages.removeDidDisplayListener(listener);
259248

260-
await inAppMessages.handleMethod(
261-
MethodCall(
262-
'OneSignal#onDidDisplayInAppMessage',
263-
{'message': validMessageJson},
264-
),
249+
channelController.simulateInAppMessageEvent(
250+
'OneSignal#onDidDisplayInAppMessage',
251+
{'message': validMessageJson},
265252
);
266253

267254
expect(listenerCalled, false);
@@ -276,11 +263,9 @@ void main() {
276263

277264
inAppMessages.addDidDisplayListener(listener);
278265

279-
await inAppMessages.handleMethod(
280-
MethodCall(
281-
'OneSignal#onDidDisplayInAppMessage',
282-
{'message': validMessageJson},
283-
),
266+
channelController.simulateInAppMessageEvent(
267+
'OneSignal#onDidDisplayInAppMessage',
268+
{'message': validMessageJson},
284269
);
285270

286271
expect(listenerCalled, true);
@@ -299,11 +284,9 @@ void main() {
299284

300285
inAppMessages.addWillDismissListener(listener);
301286

302-
await inAppMessages.handleMethod(
303-
MethodCall(
304-
'OneSignal#onWillDismissInAppMessage',
305-
{'message': validMessageJson},
306-
),
287+
channelController.simulateInAppMessageEvent(
288+
'OneSignal#onWillDismissInAppMessage',
289+
{'message': validMessageJson},
307290
);
308291

309292
expect(listenerCalled, true);
@@ -320,11 +303,9 @@ void main() {
320303
inAppMessages.addWillDismissListener(listener);
321304
inAppMessages.removeWillDismissListener(listener);
322305

323-
await inAppMessages.handleMethod(
324-
MethodCall(
325-
'OneSignal#onWillDismissInAppMessage',
326-
{'message': validMessageJson},
327-
),
306+
channelController.simulateInAppMessageEvent(
307+
'OneSignal#onWillDismissInAppMessage',
308+
{'message': validMessageJson},
328309
);
329310

330311
expect(listenerCalled, false);
@@ -343,11 +324,9 @@ void main() {
343324

344325
inAppMessages.addDidDismissListener(listener);
345326

346-
await inAppMessages.handleMethod(
347-
MethodCall(
348-
'OneSignal#onDidDismissInAppMessage',
349-
{'message': validMessageJson},
350-
),
327+
channelController.simulateInAppMessageEvent(
328+
'OneSignal#onDidDismissInAppMessage',
329+
{'message': validMessageJson},
351330
);
352331

353332
expect(listenerCalled, true);
@@ -364,11 +343,9 @@ void main() {
364343
inAppMessages.addDidDismissListener(listener);
365344
inAppMessages.removeDidDismissListener(listener);
366345

367-
await inAppMessages.handleMethod(
368-
MethodCall(
369-
'OneSignal#onDidDismissInAppMessage',
370-
{'message': validMessageJson},
371-
),
346+
channelController.simulateInAppMessageEvent(
347+
'OneSignal#onDidDismissInAppMessage',
348+
{'message': validMessageJson},
372349
);
373350

374351
expect(listenerCalled, false);
@@ -390,14 +367,12 @@ void main() {
390367
inAppMessages.addClickListener(listener1);
391368
inAppMessages.addClickListener(listener2);
392369

393-
await inAppMessages.handleMethod(
394-
MethodCall(
395-
'OneSignal#onClickInAppMessage',
396-
{
397-
'message': validMessageJson,
398-
'result': validClickResultJson,
399-
},
400-
),
370+
channelController.simulateInAppMessageEvent(
371+
'OneSignal#onClickInAppMessage',
372+
{
373+
'message': validMessageJson,
374+
'result': validClickResultJson,
375+
},
401376
);
402377

403378
expect(listenerCount, 2);

test/mock_channel.dart

Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,66 @@ class OneSignalMockChannelController {
7979
);
8080
}
8181

82+
// Generic helper method to simulate method calls from native on any channel
83+
void simulateMethodCall(
84+
String channelName, String methodName, dynamic arguments) {
85+
final MethodChannel channel;
86+
87+
switch (channelName) {
88+
case 'OneSignal':
89+
channel = _channel;
90+
break;
91+
case 'OneSignal#debug':
92+
channel = _debugChannel;
93+
break;
94+
case 'OneSignal#tags':
95+
channel = _tagsChannel;
96+
break;
97+
case 'OneSignal#location':
98+
channel = _locationChannel;
99+
break;
100+
case 'OneSignal#inappmessages':
101+
channel = _inAppMessagesChannel;
102+
break;
103+
case 'OneSignal#liveactivities':
104+
channel = _liveActivitiesChannel;
105+
break;
106+
case 'OneSignal#notifications':
107+
channel = _notificationsChannel;
108+
break;
109+
case 'OneSignal#pushsubscription':
110+
channel = _pushSubscriptionChannel;
111+
break;
112+
case 'OneSignal#session':
113+
channel = _sessionChannel;
114+
break;
115+
case 'OneSignal#user':
116+
channel = _userChannel;
117+
break;
118+
default:
119+
throw ArgumentError('Unknown channel: $channelName');
120+
}
121+
122+
TestDefaultBinaryMessengerBinding.instance.defaultBinaryMessenger
123+
.handlePlatformMessage(
124+
channel.name,
125+
channel.codec.encodeMethodCall(
126+
MethodCall(methodName, arguments),
127+
),
128+
(ByteData? data) {},
129+
);
130+
}
131+
132+
// Convenience wrapper for in-app message events
133+
void simulateInAppMessageEvent(String eventName, Map<String, dynamic> data) {
134+
simulateMethodCall('OneSignal#inappmessages', eventName, data);
135+
}
136+
137+
// Convenience wrapper for notification events
138+
void simulateNotificationEvent(String eventName, Map<String, dynamic> data) {
139+
simulateMethodCall('OneSignal#notifications', eventName, data);
140+
}
141+
82142
Future<dynamic> _handleMethod(MethodCall call) async {
83143
switch (call.method) {
84144
case "OneSignal#initialize":

test/notifications_test.dart

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
import 'package:flutter/foundation.dart';
2-
import 'package:flutter/services.dart';
32
import 'package:flutter_test/flutter_test.dart';
43
import 'package:onesignal_flutter/src/defines.dart';
54
import 'package:onesignal_flutter/src/notification.dart';
@@ -289,8 +288,8 @@ void main() {
289288
}
290289

291290
notifications.addForegroundWillDisplayListener(listener);
292-
await notifications.handleMethod(MethodCall(
293-
'OneSignal#onWillDisplayNotification', notificationData));
291+
channelController.simulateNotificationEvent(
292+
'OneSignal#onWillDisplayNotification', notificationData);
294293

295294
expect(listenerCalled, true);
296295
});
@@ -303,8 +302,8 @@ void main() {
303302

304303
notifications.addForegroundWillDisplayListener(listener);
305304
notifications.removeForegroundWillDisplayListener(listener);
306-
await notifications.handleMethod(MethodCall(
307-
'OneSignal#onWillDisplayNotification', notificationData));
305+
channelController.simulateNotificationEvent(
306+
'OneSignal#onWillDisplayNotification', notificationData);
308307

309308
expect(listenerCalled, false);
310309
});
@@ -323,8 +322,8 @@ void main() {
323322
notifications.addForegroundWillDisplayListener(listener1);
324323
notifications.addForegroundWillDisplayListener(listener2);
325324

326-
await notifications.handleMethod(MethodCall(
327-
'OneSignal#onWillDisplayNotification', notificationData));
325+
channelController.simulateNotificationEvent(
326+
'OneSignal#onWillDisplayNotification', notificationData);
328327

329328
expect(listener1Called, true);
330329
expect(listener2Called, true);
@@ -345,8 +344,8 @@ void main() {
345344
notifications.addForegroundWillDisplayListener(listener2);
346345
notifications.removeForegroundWillDisplayListener(listener1);
347346

348-
await notifications.handleMethod(MethodCall(
349-
'OneSignal#onWillDisplayNotification', notificationData));
347+
channelController.simulateNotificationEvent(
348+
'OneSignal#onWillDisplayNotification', notificationData);
350349

351350
expect(listener1Called, false);
352351
expect(listener2Called, true);

0 commit comments

Comments
 (0)