55 lines
2.6 KiB
Dart
55 lines
2.6 KiB
Dart
import 'package:drift/native.dart';
|
|
import 'package:flutter/material.dart';
|
|
import 'package:flutter_riverpod/flutter_riverpod.dart';
|
|
import 'package:flutter_test/flutter_test.dart';
|
|
import 'package:motorcycle_dash/database/database.dart';
|
|
import 'package:motorcycle_dash/features/settings/widgets/sync_status_inspector_screen.dart';
|
|
import 'package:motorcycle_dash/services/auth/auth_service.dart';
|
|
import 'package:motorcycle_dash/services/sync/cloud_restore_controller.dart';
|
|
import 'package:motorcycle_dash/services/sync/cloud_restore_service.dart';
|
|
import 'package:motorcycle_dash/services/sync/sync_manager.dart';
|
|
import 'package:motorcycle_dash/services/sync/sync_outbox.dart';
|
|
import 'package:motorcycle_dash/services/sync/sync_providers.dart';
|
|
import 'package:shared_preferences/shared_preferences.dart';
|
|
|
|
class _NoNetworkAuth implements AuthService {
|
|
@override
|
|
dynamic noSuchMethod(Invocation invocation) =>
|
|
throw StateError('Unexpected authentication call: ${invocation.memberName}');
|
|
}
|
|
|
|
void main() {
|
|
for (final size in [const Size(360, 800), const Size(412, 915), const Size(915, 412)]) {
|
|
testWidgets('long cloud ID stays within inspector at $size', (tester) async {
|
|
tester.view.physicalSize = size;
|
|
tester.view.devicePixelRatio = 1;
|
|
addTearDown(tester.view.resetPhysicalSize);
|
|
addTearDown(tester.view.resetDevicePixelRatio);
|
|
SharedPreferences.setMockInitialValues({});
|
|
final outbox = SyncOutbox(await SharedPreferences.getInstance());
|
|
const cloudId = 'ride_0123456789abcdef0123456789abcdef';
|
|
final item = await outbox.enqueue(9, 'firebase');
|
|
await outbox.update(item.copyWith(remoteId: cloudId));
|
|
final db = AppDatabase.forTesting(NativeDatabase.memory());
|
|
addTearDown(db.close);
|
|
final auth = _NoNetworkAuth();
|
|
await tester.pumpWidget(ProviderScope(overrides: [
|
|
databaseProvider.overrideWithValue(db),
|
|
syncOutboxProvider.overrideWithValue(outbox),
|
|
syncManagerProvider.overrideWith((ref) => SyncManager(outbox)),
|
|
cloudRestoreControllerProvider.overrideWith((ref) => CloudRestoreController(
|
|
restoreService: CloudRestoreService(db: db, authService: auth),
|
|
authService: auth,
|
|
)),
|
|
], child: const MaterialApp(home: SyncStatusInspectorScreen())));
|
|
await tester.pumpAndSettle();
|
|
await tester.ensureVisible(find.text(cloudId));
|
|
expect(tester.takeException(), isNull);
|
|
final bounds = tester.getRect(find.text(cloudId));
|
|
expect(bounds.right, lessThanOrEqualTo(size.width));
|
|
expect(find.text('Cloud Ride ID'), findsOneWidget);
|
|
await tester.pumpWidget(const SizedBox.shrink());
|
|
});
|
|
}
|
|
}
|