Skip to content

Commit ec664ac

Browse files
authored
test: improve test coverage (#1076)
1 parent d05cb03 commit ec664ac

File tree

7 files changed

+976
-96
lines changed

7 files changed

+976
-96
lines changed

lib/src/liveactivities.dart

Lines changed: 12 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
1-
import 'dart:async';
2-
import 'dart:io';
1+
import 'package:flutter/foundation.dart';
32
import 'package:flutter/services.dart';
43

54
class OneSignalLiveActivities {
@@ -11,7 +10,7 @@ class OneSignalLiveActivities {
1110
///
1211
/// Only applies to iOS.
1312
Future<void> enterLiveActivity(String activityId, String token) async {
14-
if (Platform.isIOS) {
13+
if (defaultTargetPlatform == TargetPlatform.iOS) {
1514
return await _channel.invokeMethod("OneSignal#enterLiveActivity",
1615
{'activityId': activityId, 'token': token});
1716
}
@@ -21,7 +20,7 @@ class OneSignalLiveActivities {
2120
///
2221
/// Only applies to iOS.
2322
Future<void> exitLiveActivity(String activityId) async {
24-
if (Platform.isIOS) {
23+
if (defaultTargetPlatform == TargetPlatform.iOS) {
2524
return await _channel.invokeMethod(
2625
"OneSignal#exitLiveActivity", {'activityId': activityId});
2726
}
@@ -39,7 +38,7 @@ class OneSignalLiveActivities {
3938
///
4039
/// Only applies to iOS.
4140
Future<void> setupDefault({LiveActivitySetupOptions? options}) async {
42-
if (Platform.isIOS) {
41+
if (defaultTargetPlatform == TargetPlatform.iOS) {
4342
dynamic optionsMap;
4443

4544
if (options != null) {
@@ -62,7 +61,7 @@ class OneSignalLiveActivities {
6261
/// Only applies to iOS.
6362
Future<void> startDefault(
6463
String activityId, dynamic attributes, dynamic content) async {
65-
if (Platform.isIOS) {
64+
if (defaultTargetPlatform == TargetPlatform.iOS) {
6665
return await _channel.invokeMethod("OneSignal#startDefault", {
6766
'activityId': activityId,
6867
'attributes': attributes,
@@ -78,7 +77,7 @@ class OneSignalLiveActivities {
7877
///
7978
/// Only applies to iOS.
8079
Future<void> setPushToStartToken(String activityType, String token) async {
81-
if (Platform.isIOS) {
80+
if (defaultTargetPlatform == TargetPlatform.iOS) {
8281
return await _channel.invokeMethod("OneSignal#setPushToStartToken",
8382
{'activityType': activityType, 'token': token});
8483
}
@@ -90,7 +89,7 @@ class OneSignalLiveActivities {
9089
///
9190
/// Only applies to iOS.
9291
Future<void> removePushToStartToken(String activityType) async {
93-
if (Platform.isIOS) {
92+
if (defaultTargetPlatform == TargetPlatform.iOS) {
9493
return await _channel.invokeMethod(
9594
"OneSignal#removePushToStartToken", {'activityType': activityType});
9695
}
@@ -99,22 +98,12 @@ class OneSignalLiveActivities {
9998

10099
/// The setup options for [OneSignal.LiveActivities.setupDefault].
101100
class LiveActivitySetupOptions {
102-
bool _enablePushToStart = true;
103-
bool _enablePushToUpdate = true;
104-
105-
LiveActivitySetupOptions(
106-
{bool enablePushToStart = true, bool enablePushToUpdate = true}) {
107-
this._enablePushToStart = enablePushToStart;
108-
this._enablePushToUpdate = enablePushToUpdate;
109-
}
110-
111101
/// When true, OneSignal will listen for pushToStart tokens.
112-
bool get enablePushToStart {
113-
return this._enablePushToStart;
114-
}
102+
final bool enablePushToStart;
115103

116104
/// When true, OneSignal will listen for pushToUpdate tokens for each started live activity.
117-
bool get enablePushToUpdate {
118-
return this._enablePushToUpdate;
119-
}
105+
final bool enablePushToUpdate;
106+
107+
LiveActivitySetupOptions(
108+
{this.enablePushToStart = true, this.enablePushToUpdate = true});
120109
}

lib/src/notification.dart

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
1-
import 'package:onesignal_flutter/src/utils.dart';
2-
import 'package:onesignal_flutter/onesignal_flutter.dart';
31
import 'dart:convert';
42

3+
import 'package:onesignal_flutter/onesignal_flutter.dart';
4+
import 'package:onesignal_flutter/src/utils.dart';
5+
56
/// A class representing the notification, including the
67
/// payload of the notification as well as additional
78
/// parameters (such as whether the notification was `shown`

test/inappmessages_test.dart

Lines changed: 27 additions & 71 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@ import 'package:flutter_test/flutter_test.dart';
33
import 'package:onesignal_flutter/src/inappmessage.dart';
44
import 'package:onesignal_flutter/src/inappmessages.dart';
55

6+
import 'mock_channel.dart';
7+
68
const validMessageJson = {
79
'message_id': 'test-message-id-123',
810
};
@@ -20,47 +22,28 @@ void main() {
2022

2123
group('OneSignalInAppMessages', () {
2224
late OneSignalInAppMessages inAppMessages;
23-
late List<MethodCall> methodCalls;
25+
late OneSignalMockChannelController channelController;
2426

2527
setUp(() {
26-
methodCalls = [];
28+
channelController = OneSignalMockChannelController();
29+
channelController.resetState();
2730
inAppMessages = OneSignalInAppMessages();
28-
29-
TestDefaultBinaryMessengerBinding.instance.defaultBinaryMessenger
30-
.setMockMethodCallHandler(
31-
const MethodChannel('OneSignal#inappmessages'),
32-
(call) async {
33-
methodCalls.add(call);
34-
return null;
35-
},
36-
);
37-
});
38-
39-
tearDown(() {
40-
TestDefaultBinaryMessengerBinding.instance.defaultBinaryMessenger
41-
.setMockMethodCallHandler(
42-
const MethodChannel('OneSignal#inappmessages'),
43-
null,
44-
);
4531
});
4632

4733
group('addTrigger', () {
4834
test('invokes OneSignal#addTrigger method with key-value pair', () async {
4935
await inAppMessages.addTrigger(triggerName, 'true');
5036

51-
expect(methodCalls.length, 1);
52-
expect(methodCalls[0].method, 'OneSignal#addTrigger');
53-
expect(methodCalls[0].arguments, {triggerName: 'true'});
37+
expect(channelController.state.triggers, {triggerName: 'true'});
5438
});
5539

5640
test('handles multiple triggers sequentially', () async {
5741
const triggerName2 = 'trigger2';
5842
await inAppMessages.addTrigger(triggerName, 'value1');
59-
await inAppMessages.addTrigger(triggerName2, 'value2');
43+
expect(channelController.state.triggers, {triggerName: 'value1'});
6044

61-
expect(methodCalls.length, 2);
62-
expect(methodCalls[0].arguments, {triggerName: 'value1'});
63-
expect(methodCalls[1].arguments, {triggerName2: 'value2'});
45+
await inAppMessages.addTrigger(triggerName2, 'value2');
46+
expect(channelController.state.triggers, {triggerName2: 'value2'});
6447
});
6548
});
6649

@@ -74,26 +57,21 @@ void main() {
7457

7558
await inAppMessages.addTriggers(triggers);
7659

77-
expect(methodCalls.length, 1);
78-
expect(methodCalls[0].method, 'OneSignal#addTriggers');
79-
expect(methodCalls[0].arguments, triggers);
60+
expect(channelController.state.triggers, triggers);
8061
});
8162

8263
test('handles empty triggers map', () async {
8364
await inAppMessages.addTriggers({});
8465

85-
expect(methodCalls.length, 1);
86-
expect(methodCalls[0].arguments, {});
66+
expect(channelController.state.triggers, {});
8767
});
8868
});
8969

9070
group('removeTrigger', () {
9171
test('invokes OneSignal#removeTrigger method with key', () async {
9272
await inAppMessages.removeTrigger(triggerName);
9373

94-
expect(methodCalls.length, 1);
95-
expect(methodCalls[0].method, 'OneSignal#removeTrigger');
96-
expect(methodCalls[0].arguments, triggerName);
74+
expect(channelController.state.removedTrigger, triggerName);
9775
});
9876
});
9977

@@ -104,69 +82,57 @@ void main() {
10482

10583
await inAppMessages.removeTriggers(keys);
10684

107-
expect(methodCalls.length, 1);
108-
expect(methodCalls[0].method, 'OneSignal#removeTriggers');
109-
expect(methodCalls[0].arguments, keys);
85+
expect(channelController.state.removedTriggers, keys);
11086
});
11187

11288
test('handles empty keys list', () async {
11389
await inAppMessages.removeTriggers([]);
11490

115-
expect(methodCalls.length, 1);
116-
expect(methodCalls[0].arguments, []);
91+
expect(channelController.state.removedTriggers, []);
11792
});
11893
});
11994

12095
group('clearTriggers', () {
12196
test('invokes OneSignal#clearTriggers method', () async {
12297
await inAppMessages.clearTriggers();
12398

124-
expect(methodCalls.length, 1);
125-
expect(methodCalls[0].method, 'OneSignal#clearTriggers');
99+
expect(channelController.state.clearedTriggers, true);
126100
});
127101
});
128102

129103
group('paused', () {
130104
test('invokes OneSignal#paused', () async {
131105
await inAppMessages.paused(true);
132106

133-
expect(methodCalls.length, 1);
134-
expect(methodCalls[0].method, 'OneSignal#paused');
135-
expect(methodCalls[0].arguments, true);
107+
expect(channelController.state.inAppMessagesPaused, true);
136108

137109
await inAppMessages.paused(false);
138110

139-
expect(methodCalls.length, 2);
140-
expect(methodCalls[1].method, 'OneSignal#paused');
141-
expect(methodCalls[1].arguments, false);
111+
expect(channelController.state.inAppMessagesPaused, false);
142112
});
143113
});
144114

145115
group('arePaused', () {
146-
test('invokes OneSignal#arePaused method', () async {
147-
TestDefaultBinaryMessengerBinding.instance.defaultBinaryMessenger
148-
.setMockMethodCallHandler(
149-
const MethodChannel('OneSignal#inappmessages'),
150-
(call) async {
151-
if (call.method == 'OneSignal#arePaused') {
152-
return true;
153-
}
154-
return null;
155-
},
156-
);
157-
116+
test('invokes OneSignal#arePaused method and returns correct value',
117+
() async {
118+
await inAppMessages.paused(true);
158119
final result = await inAppMessages.arePaused();
159120

160121
expect(result, true);
161122
});
123+
124+
test('returns false when not paused', () async {
125+
final result = await inAppMessages.arePaused();
126+
127+
expect(result, false);
128+
});
162129
});
163130

164131
group('lifecycleInit', () {
165132
test('invokes OneSignal#lifecycleInit method', () async {
166133
await inAppMessages.lifecycleInit();
167134

168-
expect(methodCalls.length, 1);
169-
expect(methodCalls[0].method, 'OneSignal#lifecycleInit');
135+
expect(channelController.state.lifecycleInitCalled, true);
170136
});
171137
});
172138

@@ -180,7 +146,6 @@ void main() {
180146

181147
inAppMessages.addClickListener(listener);
182148

183-
// Simulate native call to verify listener was added
184149
await inAppMessages.handleMethod(
185150
MethodCall(
186151
'OneSignal#onClickInAppMessage',
@@ -204,7 +169,6 @@ void main() {
204169
inAppMessages.addClickListener(listener);
205170
inAppMessages.removeClickListener(listener);
206171

207-
// Simulate native call to verify listener was removed
208172
await inAppMessages.handleMethod(
209173
MethodCall(
210174
'OneSignal#onClickInAppMessage',
@@ -231,7 +195,6 @@ void main() {
231195

232196
inAppMessages.addWillDisplayListener(listener);
233197

234-
// Simulate native call to verify listener was added
235198
await inAppMessages.handleMethod(
236199
MethodCall(
237200
'OneSignal#onWillDisplayInAppMessage',
@@ -253,7 +216,6 @@ void main() {
253216
inAppMessages.addWillDisplayListener(listener);
254217
inAppMessages.removeWillDisplayListener(listener);
255218

256-
// Simulate native call to verify listener was removed
257219
await inAppMessages.handleMethod(
258220
MethodCall(
259221
'OneSignal#onWillDisplayInAppMessage',
@@ -275,7 +237,6 @@ void main() {
275237

276238
inAppMessages.addDidDisplayListener(listener);
277239

278-
// Simulate native call to verify listener was added
279240
await inAppMessages.handleMethod(
280241
MethodCall(
281242
'OneSignal#onDidDisplayInAppMessage',
@@ -296,7 +257,6 @@ void main() {
296257
inAppMessages.addDidDisplayListener(listener);
297258
inAppMessages.removeDidDisplayListener(listener);
298259

299-
// Simulate native call to verify listener was removed
300260
await inAppMessages.handleMethod(
301261
MethodCall(
302262
'OneSignal#onDidDisplayInAppMessage',
@@ -339,7 +299,6 @@ void main() {
339299

340300
inAppMessages.addWillDismissListener(listener);
341301

342-
// Simulate native call to verify listener was added
343302
await inAppMessages.handleMethod(
344303
MethodCall(
345304
'OneSignal#onWillDismissInAppMessage',
@@ -361,7 +320,6 @@ void main() {
361320
inAppMessages.addWillDismissListener(listener);
362321
inAppMessages.removeWillDismissListener(listener);
363322

364-
// Simulate native call to verify listener was removed
365323
await inAppMessages.handleMethod(
366324
MethodCall(
367325
'OneSignal#onWillDismissInAppMessage',
@@ -385,7 +343,6 @@ void main() {
385343

386344
inAppMessages.addDidDismissListener(listener);
387345

388-
// Simulate native call to verify listener was added
389346
await inAppMessages.handleMethod(
390347
MethodCall(
391348
'OneSignal#onDidDismissInAppMessage',
@@ -407,7 +364,6 @@ void main() {
407364
inAppMessages.addDidDismissListener(listener);
408365
inAppMessages.removeDidDismissListener(listener);
409366

410-
// Simulate native call to verify listener was removed
411367
await inAppMessages.handleMethod(
412368
MethodCall(
413369
'OneSignal#onDidDismissInAppMessage',

0 commit comments

Comments
 (0)