| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108 | import 'package:appflowy/startup/startup.dart';import 'package:appflowy/startup/tasks/prelude.dart';import 'package:appflowy/workspace/application/settings/prelude.dart';import 'package:flutter_test/flutter_test.dart';import 'package:integration_test/integration_test.dart';import 'package:path/path.dart' as p;import 'util/mock/mock_file_picker.dart';import 'util/util.dart';void main() {  IntegrationTestWidgetsFlutterBinding.ensureInitialized();  group('customize the folder path', () {    testWidgets('switch to B from A, then switch to A again', (tester) async {      const userA = 'UserA';      const userB = 'UserB';      final initialPath = p.join(userA, appFlowyDataFolder);      final context = await tester.initializeAppFlowy(        pathExtension: initialPath,      );      // remove the last extension      final rootPath = context.applicationDataDirectory.replaceFirst(        initialPath,        '',      );      await tester.tapGoButton();      tester.expectToSeeHomePage();      // switch to user B      {        // set user name for userA        await tester.openSettings();        await tester.openSettingsPage(SettingsPage.user);        await tester.enterUserName(userA);        await tester.openSettingsPage(SettingsPage.files);        await tester.pumpAndSettle();        // mock the file_picker result        await mockGetDirectoryPath(          p.join(rootPath, userB),        );        await tester.tapCustomLocationButton();        await tester.pumpAndSettle();        tester.expectToSeeHomePage();        // set user name for userB        await tester.openSettings();        await tester.openSettingsPage(SettingsPage.user);        await tester.enterUserName(userB);      }      // switch to the userA      {        await tester.openSettingsPage(SettingsPage.files);        await tester.pumpAndSettle();        // mock the file_picker result        await mockGetDirectoryPath(          p.join(rootPath, userA),        );        await tester.tapCustomLocationButton();        await tester.pumpAndSettle();        tester.expectToSeeHomePage();        tester.expectToSeeUserName(userA);      }      // switch to the userB again      {        await tester.openSettings();        await tester.openSettingsPage(SettingsPage.files);        await tester.pumpAndSettle();        // mock the file_picker result        await mockGetDirectoryPath(          p.join(rootPath, userB),        );        await tester.tapCustomLocationButton();        await tester.pumpAndSettle();        tester.expectToSeeHomePage();        tester.expectToSeeUserName(userB);      }    });    testWidgets('reset to default location', (tester) async {      await tester.initializeAppFlowy();      await tester.tapGoButton();      // home and readme document      tester.expectToSeeHomePage();      // open settings and restore the location      await tester.openSettings();      await tester.openSettingsPage(SettingsPage.files);      await tester.restoreLocation();      expect(        await appFlowyApplicationDataDirectory().then((value) => value.path),        await getIt<ApplicationDataStorage>().getPath(),      );    });  });}
 |