Browse Source

test: add single/double/triple tap test

Lucas.Xu 2 years ago
parent
commit
a371cf3a7c

+ 83 - 0
frontend/app_flowy/packages/appflowy_editor/test/service/selection_service_test.dart

@@ -0,0 +1,83 @@
+import 'package:appflowy_editor/appflowy_editor.dart';
+import 'package:flutter_test/flutter_test.dart';
+import '../infra/test_editor.dart';
+
+void main() async {
+  setUpAll(() {
+    TestWidgetsFlutterBinding.ensureInitialized();
+  });
+
+  group('selection_service.dart', () {
+    testWidgets('Single tap test ', (tester) async {
+      const text = 'Welcome to Appflowy 😁';
+      final editor = tester.editor
+        ..insertTextNode(text)
+        ..insertTextNode(text)
+        ..insertTextNode(text);
+      await editor.startTesting();
+
+      final secondTextNode = editor.nodeAtPath([1]);
+      final finder = find.byKey(secondTextNode!.key!);
+
+      final rect = tester.getRect(finder);
+      // tap at the beginning
+      await tester.tapAt(rect.centerLeft);
+      expect(
+        editor.documentSelection,
+        Selection.single(path: [1], startOffset: 0),
+      );
+
+      // tap at the ending
+      await tester.tapAt(rect.centerRight);
+      expect(
+        editor.documentSelection,
+        Selection.single(path: [1], startOffset: text.length),
+      );
+    });
+
+    testWidgets('Test double tap', (tester) async {
+      const text = 'Welcome to Appflowy 😁';
+      final editor = tester.editor
+        ..insertTextNode(text)
+        ..insertTextNode(text)
+        ..insertTextNode(text);
+      await editor.startTesting();
+
+      final secondTextNode = editor.nodeAtPath([1]);
+      final finder = find.byKey(secondTextNode!.key!);
+
+      final rect = tester.getRect(finder);
+      // double tap
+      await tester.tapAt(rect.centerLeft + const Offset(10.0, 0.0));
+      await tester.tapAt(rect.centerLeft + const Offset(10.0, 0.0));
+      await tester.pump();
+      expect(
+        editor.documentSelection,
+        Selection.single(path: [1], startOffset: 0, endOffset: 7),
+      );
+    });
+
+    testWidgets('Test triple tap', (tester) async {
+      const text = 'Welcome to Appflowy 😁';
+      final editor = tester.editor
+        ..insertTextNode(text)
+        ..insertTextNode(text)
+        ..insertTextNode(text);
+      await editor.startTesting();
+
+      final secondTextNode = editor.nodeAtPath([1]);
+      final finder = find.byKey(secondTextNode!.key!);
+
+      final rect = tester.getRect(finder);
+      // triple tap
+      await tester.tapAt(rect.centerLeft + const Offset(10.0, 0.0));
+      await tester.tapAt(rect.centerLeft + const Offset(10.0, 0.0));
+      await tester.tapAt(rect.centerLeft + const Offset(10.0, 0.0));
+      await tester.pump();
+      expect(
+        editor.documentSelection,
+        Selection.single(path: [1], startOffset: 0, endOffset: text.length),
+      );
+    });
+  });
+}