test: add single/double/triple tap test

This commit is contained in:
Lucas.Xu 2022-09-16 11:11:13 +08:00
parent 5c13b324ec
commit a371cf3a7c

@ -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),
);
});
});
}