Skip to content

Commit 258041e

Browse files
committed
add user test
1 parent b6fe40a commit 258041e

File tree

2 files changed

+443
-0
lines changed

2 files changed

+443
-0
lines changed

test/mock_channel.dart

Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ class OneSignalMockChannelController {
2424
const MethodChannel('OneSignal#pushsubscription');
2525
final MethodChannel _sessionChannel =
2626
const MethodChannel('OneSignal#session');
27+
final MethodChannel _userChannel = const MethodChannel('OneSignal#user');
2728

2829
late OneSignalState state;
2930

@@ -46,6 +47,8 @@ class OneSignalMockChannelController {
4647
.setMockMethodCallHandler(_pushSubscriptionChannel, _handleMethod);
4748
TestDefaultBinaryMessengerBinding.instance.defaultBinaryMessenger
4849
.setMockMethodCallHandler(_sessionChannel, _handleMethod);
50+
TestDefaultBinaryMessengerBinding.instance.defaultBinaryMessenger
51+
.setMockMethodCallHandler(_userChannel, _handleMethod);
4952
}
5053

5154
void resetState() {
@@ -64,6 +67,18 @@ class OneSignalMockChannelController {
6467
);
6568
}
6669

70+
// Helper method to simulate user state changes from native
71+
void simulateUserStateChange(Map<String, dynamic> changeData) {
72+
TestDefaultBinaryMessengerBinding.instance.defaultBinaryMessenger
73+
.handlePlatformMessage(
74+
_userChannel.name,
75+
_userChannel.codec.encodeMethodCall(
76+
MethodCall('OneSignal#onUserStateChange', changeData),
77+
),
78+
(ByteData? data) {},
79+
);
80+
}
81+
6782
Future<dynamic> _handleMethod(MethodCall call) async {
6883
switch (call.method) {
6984
case "OneSignal#setAppId":
@@ -257,6 +272,46 @@ class OneSignalMockChannelController {
257272
state.addedOutcomeWithValueValue = args['outcome_value'] as double;
258273
state.addOutcomeWithValueCallCount++;
259274
break;
275+
case "OneSignal#setLanguage":
276+
state.language =
277+
(call.arguments as Map<dynamic, dynamic>)['language'] as String?;
278+
break;
279+
case "OneSignal#addAliases":
280+
state.aliases = call.arguments as Map<dynamic, dynamic>?;
281+
break;
282+
case "OneSignal#removeAliases":
283+
state.removedAliases = call.arguments as List<dynamic>?;
284+
break;
285+
case "OneSignal#addTags":
286+
state.tags = call.arguments as Map<dynamic, dynamic>?;
287+
break;
288+
case "OneSignal#removeTags":
289+
state.deleteTags = call.arguments as List<dynamic>?;
290+
break;
291+
case "OneSignal#getTags":
292+
return state.tags ?? {};
293+
case "OneSignal#addEmail":
294+
state.addedEmail = call.arguments as String?;
295+
break;
296+
case "OneSignal#removeEmail":
297+
state.removedEmail = call.arguments as String?;
298+
break;
299+
case "OneSignal#addSms":
300+
state.addedSms = call.arguments as String?;
301+
break;
302+
case "OneSignal#removeSms":
303+
state.removedSms = call.arguments as String?;
304+
break;
305+
case "OneSignal#getExternalId":
306+
return state.externalId;
307+
case "OneSignal#getOnesignalId":
308+
return state.onesignalId;
309+
case "OneSignal#lifecycleInit":
310+
// Could be from user, inappmessages, or pushsubscription
311+
// We'll track both
312+
state.lifecycleInitCalled = true;
313+
state.userLifecycleInitCalled = true;
314+
break;
260315
}
261316
}
262317
}
@@ -349,6 +404,16 @@ class OneSignalState {
349404
double? addedOutcomeWithValueValue;
350405
int addOutcomeWithValueCallCount = 0;
351406

407+
// user
408+
String? onesignalId;
409+
Map<dynamic, dynamic>? aliases;
410+
List<dynamic>? removedAliases;
411+
String? addedEmail;
412+
String? removedEmail;
413+
String? addedSms;
414+
String? removedSms;
415+
bool? userLifecycleInitCalled;
416+
352417
/*
353418
All of the following functions parse the MethodCall
354419
parameters, and sets properties on the object itself

0 commit comments

Comments
 (0)