summaryrefslogtreecommitdiff
path: root/test/home_screen_widget_test.dart
diff options
context:
space:
mode:
Diffstat (limited to 'test/home_screen_widget_test.dart')
-rw-r--r--test/home_screen_widget_test.dart44
1 files changed, 44 insertions, 0 deletions
diff --git a/test/home_screen_widget_test.dart b/test/home_screen_widget_test.dart
new file mode 100644
index 0000000..c05d49b
--- /dev/null
+++ b/test/home_screen_widget_test.dart
@@ -0,0 +1,44 @@
+import 'package:flutter/material.dart';
+import 'package:flutter_test/flutter_test.dart';
+import 'package:quicklog/screens/home_screen.dart';
+import 'package:shared_preferences/shared_preferences.dart';
+
+void main() {
+ TestWidgetsFlutterBinding.ensureInitialized();
+
+ testWidgets('character counter updates as user types', (tester) async {
+ SharedPreferences.setMockInitialValues(<String, Object>{});
+ await tester.pumpWidget(const MaterialApp(home: HomeScreen()));
+ await tester.pumpAndSettle();
+
+ expect(find.text('0 chars'), findsOneWidget);
+
+ await tester.enterText(find.byType(TextField), 'hello');
+ await tester.pump();
+ expect(find.text('5 chars'), findsOneWidget);
+ });
+
+ testWidgets('Clear button empties the input', (tester) async {
+ SharedPreferences.setMockInitialValues(<String, Object>{});
+ await tester.pumpWidget(const MaterialApp(home: HomeScreen()));
+ await tester.pumpAndSettle();
+
+ await tester.enterText(find.byType(TextField), 'something');
+ await tester.pump();
+ expect(find.text('9 chars'), findsOneWidget);
+
+ await tester.tap(find.text('Clear'));
+ await tester.pump();
+ expect(find.text('0 chars'), findsOneWidget);
+ });
+
+ testWidgets('Log text button is rendered and enabled', (tester) async {
+ SharedPreferences.setMockInitialValues(<String, Object>{});
+ await tester.pumpWidget(const MaterialApp(home: HomeScreen()));
+ await tester.pumpAndSettle();
+
+ final btn = find.widgetWithText(FilledButton, 'Log text');
+ expect(btn, findsOneWidget);
+ expect(tester.widget<FilledButton>(btn).enabled, isTrue);
+ });
+}