mirror of
				https://github.com/AppFlowy-IO/AppFlowy.git
				synced 2025-11-04 12:03:28 +00:00 
			
		
		
		
	* feat: add archive for compression * feat: add service to manage zipped work spaces * feat: export service in barrel file * feat: ignore .ephemeral directory * feat: add first compressed workspace file * fix: directory path was wrong * feat: add a somewhat useful test * fix: move to same file (delete later) * fix: use script path vs. working directory for CI * fix: read from asset bundle instead of file system * fix: workaround to run integration in multiple files on desktop (flutter/flutter#101031 * feat: remove .ephemeral from .gitignore, no longer created * feat: document test changes * fix: lucas suggestion * feat: mark assets as excluded in pubspec.yaml * feat: add class for build utilities * feat: add script runner for release builds * feat: add build script as task in flowy project * fix: typo in pubspec.yaml * chore: use constants for exclude tag * feat: add appversion as argument to build tool * feat: use dart script in release.yml * chore: remove task * fix: careless error Co-authored-by: Mihir <84044317+squidrye@users.noreply.github.com> * feat: add translations for view of * fix: typo in getAllDatabase * feat: add view of database * fix: remove unused import * fix: use effective dart typing * fix: insertPage marked as async, should return future * fix: Remove multi-line string * fix: ref can be null * fix: unused imports caused analyzer to fail * feat: also fix. Add empty document as option and change name to _name * chore: move referenced database tests to empty document test file * feat: add test utilities * feat: add new integration test on an empty document * feat: register test in runner * fix: missing reference in insert_page_command * fix: analyzer errors --------- Co-authored-by: Mihir <84044317+squidrye@users.noreply.github.com>
		
			
				
	
	
		
			162 lines
		
	
	
		
			4.6 KiB
		
	
	
	
		
			Dart
		
	
	
	
	
	
			
		
		
	
	
			162 lines
		
	
	
		
			4.6 KiB
		
	
	
	
		
			Dart
		
	
	
	
	
	
import 'package:appflowy/user/presentation/folder/folder_widget.dart';
 | 
						|
import 'package:flowy_infra_ui/style_widget/text_field.dart';
 | 
						|
import 'package:flutter_test/flutter_test.dart';
 | 
						|
import 'package:integration_test/integration_test.dart';
 | 
						|
 | 
						|
import 'util/mock/mock_file_picker.dart';
 | 
						|
import 'util/util.dart';
 | 
						|
 | 
						|
void main() {
 | 
						|
  IntegrationTestWidgetsFlutterBinding.ensureInitialized();
 | 
						|
 | 
						|
  group('customize the folder path', () {
 | 
						|
    const location = 'appflowy';
 | 
						|
 | 
						|
    setUp(() async {
 | 
						|
      await TestFolder.cleanTestLocation(location);
 | 
						|
      await TestFolder.setTestLocation(location);
 | 
						|
    });
 | 
						|
 | 
						|
    tearDown(() async {
 | 
						|
      await TestFolder.cleanTestLocation(location);
 | 
						|
    });
 | 
						|
 | 
						|
    tearDownAll(() async {
 | 
						|
      await TestFolder.cleanTestLocation(null);
 | 
						|
    });
 | 
						|
 | 
						|
    testWidgets(
 | 
						|
        'customize folder name and path when launching app in first time',
 | 
						|
        (tester) async {
 | 
						|
      const folderName = 'appflowy';
 | 
						|
      await TestFolder.cleanTestLocation(folderName);
 | 
						|
 | 
						|
      await tester.initializeAppFlowy();
 | 
						|
 | 
						|
      // Click create button
 | 
						|
      await tester.tapCreateButton();
 | 
						|
 | 
						|
      // Set directory
 | 
						|
      final cfw = find.byType(CreateFolderWidget);
 | 
						|
      expect(cfw, findsOneWidget);
 | 
						|
      final state = tester.state(cfw) as CreateFolderWidgetState;
 | 
						|
      final dir = await TestFolder.testLocation(null);
 | 
						|
      state.directory = dir.path;
 | 
						|
 | 
						|
      // input folder name
 | 
						|
      final ftf = find.byType(FlowyTextField);
 | 
						|
      expect(ftf, findsOneWidget);
 | 
						|
      await tester.enterText(ftf, 'appflowy');
 | 
						|
 | 
						|
      // Click create button again
 | 
						|
      await tester.tapCreateButton();
 | 
						|
 | 
						|
      await tester.expectToSeeWelcomePage();
 | 
						|
 | 
						|
      await TestFolder.cleanTestLocation(folderName);
 | 
						|
    });
 | 
						|
 | 
						|
    testWidgets('open a new folder when launching app in first time',
 | 
						|
        (tester) async {
 | 
						|
      const folderName = 'appflowy';
 | 
						|
      await TestFolder.cleanTestLocation(folderName);
 | 
						|
      await TestFolder.setTestLocation(folderName);
 | 
						|
 | 
						|
      await tester.initializeAppFlowy();
 | 
						|
 | 
						|
      // tap open button
 | 
						|
      await mockGetDirectoryPath(folderName);
 | 
						|
      await tester.tapOpenFolderButton();
 | 
						|
 | 
						|
      await tester.wait(1000);
 | 
						|
      await tester.expectToSeeWelcomePage();
 | 
						|
 | 
						|
      await TestFolder.cleanTestLocation(folderName);
 | 
						|
    });
 | 
						|
 | 
						|
    testWidgets('switch to B from A, then switch to A again', (tester) async {
 | 
						|
      const String userA = 'userA';
 | 
						|
      const String userB = 'userB';
 | 
						|
 | 
						|
      await TestFolder.cleanTestLocation(userA);
 | 
						|
      await TestFolder.setTestLocation(userA);
 | 
						|
 | 
						|
      await tester.initializeAppFlowy();
 | 
						|
 | 
						|
      await tester.tapGoButton();
 | 
						|
      await tester.expectToSeeWelcomePage();
 | 
						|
 | 
						|
      // switch to user B
 | 
						|
      {
 | 
						|
        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(userB);
 | 
						|
        await tester.tapCustomLocationButton();
 | 
						|
        await tester.pumpAndSettle();
 | 
						|
        await tester.expectToSeeWelcomePage();
 | 
						|
      }
 | 
						|
 | 
						|
      // switch to the userA
 | 
						|
      {
 | 
						|
        await tester.openSettings();
 | 
						|
        await tester.openSettingsPage(SettingsPage.user);
 | 
						|
        await tester.enterUserName(userB);
 | 
						|
 | 
						|
        await tester.openSettingsPage(SettingsPage.files);
 | 
						|
        await tester.pumpAndSettle();
 | 
						|
 | 
						|
        // mock the file_picker result
 | 
						|
        await mockGetDirectoryPath(userA);
 | 
						|
        await tester.tapCustomLocationButton();
 | 
						|
 | 
						|
        await tester.pumpAndSettle();
 | 
						|
        await tester.expectToSeeWelcomePage();
 | 
						|
        expect(find.textContaining(userA), findsOneWidget);
 | 
						|
      }
 | 
						|
 | 
						|
      // switch to the userB again
 | 
						|
      {
 | 
						|
        await tester.openSettings();
 | 
						|
        await tester.openSettingsPage(SettingsPage.files);
 | 
						|
        await tester.pumpAndSettle();
 | 
						|
 | 
						|
        // mock the file_picker result
 | 
						|
        await mockGetDirectoryPath(userB);
 | 
						|
        await tester.tapCustomLocationButton();
 | 
						|
 | 
						|
        await tester.pumpAndSettle();
 | 
						|
        await tester.expectToSeeWelcomePage();
 | 
						|
        expect(find.textContaining(userB), findsOneWidget);
 | 
						|
      }
 | 
						|
 | 
						|
      await TestFolder.cleanTestLocation(userA);
 | 
						|
      await TestFolder.cleanTestLocation(userB);
 | 
						|
    });
 | 
						|
 | 
						|
    testWidgets('reset to default location', (tester) async {
 | 
						|
      await tester.initializeAppFlowy();
 | 
						|
 | 
						|
      await tester.tapGoButton();
 | 
						|
 | 
						|
      // home and readme document
 | 
						|
      await tester.expectToSeeWelcomePage();
 | 
						|
 | 
						|
      // open settings and restore the location
 | 
						|
      await tester.openSettings();
 | 
						|
      await tester.openSettingsPage(SettingsPage.files);
 | 
						|
      await tester.restoreLocation();
 | 
						|
 | 
						|
      expect(
 | 
						|
        await TestFolder.defaultDevelopmentLocation(),
 | 
						|
        await TestFolder.currentLocation(),
 | 
						|
      );
 | 
						|
    });
 | 
						|
  });
 | 
						|
}
 |