A whole lot of stuff

This commit is contained in:
Courtney Arnold 2026-08-18 11:04:58 -05:00
parent faf319322a
commit ad850d2be6
50 changed files with 3013 additions and 213 deletions

View file

@ -3,8 +3,10 @@ import 'package:flutter_test/flutter_test.dart';
import 'package:provider/provider.dart';
import 'package:fuel_tax_tracker/screens/data_settings_screen.dart';
import 'package:fuel_tax_tracker/screens/faq_screen.dart';
import 'package:fuel_tax_tracker/screens/settings_screen.dart';
import 'package:fuel_tax_tracker/screens/ui_settings_screen.dart';
import 'package:fuel_tax_tracker/screens/user_agreement_screen.dart';
import 'package:fuel_tax_tracker/services/app_state.dart';
/// Covers the Settings landing page's menu wiring: it groups settings into
@ -24,11 +26,15 @@ void main() {
);
}
testWidgets('shows UI and Data menu entries, plus the summary', (tester) async {
testWidgets('shows UI, Data, FAQ, and User Agreement menu entries, plus the summary',
(tester) async {
await pumpSettings(tester);
expect(find.text('UI'), findsOneWidget);
expect(find.text('Data'), findsOneWidget);
expect(find.text('FAQ'), findsOneWidget);
expect(find.text('User Agreement'), findsOneWidget);
await tester.scrollUntilVisible(find.text('Summary'), 300, scrollable: find.byType(Scrollable));
expect(find.text('Summary'), findsOneWidget);
// None of Data's contents leaked onto the landing page.
expect(find.text('Cloud Storage'), findsNothing);
@ -56,4 +62,45 @@ void main() {
await tester.scrollUntilVisible(find.text('Advanced'), 200, scrollable: find.byType(Scrollable));
expect(find.text('Advanced'), findsOneWidget);
});
testWidgets('tapping FAQ opens FaqScreen with its questions collapsed by default',
(tester) async {
await pumpSettings(tester);
await tester.tap(find.text('FAQ'));
await tester.pumpAndSettle();
expect(find.byType(FaqScreen), findsOneWidget);
expect(find.text('What is the Missouri Motor Fuel Tax Refund?'), findsOneWidget);
// Answers are inside collapsed ExpansionTiles, not visible until tapped.
expect(find.textContaining('12.5¢ per gallon'), findsNothing);
await tester.tap(find.text('What is the Missouri Motor Fuel Tax Refund?'));
await tester.pumpAndSettle();
expect(find.textContaining('12.5¢ per gallon'), findsOneWidget);
});
testWidgets('tapping User Agreement opens it in review mode (no Decline/I Agree)',
(tester) async {
await pumpSettings(tester);
await tester.tap(find.text('User Agreement'));
await tester.pumpAndSettle();
expect(find.byType(UserAgreementScreen), findsOneWidget);
expect(find.widgetWithText(FilledButton, 'I Agree'), findsNothing);
expect(find.widgetWithText(OutlinedButton, 'Decline'), findsNothing);
});
testWidgets('Ads card offers both buying and restoring when ads are not disabled',
(tester) async {
await pumpSettings(tester);
// Not tapped — buyAdFreeYear/restoreAdFreeYear reach a real platform
// channel via PurchaseService, which isn't set up in this test; only
// confirming both entry points render.
expect(find.widgetWithText(FilledButton, 'Remove Ads for a Year'), findsOneWidget);
expect(find.widgetWithText(TextButton, 'Restore Purchase'), findsOneWidget);
});
}