import 'package:flutter/material.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:flutter_test/flutter_test.dart'; import 'package:relationship_saver/features/local/local_models.dart'; import 'package:relationship_saver/features/local/local_repository.dart'; import 'package:relationship_saver/features/local/storage/local_data_store_in_memory.dart'; import 'package:relationship_saver/features/local/storage/local_data_store_provider.dart'; import 'package:relationship_saver/features/reminders/scheduling/reminder_scheduler.dart'; import 'package:relationship_saver/features/reminders/scheduling/reminder_scheduler_provider.dart'; import 'package:relationship_saver/features/share_intake/share_inbox_view.dart'; import 'package:relationship_saver/features/sync/storage/sync_state_store_in_memory.dart'; import 'package:relationship_saver/features/sync/storage/sync_state_store_provider.dart'; import 'package:shared_preferences/shared_preferences.dart'; void main() { setUp(() { SharedPreferences.setMockInitialValues({}); }); testWidgets('shows queued inbox entry and allows dismiss', ( WidgetTester tester, ) async { final ProviderContainer container = ProviderContainer( overrides: [ localDataStoreProvider.overrideWithValue(InMemoryLocalDataStore()), syncStateStoreProvider.overrideWithValue(InMemorySyncStateStore()), reminderSchedulerProvider.overrideWithValue(_NoopReminderScheduler()), ], ); addTearDown(container.dispose); await container.read(localRepositoryProvider.future); await container .read(localRepositoryProvider.notifier) .addPerson( name: 'Alex Morgan', relationship: 'Friend', notes: '', tags: const [], ); await container .read(localRepositoryProvider.notifier) .addPerson( name: 'Alex Morgan', relationship: 'Cousin', notes: '', tags: const [], ); await container .read(localRepositoryProvider.notifier) .ingestSharedMessage( const SharedMessageIngestInput( sourceApp: 'whatsapp', sourceDisplayName: 'Alex Morgan', messageText: 'Need help choosing this gift?', ), ); await tester.pumpWidget( UncontrolledProviderScope( container: container, child: const MaterialApp(home: Scaffold(body: ShareInboxView())), ), ); await tester.pumpAndSettle(); expect(find.text('Share Inbox'), findsOneWidget); expect(find.text('Ambiguous match'), findsOneWidget); await tester.tap(find.widgetWithText(TextButton, 'Dismiss Item').first); await tester.pumpAndSettle(); expect(find.text('No unresolved shares.'), findsOneWidget); }); } class _NoopReminderScheduler implements ReminderScheduler { @override Future clearAll() async {} @override Future requestPermissions() async => true; @override Future reconcile(List reminders) async {} }