Skip to content

Commit 4141ae2

Browse files
packageInfo: add fallback logic test for appBundleId
add test for falling back to default value of appBundleId incase packageInfo is null
1 parent 28b3536 commit 4141ae2

File tree

7 files changed

+30
-9
lines changed

7 files changed

+30
-9
lines changed

lib/model/binding.dart

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -303,10 +303,12 @@ class LinuxDeviceInfo implements BaseDeviceInfo {
303303
class PackageInfo {
304304
final String version;
305305
final String buildNumber;
306+
final String packageName;
306307

307308
const PackageInfo({
308309
required this.version,
309310
required this.buildNumber,
311+
required this.packageName,
310312
});
311313
}
312314

@@ -411,6 +413,7 @@ class LiveZulipBinding extends ZulipBinding {
411413
_syncPackageInfo = PackageInfo(
412414
version: info.version,
413415
buildNumber: info.buildNumber,
416+
packageName: info.packageName,
414417
);
415418
} catch (e, st) {
416419
assert(debugLog('Failed to prefetch package info: $e\n$st')); // TODO(log)

lib/notifications/receive.dart

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -143,14 +143,13 @@ class NotificationService {
143143
token.value = value;
144144
}
145145

146-
static Future<void> registerToken(ApiConnection connection, {required String token}) async {
147-
switch (defaultTargetPlatform) {
146+
static Future<void> registerToken(ApiConnection connection,{required String token, TargetPlatform? targetPlatform, }) async {
147+
switch (targetPlatform ?? defaultTargetPlatform) {
148148
case TargetPlatform.android:
149149
await addFcmToken(connection, token: token);
150150

151151
case TargetPlatform.iOS:
152-
const appBundleId = 'com.zulip.flutter'; // TODO(#407) find actual value live
153-
await addApnsToken(connection, token: token, appid: appBundleId);
152+
await addApnsToken(connection, token: token, appid: (await ZulipBinding.instance.packageInfo)?.packageName ?? "com.zulip.flutter");
154153

155154
case TargetPlatform.linux:
156155
case TargetPlatform.macOS:

test/api/core_test.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -460,7 +460,7 @@ void main() {
460460
});
461461
}
462462

463-
const packageInfo = PackageInfo(version: '0.0.1', buildNumber: '1');
463+
const packageInfo = PackageInfo(version: '0.0.1', buildNumber: '1', packageName: 'com.zulip.flutter.test');
464464

465465
const testCases = [
466466
('ZulipFlutter/0.0.1+1 (Android 14)', AndroidDeviceInfo(release: '14', sdkInt: 34), ),

test/api/route/notifications_test.dart

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,14 @@ import 'package:http/http.dart' as http;
33
import 'package:test/scaffolding.dart';
44
import 'package:zulip/api/route/notifications.dart';
55

6+
import '../../model/binding.dart';
67
import '../../stdlib_checks.dart';
78
import '../fake_api.dart';
89

910
void main() {
11+
12+
TestZulipBinding.ensureInitialized();
13+
1014
group('addFcmToken', () {
1115
Future<void> checkAddFcmToken(FakeApiConnection connection, {
1216
required String token,
@@ -50,6 +54,8 @@ void main() {
5054
});
5155

5256
group('addApnsToken', () {
57+
58+
5359
Future<void> checkAddApnsToken(FakeApiConnection connection, {
5460
required String token,
5561
required String appid,

test/model/binding.dart

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -228,8 +228,8 @@ class TestZulipBinding extends ZulipBinding {
228228
BaseDeviceInfo? get syncDeviceInfo => deviceInfoResult;
229229

230230
/// The value that `ZulipBinding.instance.packageInfo` should return.
231-
PackageInfo packageInfoResult = _defaultPackageInfo;
232-
static const _defaultPackageInfo = PackageInfo(version: '0.0.1', buildNumber: '1');
231+
PackageInfo? packageInfoResult = _defaultPackageInfo;
232+
static const _defaultPackageInfo = PackageInfo(version: '0.0.1', buildNumber: '1', packageName: 'com.zulip.flutter.test');
233233

234234
void _resetPackageInfo() {
235235
packageInfoResult = _defaultPackageInfo;
@@ -241,6 +241,7 @@ class TestZulipBinding extends ZulipBinding {
241241
@override
242242
PackageInfo? get syncPackageInfo => packageInfoResult;
243243

244+
244245
void _resetFirebase() {
245246
_firebaseInitialized = false;
246247
_firebaseMessaging = null;

test/model/store_test.dart

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1032,7 +1032,7 @@ void main() {
10321032
if (defaultTargetPlatform == TargetPlatform.android) {
10331033
checkLastRequestFcm(token: '012abc');
10341034
} else {
1035-
checkLastRequestApns(token: '012abc', appid: 'com.zulip.flutter');
1035+
checkLastRequestApns(token: '012abc', appid:'com.zulip.flutter.test');
10361036
}
10371037

10381038
if (defaultTargetPlatform == TargetPlatform.android) {
@@ -1071,7 +1071,7 @@ void main() {
10711071
if (defaultTargetPlatform == TargetPlatform.android) {
10721072
checkLastRequestFcm(token: '012abc');
10731073
} else {
1074-
checkLastRequestApns(token: '012abc', appid: 'com.zulip.flutter');
1074+
checkLastRequestApns(token: '012abc', appid:'com.zulip.flutter.test');
10751075
}
10761076

10771077
if (defaultTargetPlatform == TargetPlatform.android) {
@@ -1082,6 +1082,16 @@ void main() {
10821082
checkLastRequestFcm(token: '456def');
10831083
}
10841084
}));
1085+
1086+
test('Fallback to default appBundleId incase packageInfo is null', () async {
1087+
1088+
prepareStore();
1089+
connection.prepare(json: {});
1090+
1091+
await NotificationService.registerToken(connection, token: '012abc', targetPlatform: TargetPlatform.iOS);
1092+
checkLastRequestApns(token: '012abc', appid:'com.zulip.flutter.test');
1093+
1094+
});
10851095
});
10861096
}
10871097

test/notifications/receive_test.dart

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,4 +30,6 @@ void main() {
3030
.length.equals(1);
3131
}, variant: const TargetPlatformVariant({TargetPlatform.android, TargetPlatform.iOS}));
3232
});
33+
34+
3335
}

0 commit comments

Comments
 (0)