Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 2 additions & 3 deletions lib/src/inappmessages.dart
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ class OneSignalInAppMessages {

// constructor method
OneSignalInAppMessages() {
this._channel.setMethodCallHandler(handleMethod);
this._channel.setMethodCallHandler(_handleMethod);
}

List<OnClickInAppMessageListener> _clickListeners =
Expand Down Expand Up @@ -79,8 +79,7 @@ class OneSignalInAppMessages {
}

// Private function that gets called by ObjC/Java
// Exposed as public for testing purposes
Future<Null> handleMethod(MethodCall call) async {
Future<Null> _handleMethod(MethodCall call) async {
if (call.method == 'OneSignal#onClickInAppMessage') {
for (var listener in _clickListeners) {
listener(
Expand Down
4 changes: 2 additions & 2 deletions lib/src/notifications.dart
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ class OneSignalNotifications {
<OnNotificationPermissionChangeObserver>[];
// constructor method
OneSignalNotifications() {
this._channel.setMethodCallHandler(handleMethod);
this._channel.setMethodCallHandler(_handleMethod);
}

bool _permission = false;
Expand Down Expand Up @@ -123,7 +123,7 @@ class OneSignalNotifications {
return await _channel.invokeMethod("OneSignal#lifecycleInit");
}

Future<Null> handleMethod(MethodCall call) async {
Future<Null> _handleMethod(MethodCall call) async {
if (call.method == 'OneSignal#onClickNotification') {
for (var listener in _clickListeners) {
listener(
Expand Down
4 changes: 2 additions & 2 deletions pubspec.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -27,5 +27,5 @@ dev_dependencies:
rps: ^0.9.1

environment:
sdk: ">=3.0.0 <4.0.0"
Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

originally
sdk: ">=2.12.0 <3.0.0"
flutter: ">=1.10.0"

flutter: ">=3.0.0"
sdk: ">=2.12.0 <4.0.0"
flutter: ">=2.0.0"
115 changes: 45 additions & 70 deletions test/inappmessages_test.dart
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
import 'package:flutter/services.dart';
import 'package:flutter_test/flutter_test.dart';
import 'package:onesignal_flutter/src/inappmessage.dart';
import 'package:onesignal_flutter/src/inappmessages.dart';
Expand Down Expand Up @@ -146,14 +145,12 @@ void main() {

inAppMessages.addClickListener(listener);

await inAppMessages.handleMethod(
MethodCall(
'OneSignal#onClickInAppMessage',
{
'message': validMessageJson,
'result': validClickResultJson,
},
),
channelController.simulateInAppMessageEvent(
'OneSignal#onClickInAppMessage',
{
'message': validMessageJson,
'result': validClickResultJson,
},
);

expect(listenerCalled, true);
Expand All @@ -169,14 +166,12 @@ void main() {
inAppMessages.addClickListener(listener);
inAppMessages.removeClickListener(listener);

await inAppMessages.handleMethod(
MethodCall(
'OneSignal#onClickInAppMessage',
{
'message': validMessageJson,
'result': validClickResultJson,
},
),
channelController.simulateInAppMessageEvent(
'OneSignal#onClickInAppMessage',
{
'message': validMessageJson,
'result': validClickResultJson,
},
);

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

inAppMessages.addWillDisplayListener(listener);

await inAppMessages.handleMethod(
MethodCall(
'OneSignal#onWillDisplayInAppMessage',
{'message': validMessageJson},
),
channelController.simulateInAppMessageEvent(
'OneSignal#onWillDisplayInAppMessage',
{'message': validMessageJson},
);

expect(listenerCalled, true);
Expand All @@ -216,11 +209,9 @@ void main() {
inAppMessages.addWillDisplayListener(listener);
inAppMessages.removeWillDisplayListener(listener);

await inAppMessages.handleMethod(
MethodCall(
'OneSignal#onWillDisplayInAppMessage',
{'message': validMessageJson},
),
channelController.simulateInAppMessageEvent(
'OneSignal#onWillDisplayInAppMessage',
{'message': validMessageJson},
);

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

inAppMessages.addDidDisplayListener(listener);

await inAppMessages.handleMethod(
MethodCall(
'OneSignal#onDidDisplayInAppMessage',
{'message': validMessageJson},
),
channelController.simulateInAppMessageEvent(
'OneSignal#onDidDisplayInAppMessage',
{'message': validMessageJson},
);

expect(listenerCalled, true);
Expand All @@ -257,11 +246,9 @@ void main() {
inAppMessages.addDidDisplayListener(listener);
inAppMessages.removeDidDisplayListener(listener);

await inAppMessages.handleMethod(
MethodCall(
'OneSignal#onDidDisplayInAppMessage',
{'message': validMessageJson},
),
channelController.simulateInAppMessageEvent(
'OneSignal#onDidDisplayInAppMessage',
{'message': validMessageJson},
);

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

inAppMessages.addDidDisplayListener(listener);

await inAppMessages.handleMethod(
MethodCall(
'OneSignal#onDidDisplayInAppMessage',
{'message': validMessageJson},
),
channelController.simulateInAppMessageEvent(
'OneSignal#onDidDisplayInAppMessage',
{'message': validMessageJson},
);

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

inAppMessages.addWillDismissListener(listener);

await inAppMessages.handleMethod(
MethodCall(
'OneSignal#onWillDismissInAppMessage',
{'message': validMessageJson},
),
channelController.simulateInAppMessageEvent(
'OneSignal#onWillDismissInAppMessage',
{'message': validMessageJson},
);

expect(listenerCalled, true);
Expand All @@ -320,11 +303,9 @@ void main() {
inAppMessages.addWillDismissListener(listener);
inAppMessages.removeWillDismissListener(listener);

await inAppMessages.handleMethod(
MethodCall(
'OneSignal#onWillDismissInAppMessage',
{'message': validMessageJson},
),
channelController.simulateInAppMessageEvent(
'OneSignal#onWillDismissInAppMessage',
{'message': validMessageJson},
);

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

inAppMessages.addDidDismissListener(listener);

await inAppMessages.handleMethod(
MethodCall(
'OneSignal#onDidDismissInAppMessage',
{'message': validMessageJson},
),
channelController.simulateInAppMessageEvent(
'OneSignal#onDidDismissInAppMessage',
{'message': validMessageJson},
);

expect(listenerCalled, true);
Expand All @@ -364,11 +343,9 @@ void main() {
inAppMessages.addDidDismissListener(listener);
inAppMessages.removeDidDismissListener(listener);

await inAppMessages.handleMethod(
MethodCall(
'OneSignal#onDidDismissInAppMessage',
{'message': validMessageJson},
),
channelController.simulateInAppMessageEvent(
'OneSignal#onDidDismissInAppMessage',
{'message': validMessageJson},
);

expect(listenerCalled, false);
Expand All @@ -390,14 +367,12 @@ void main() {
inAppMessages.addClickListener(listener1);
inAppMessages.addClickListener(listener2);

await inAppMessages.handleMethod(
MethodCall(
'OneSignal#onClickInAppMessage',
{
'message': validMessageJson,
'result': validClickResultJson,
},
),
channelController.simulateInAppMessageEvent(
'OneSignal#onClickInAppMessage',
{
'message': validMessageJson,
'result': validClickResultJson,
},
);

expect(listenerCount, 2);
Expand Down
60 changes: 60 additions & 0 deletions test/mock_channel.dart
Original file line number Diff line number Diff line change
Expand Up @@ -79,6 +79,66 @@ class OneSignalMockChannelController {
);
}

// Generic helper method to simulate method calls from native on any channel
void simulateMethodCall(
String channelName, String methodName, dynamic arguments) {
final MethodChannel channel;

switch (channelName) {
case 'OneSignal':
channel = _channel;
break;
case 'OneSignal#debug':
channel = _debugChannel;
break;
case 'OneSignal#tags':
channel = _tagsChannel;
break;
case 'OneSignal#location':
channel = _locationChannel;
break;
case 'OneSignal#inappmessages':
channel = _inAppMessagesChannel;
break;
case 'OneSignal#liveactivities':
channel = _liveActivitiesChannel;
break;
case 'OneSignal#notifications':
channel = _notificationsChannel;
break;
case 'OneSignal#pushsubscription':
channel = _pushSubscriptionChannel;
break;
case 'OneSignal#session':
channel = _sessionChannel;
break;
case 'OneSignal#user':
channel = _userChannel;
break;
default:
throw ArgumentError('Unknown channel: $channelName');
}

TestDefaultBinaryMessengerBinding.instance.defaultBinaryMessenger
.handlePlatformMessage(
channel.name,
channel.codec.encodeMethodCall(
MethodCall(methodName, arguments),
),
(ByteData? data) {},
);
}

// Convenience wrapper for in-app message events
void simulateInAppMessageEvent(String eventName, Map<String, dynamic> data) {
simulateMethodCall('OneSignal#inappmessages', eventName, data);
}

// Convenience wrapper for notification events
void simulateNotificationEvent(String eventName, Map<String, dynamic> data) {
simulateMethodCall('OneSignal#notifications', eventName, data);
}

Future<dynamic> _handleMethod(MethodCall call) async {
switch (call.method) {
case "OneSignal#initialize":
Expand Down
17 changes: 8 additions & 9 deletions test/notifications_test.dart
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
import 'package:flutter/foundation.dart';
import 'package:flutter/services.dart';
import 'package:flutter_test/flutter_test.dart';
import 'package:onesignal_flutter/src/defines.dart';
import 'package:onesignal_flutter/src/notification.dart';
Expand Down Expand Up @@ -289,8 +288,8 @@ void main() {
}

notifications.addForegroundWillDisplayListener(listener);
await notifications.handleMethod(MethodCall(
'OneSignal#onWillDisplayNotification', notificationData));
channelController.simulateNotificationEvent(
'OneSignal#onWillDisplayNotification', notificationData);

expect(listenerCalled, true);
});
Expand All @@ -303,8 +302,8 @@ void main() {

notifications.addForegroundWillDisplayListener(listener);
notifications.removeForegroundWillDisplayListener(listener);
await notifications.handleMethod(MethodCall(
'OneSignal#onWillDisplayNotification', notificationData));
channelController.simulateNotificationEvent(
'OneSignal#onWillDisplayNotification', notificationData);

expect(listenerCalled, false);
});
Expand All @@ -323,8 +322,8 @@ void main() {
notifications.addForegroundWillDisplayListener(listener1);
notifications.addForegroundWillDisplayListener(listener2);

await notifications.handleMethod(MethodCall(
'OneSignal#onWillDisplayNotification', notificationData));
channelController.simulateNotificationEvent(
'OneSignal#onWillDisplayNotification', notificationData);

expect(listener1Called, true);
expect(listener2Called, true);
Expand All @@ -345,8 +344,8 @@ void main() {
notifications.addForegroundWillDisplayListener(listener2);
notifications.removeForegroundWillDisplayListener(listener1);

await notifications.handleMethod(MethodCall(
'OneSignal#onWillDisplayNotification', notificationData));
channelController.simulateNotificationEvent(
'OneSignal#onWillDisplayNotification', notificationData);

expect(listener1Called, false);
expect(listener2Called, true);
Expand Down