46 lines
1.7 KiB
Dart
46 lines
1.7 KiB
Dart
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<Widget> _wrapped() async {
|
|
SharedPreferences.setMockInitialValues(<String, Object>{});
|
|
final prefs = await SharedPreferences.getInstance();
|
|
return ProviderScope(
|
|
overrides: <Override>[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<ProviderScope>(
|
|
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);
|
|
});
|
|
}
|