import 'package:bible_tracker/screens/home_screen.dart'; import 'package:bible_tracker/services/tracker_service.dart'; import 'package:bible_tracker/services/tracker_storage.dart'; import 'package:bible_tracker/widgets/theme.dart'; import 'package:flutter/material.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:flutter_test/flutter_test.dart'; import 'package:shared_preferences/shared_preferences.dart'; Future _wrapped() async { SharedPreferences.setMockInitialValues({}); final prefs = await SharedPreferences.getInstance(); return ProviderScope( overrides: [sharedPreferencesProvider.overrideWithValue(prefs)], child: MaterialApp(theme: AppTheme.light(), home: const HomeScreen()), ); } void main() { testWidgets('shows empty state when no trackers exist', (tester) async { await tester.pumpWidget(await _wrapped()); await tester.pumpAndSettle(); expect(find.text('Start your first tracker'), findsOneWidget); expect(find.text('New Tracker'), findsOneWidget); }); testWidgets('creating a tracker shows it on the list', (tester) async { await tester.pumpWidget(await _wrapped()); await tester.pumpAndSettle(); final ProviderScope scope = tester.widget( find.byType(ProviderScope), ); expect(scope, isNotNull); final BuildContext context = tester.element(find.byType(HomeScreen)); final ProviderContainer container = ProviderScope.containerOf(context); await container .read(trackerServiceProvider.notifier) .create(name: 'My Plan', color: const Color(0xFF3F51B5)); await tester.pumpAndSettle(); expect(find.text('My Plan'), findsOneWidget); expect(find.text('0%'), findsOneWidget); }); }