Files
dartamp/test/presets_window_test.dart
T
2026-08-16 17:29:00 +02:00

64 lines
2.0 KiB
Dart

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<FilledButton>(
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);
});
}