mirror of
				https://github.com/AppFlowy-IO/AppFlowy.git
				synced 2025-10-30 17:38:40 +00:00 
			
		
		
		
	 80a273edae
			
		
	
	
		80a273edae
		
			
		
	
	
	
	
		
			
			* fix: create a new document * fix: the banner don't show after deleteing the page * fix: inserting a divider through the slash menu the cursor should stay active in the next line * fix: the overlay doesn't dismiss after selecting a page * fix: typo * fix: delete the page in document if it has been deleted * chore: l10n * chore: rename events * ci: rm install_diesel in ci * fix: cover color not working * ci: fix tauri build --------- Co-authored-by: nathan <nathan@appflowy.io>
		
			
				
	
	
		
			119 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			Dart
		
	
	
	
	
	
			
		
		
	
	
			119 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			Dart
		
	
	
	
	
	
| 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, findRichText: true);
 | |
|     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;
 | |
|   }
 | |
| }
 |