123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118 |
- import 'dart:io';
- import 'package:appflowy/core/config/kv_keys.dart';
- import 'package:appflowy/main.dart' as app;
- import 'package:appflowy/startup/tasks/prelude.dart';
- import 'package:flutter/gestures.dart';
- import 'package:flutter/services.dart';
- import 'package:flutter_test/flutter_test.dart';
- import 'package:path_provider/path_provider.dart';
- import 'package:shared_preferences/shared_preferences.dart';
- class TestFolder {
- /// Location / Path
- /// Set a given AppFlowy data storage location under test environment.
- ///
- /// To pass null means clear the location.
- ///
- /// The file_picker is a system component and can't be tapped, so using logic instead of tapping.
- ///
- static Future<void> setTestLocation(String? name) async {
- final location = await testLocation(name);
- SharedPreferences.setMockInitialValues({
- KVKeys.pathLocation: location.path,
- });
- return;
- }
- /// Clean the location.
- static Future<void> cleanTestLocation(String? name) async {
- final dir = await testLocation(name);
- await dir.delete(recursive: true);
- return;
- }
- /// Get current using location.
- static Future<String> currentLocation() async {
- final prefs = await SharedPreferences.getInstance();
- return prefs.getString(KVKeys.pathLocation)!;
- }
- /// Get default location under development environment.
- static Future<String> defaultDevelopmentLocation() async {
- final dir = await appFlowyDocumentDirectory();
- return dir.path;
- }
- /// Get default location under test environment.
- static Future<Directory> testLocation(String? name) async {
- final dir = await getApplicationDocumentsDirectory();
- var path = '${dir.path}/flowy_test';
- if (name != null) {
- path += '/$name';
- }
- return Directory(path).create(recursive: true);
- }
- }
- extension AppFlowyTestBase on WidgetTester {
- Future<void> initializeAppFlowy() async {
- TestDefaultBinaryMessengerBinding.instance.defaultBinaryMessenger
- .setMockMethodCallHandler(
- const MethodChannel('hotkey_manager'),
- (MethodCall methodCall) async {
- if (methodCall.method == 'unregisterAll') {
- // do nothing
- }
- return;
- },
- );
- await app.main();
- await wait(3000);
- await pumpAndSettle(const Duration(seconds: 2));
- }
- Future<void> tapButton(
- Finder finder, {
- int? pointer,
- int buttons = kPrimaryButton,
- bool warnIfMissed = true,
- int milliseconds = 500,
- }) async {
- await tap(finder);
- await pumpAndSettle(Duration(milliseconds: milliseconds));
- return;
- }
- Future<void> tapButtonWithName(
- String tr, {
- int milliseconds = 500,
- }) async {
- final button = find.text(tr);
- await tapButton(
- button,
- milliseconds: milliseconds,
- );
- return;
- }
- Future<void> tapButtonWithTooltip(
- String tr, {
- int milliseconds = 500,
- }) async {
- final button = find.byTooltip(tr);
- await tapButton(
- button,
- milliseconds: milliseconds,
- );
- return;
- }
- Future<void> wait(int milliseconds) async {
- await pumpAndSettle(Duration(milliseconds: milliseconds));
- return;
- }
- }
|