import "package:dartamp/src/main_window/presets_window.dart"; import "package:flutter_test/flutter_test.dart"; import "package:material_ui/material_ui.dart"; import "package:shared_preferences/shared_preferences.dart"; void main() { setUp(() { SharedPreferences.setMockInitialValues({}); }); testWidgets("shows the preset list in load mode with no name field", ( tester, ) async { await tester.pumpWidget( const MaterialApp(home: PresetsWindow(mode: PresetsMode.load)), ); await tester.pump(); expect(find.text("Winamp EQ Presets"), findsOneWidget); expect(find.text("Classical"), findsOneWidget); expect(find.byType(TextField), findsNothing); }); testWidgets("save mode adds the name field", (tester) async { await tester.pumpWidget( const MaterialApp(home: PresetsWindow(mode: PresetsMode.save)), ); await tester.pump(); expect(find.text("Preset name"), findsOneWidget); expect(find.byType(TextField), findsOneWidget); }); testWidgets("selecting a preset enables the Load action", (tester) async { await tester.pumpWidget( const MaterialApp(home: PresetsWindow(mode: PresetsMode.load)), ); await tester.pump(); FilledButton button() => tester.widget( find.widgetWithText(FilledButton, "Load"), ); expect(button().onPressed, isNull); await tester.tap(find.text("Classical")); // The list rows have an onDoubleTap in load mode, so the single-tap // callback only fires after the double-tap timeout elapses. await tester.pump(const Duration(milliseconds: 350)); expect(button().onPressed, isNotNull); }); testWidgets("mode switcher toggles between load and delete", (tester) async { await tester.pumpWidget( const MaterialApp(home: PresetsWindow(mode: PresetsMode.load)), ); await tester.pump(); await tester.tap(find.text("Delete")); await tester.pump(); expect(find.widgetWithText(FilledButton, "Delete"), findsOneWidget); expect(find.byType(TextField), findsNothing); }); }