Files
buzz/mobile/test/features/settings/settings_page_loading_test.dart
Tom Brow b36600fc44 feat(mobile): show build number with version in settings (#7697)
Mobile Settings now identifies the installed build as e.g. `v0.16.0
(432)` rather than just `v0.16.0`. If the platform supplies no build
number, the footer keeps the existing version-only display.

| Before | After |
| --- | --- |
| Marketing version only | Version and native build number |
| ![Before:
v0.16.0](https://raw.githubusercontent.com/block/buzz/e8449f63d1fabe80ff86d395ac1177912c5d1bc5/pr-7697--before.png)
| ![After: v0.16.0
(432)](https://raw.githubusercontent.com/block/buzz/e8449f63d1fabe80ff86d395ac1177912c5d1bc5/pr-7697--after.png)
|

---------

Signed-off-by: Tom Brow <tomb@block.xyz>
2026-09-16 20:29:42 -07:00

70 lines
2.3 KiB
Dart

import 'dart:async';
import 'package:buzz/features/settings/settings_page.dart';
import 'package:buzz/shared/community/community_membership_provider.dart';
import 'package:buzz/shared/theme/theme.dart';
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:flutter_test/flutter_test.dart';
import 'package:hooks_riverpod/hooks_riverpod.dart';
import 'package:shared_preferences/shared_preferences.dart';
void main() {
testWidgets('settings remains usable while package metadata loads', (
tester,
) async {
final metadata = Completer<Map<String, String>>();
const channel = MethodChannel('dev.fluttercommunity.plus/package_info');
tester.binding.defaultBinaryMessenger.setMockMethodCallHandler(
channel,
(_) => metadata.future,
);
addTearDown(
() => tester.binding.defaultBinaryMessenger.setMockMethodCallHandler(
channel,
null,
),
);
SharedPreferences.setMockInitialValues({});
final prefs = await SharedPreferences.getInstance();
await tester.pumpWidget(
ProviderScope(
overrides: [
savedPrefsProvider.overrideWithValue(prefs),
currentCommunityRoleProvider.overrideWithValue(
const AsyncData<CommunityMemberRole?>(CommunityMemberRole.admin),
),
],
child: MaterialApp(
theme: AppTheme.light(),
builder: (context, child) => MediaQuery(
data: MediaQuery.of(
context,
).copyWith(textScaler: TextScaler.linear(2)),
child: child!,
),
home: SettingsPage(
profileHeader: const SizedBox.shrink(),
invitePageBuilder: (_) => const SizedBox.shrink(),
identityRecoveryPageBuilder: (_) => const SizedBox.shrink(),
),
),
),
);
expect(find.text('Invite to community'), findsOneWidget);
expect(find.text('v0.16.0 (432)'), findsNothing);
expect(find.byTooltip('Close settings'), findsOneWidget);
metadata.complete({
'appName': 'Buzz',
'packageName': 'xyz.block.buzz',
'version': '0.16.0',
'buildNumber': '432',
'buildSignature': '',
});
await tester.pumpAndSettle();
expect(find.text('v0.16.0 (432)'), findsOneWidget);
expect(tester.takeException(), isNull);
});
}