| 
									
										
										
										
											2023-10-14 20:37:44 +08:00
										 |  |  | import 'dart:io'; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-07-02 23:37:30 +08:00
										 |  |  | import 'package:appflowy/startup/startup.dart'; | 
					
						
							|  |  |  | import 'package:appflowy/startup/tasks/prelude.dart'; | 
					
						
							| 
									
										
										
										
											2023-06-11 14:19:44 +08:00
										 |  |  | import 'package:appflowy/workspace/application/settings/prelude.dart'; | 
					
						
							| 
									
										
										
										
											2022-12-20 11:14:42 +08:00
										 |  |  | import 'package:flutter_test/flutter_test.dart'; | 
					
						
							|  |  |  | import 'package:integration_test/integration_test.dart'; | 
					
						
							| 
									
										
										
										
											2023-07-02 23:37:30 +08:00
										 |  |  | import 'package:path/path.dart' as p; | 
					
						
							| 
									
										
										
										
											2023-10-14 20:37:44 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-12-20 11:14:42 +08:00
										 |  |  | import 'util/mock/mock_file_picker.dart'; | 
					
						
							|  |  |  | import 'util/util.dart'; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | void main() { | 
					
						
							|  |  |  |   IntegrationTestWidgetsFlutterBinding.ensureInitialized(); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   group('customize the folder path', () { | 
					
						
							| 
									
										
										
										
											2023-10-14 20:37:44 +08:00
										 |  |  |     if (Platform.isWindows) { | 
					
						
							|  |  |  |       return; | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-12-20 11:14:42 +08:00
										 |  |  |     testWidgets('switch to B from A, then switch to A again', (tester) async { | 
					
						
							| 
									
										
										
										
											2023-07-02 23:37:30 +08:00
										 |  |  |       const userA = 'UserA'; | 
					
						
							|  |  |  |       const userB = 'UserB'; | 
					
						
							| 
									
										
										
										
											2022-12-20 11:14:42 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-07-02 23:37:30 +08:00
										 |  |  |       final initialPath = p.join(userA, appFlowyDataFolder); | 
					
						
							|  |  |  |       final context = await tester.initializeAppFlowy( | 
					
						
							|  |  |  |         pathExtension: initialPath, | 
					
						
							|  |  |  |       ); | 
					
						
							|  |  |  |       // remove the last extension
 | 
					
						
							|  |  |  |       final rootPath = context.applicationDataDirectory.replaceFirst( | 
					
						
							|  |  |  |         initialPath, | 
					
						
							|  |  |  |         '', | 
					
						
							|  |  |  |       ); | 
					
						
							| 
									
										
										
										
											2022-12-20 11:14:42 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  |       await tester.tapGoButton(); | 
					
						
							| 
									
										
										
										
											2023-06-12 20:32:55 +08:00
										 |  |  |       tester.expectToSeeHomePage(); | 
					
						
							| 
									
										
										
										
											2022-12-20 11:14:42 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-03-20 13:29:17 +00:00
										 |  |  |       // switch to user B
 | 
					
						
							| 
									
										
										
										
											2022-12-20 11:14:42 +08:00
										 |  |  |       { | 
					
						
							| 
									
										
										
										
											2023-07-02 23:37:30 +08:00
										 |  |  |         // set user name for userA
 | 
					
						
							| 
									
										
										
										
											2022-12-20 11:14:42 +08:00
										 |  |  |         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
 | 
					
						
							| 
									
										
										
										
											2023-07-02 23:37:30 +08:00
										 |  |  |         await mockGetDirectoryPath( | 
					
						
							|  |  |  |           p.join(rootPath, userB), | 
					
						
							|  |  |  |         ); | 
					
						
							| 
									
										
										
										
											2022-12-20 11:14:42 +08:00
										 |  |  |         await tester.tapCustomLocationButton(); | 
					
						
							|  |  |  |         await tester.pumpAndSettle(); | 
					
						
							| 
									
										
										
										
											2023-06-12 20:32:55 +08:00
										 |  |  |         tester.expectToSeeHomePage(); | 
					
						
							| 
									
										
										
										
											2022-12-20 11:14:42 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-07-02 23:37:30 +08:00
										 |  |  |         // set user name for userB
 | 
					
						
							| 
									
										
										
										
											2022-12-20 11:14:42 +08:00
										 |  |  |         await tester.openSettings(); | 
					
						
							|  |  |  |         await tester.openSettingsPage(SettingsPage.user); | 
					
						
							|  |  |  |         await tester.enterUserName(userB); | 
					
						
							| 
									
										
										
										
											2023-06-11 14:19:44 +08:00
										 |  |  |       } | 
					
						
							| 
									
										
										
										
											2022-12-20 11:14:42 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-06-11 14:19:44 +08:00
										 |  |  |       // switch to the userA
 | 
					
						
							|  |  |  |       { | 
					
						
							| 
									
										
										
										
											2022-12-20 11:14:42 +08:00
										 |  |  |         await tester.openSettingsPage(SettingsPage.files); | 
					
						
							|  |  |  |         await tester.pumpAndSettle(); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         // mock the file_picker result
 | 
					
						
							| 
									
										
										
										
											2023-07-02 23:37:30 +08:00
										 |  |  |         await mockGetDirectoryPath( | 
					
						
							|  |  |  |           p.join(rootPath, userA), | 
					
						
							|  |  |  |         ); | 
					
						
							| 
									
										
										
										
											2022-12-20 11:14:42 +08:00
										 |  |  |         await tester.tapCustomLocationButton(); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         await tester.pumpAndSettle(); | 
					
						
							| 
									
										
										
										
											2023-06-12 20:32:55 +08:00
										 |  |  |         tester.expectToSeeHomePage(); | 
					
						
							| 
									
										
										
										
											2023-06-11 14:19:44 +08:00
										 |  |  |         tester.expectToSeeUserName(userA); | 
					
						
							| 
									
										
										
										
											2022-12-20 11:14:42 +08:00
										 |  |  |       } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-03-20 13:29:17 +00:00
										 |  |  |       // switch to the userB again
 | 
					
						
							| 
									
										
										
										
											2022-12-20 11:14:42 +08:00
										 |  |  |       { | 
					
						
							|  |  |  |         await tester.openSettings(); | 
					
						
							|  |  |  |         await tester.openSettingsPage(SettingsPage.files); | 
					
						
							|  |  |  |         await tester.pumpAndSettle(); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         // mock the file_picker result
 | 
					
						
							| 
									
										
										
										
											2023-07-02 23:37:30 +08:00
										 |  |  |         await mockGetDirectoryPath( | 
					
						
							|  |  |  |           p.join(rootPath, userB), | 
					
						
							|  |  |  |         ); | 
					
						
							| 
									
										
										
										
											2022-12-20 11:14:42 +08:00
										 |  |  |         await tester.tapCustomLocationButton(); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         await tester.pumpAndSettle(); | 
					
						
							| 
									
										
										
										
											2023-06-12 20:32:55 +08:00
										 |  |  |         tester.expectToSeeHomePage(); | 
					
						
							| 
									
										
										
										
											2023-06-11 14:19:44 +08:00
										 |  |  |         tester.expectToSeeUserName(userB); | 
					
						
							| 
									
										
										
										
											2022-12-20 11:14:42 +08:00
										 |  |  |       } | 
					
						
							|  |  |  |     }); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     testWidgets('reset to default location', (tester) async { | 
					
						
							|  |  |  |       await tester.initializeAppFlowy(); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       await tester.tapGoButton(); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       // home and readme document
 | 
					
						
							| 
									
										
										
										
											2023-06-12 20:32:55 +08:00
										 |  |  |       tester.expectToSeeHomePage(); | 
					
						
							| 
									
										
										
										
											2022-12-20 11:14:42 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  |       // open settings and restore the location
 | 
					
						
							|  |  |  |       await tester.openSettings(); | 
					
						
							|  |  |  |       await tester.openSettingsPage(SettingsPage.files); | 
					
						
							|  |  |  |       await tester.restoreLocation(); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       expect( | 
					
						
							| 
									
										
										
										
											2023-07-02 23:37:30 +08:00
										 |  |  |         await appFlowyApplicationDataDirectory().then((value) => value.path), | 
					
						
							|  |  |  |         await getIt<ApplicationDataStorage>().getPath(), | 
					
						
							| 
									
										
										
										
											2022-12-20 11:14:42 +08:00
										 |  |  |       ); | 
					
						
							|  |  |  |     }); | 
					
						
							|  |  |  |   }); | 
					
						
							|  |  |  | } |