- Bundle the real sprout logo (docs/logo.png → assets/logo.png) and show it on the home menu instead of a Material icon. - Settings screen: switch language (Español / English / system) via slang, plus an About tile (logo, app name, one-line description). Drawer "Settings" is now active and routes to /settings. Tests: drawer Settings opens the screen and shows the language options. 54 green.
73 lines
2.2 KiB
Dart
73 lines
2.2 KiB
Dart
import 'package:flutter/material.dart';
|
|
import 'package:flutter_test/flutter_test.dart';
|
|
import 'package:tane/app.dart';
|
|
import 'package:tane/i18n/strings.g.dart';
|
|
|
|
import '../support/test_support.dart';
|
|
|
|
void main() {
|
|
Widget app(db) => TranslationProvider(
|
|
child: TaneApp(
|
|
repository: newTestRepository(db),
|
|
species: newTestSpeciesRepository(db),
|
|
),
|
|
);
|
|
|
|
testWidgets('home shows the menu and navigates to inventory', (tester) async {
|
|
LocaleSettings.setLocaleSync(AppLocale.en);
|
|
final db = newTestDatabase();
|
|
addTearDown(db.close);
|
|
|
|
await tester.pumpWidget(app(db));
|
|
await tester.pumpAndSettle();
|
|
|
|
expect(find.text('Your inventory'), findsOneWidget);
|
|
expect(find.text('Open market'), findsOneWidget);
|
|
expect(find.text('Coming soon'), findsOneWidget); // market is Block 2
|
|
|
|
await tester.tap(find.byKey(const Key('home.inventory')));
|
|
await tester.pumpAndSettle();
|
|
|
|
expect(find.text('No seeds yet. Tap + to add your first.'), findsOneWidget);
|
|
await disposeTree(tester);
|
|
});
|
|
|
|
testWidgets('drawer opens and its Inventory item navigates', (tester) async {
|
|
LocaleSettings.setLocaleSync(AppLocale.en);
|
|
final db = newTestDatabase();
|
|
addTearDown(db.close);
|
|
|
|
await tester.pumpWidget(app(db));
|
|
await tester.pumpAndSettle();
|
|
|
|
await tester.tap(find.byIcon(Icons.menu)); // hamburger
|
|
await tester.pumpAndSettle();
|
|
|
|
// Social destinations are shown but disabled.
|
|
expect(find.text('Your profile'), findsOneWidget);
|
|
|
|
await tester.tap(find.text('Inventory')); // active drawer item
|
|
await tester.pumpAndSettle();
|
|
|
|
expect(find.text('No seeds yet. Tap + to add your first.'), findsOneWidget);
|
|
await disposeTree(tester);
|
|
});
|
|
|
|
testWidgets('drawer Settings opens the settings screen', (tester) async {
|
|
LocaleSettings.setLocaleSync(AppLocale.en);
|
|
final db = newTestDatabase();
|
|
addTearDown(db.close);
|
|
|
|
await tester.pumpWidget(app(db));
|
|
await tester.pumpAndSettle();
|
|
|
|
await tester.tap(find.byIcon(Icons.menu));
|
|
await tester.pumpAndSettle();
|
|
await tester.tap(find.text('Settings'));
|
|
await tester.pumpAndSettle();
|
|
|
|
expect(find.text('Language'), findsOneWidget);
|
|
expect(find.text('Español'), findsOneWidget);
|
|
await disposeTree(tester);
|
|
});
|
|
}
|