mock_file_picker.dart 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101
  1. import 'dart:io';
  2. import 'package:appflowy/startup/startup.dart';
  3. import 'package:appflowy/util/file_picker/file_picker_service.dart';
  4. import 'package:file_picker/file_picker.dart' as fp;
  5. import 'package:path/path.dart' as p;
  6. import '../util.dart';
  7. class MockFilePicker implements FilePickerService {
  8. MockFilePicker({
  9. this.mockPath = '',
  10. this.mockPaths = const [],
  11. });
  12. final String mockPath;
  13. final List<String> mockPaths;
  14. @override
  15. Future<String?> getDirectoryPath({String? title}) {
  16. return Future.value(mockPath);
  17. }
  18. @override
  19. Future<String?> saveFile({
  20. String? dialogTitle,
  21. String? fileName,
  22. String? initialDirectory,
  23. fp.FileType type = fp.FileType.any,
  24. List<String>? allowedExtensions,
  25. bool lockParentWindow = false,
  26. }) {
  27. return Future.value(mockPath);
  28. }
  29. @override
  30. Future<FilePickerResult?> pickFiles({
  31. String? dialogTitle,
  32. String? initialDirectory,
  33. fp.FileType type = fp.FileType.any,
  34. List<String>? allowedExtensions,
  35. Function(fp.FilePickerStatus p1)? onFileLoading,
  36. bool allowCompression = true,
  37. bool allowMultiple = false,
  38. bool withData = false,
  39. bool withReadStream = false,
  40. bool lockParentWindow = false,
  41. }) {
  42. final platformFiles = mockPaths
  43. .map((e) => fp.PlatformFile(path: e, name: '', size: 0))
  44. .toList();
  45. return Future.value(
  46. FilePickerResult(
  47. platformFiles,
  48. ),
  49. );
  50. }
  51. }
  52. Future<void> mockGetDirectoryPath(String? name) async {
  53. final dir = await TestFolder.testLocation(name);
  54. getIt.unregister<FilePickerService>();
  55. getIt.registerFactory<FilePickerService>(
  56. () => MockFilePicker(
  57. mockPath: dir.path,
  58. ),
  59. );
  60. return;
  61. }
  62. Future<String> mockSaveFilePath(String? name, String fileName) async {
  63. final dir = await TestFolder.testLocation(name);
  64. final path = p.join(dir.path, fileName);
  65. getIt.unregister<FilePickerService>();
  66. getIt.registerFactory<FilePickerService>(
  67. () => MockFilePicker(
  68. mockPath: path,
  69. ),
  70. );
  71. return path;
  72. }
  73. Future<List<String>> mockPickFilePaths(
  74. List<String> fileNames, {
  75. String? name,
  76. String? customPath,
  77. }) async {
  78. late final Directory dir;
  79. if (customPath != null) {
  80. dir = Directory(customPath);
  81. } else {
  82. dir = await TestFolder.testLocation(name);
  83. }
  84. final paths = fileNames.map((e) => p.join(dir.path, e)).toList();
  85. getIt.unregister<FilePickerService>();
  86. getIt.registerFactory<FilePickerService>(
  87. () => MockFilePicker(
  88. mockPaths: paths,
  89. ),
  90. );
  91. return paths;
  92. }