123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207 |
- import 'package:appflowy/generated/locale_keys.g.dart';
- import 'package:appflowy/plugins/database_view/board/presentation/board_page.dart';
- import 'package:appflowy/plugins/database_view/calendar/presentation/calendar_page.dart';
- import 'package:appflowy/plugins/database_view/grid/presentation/grid_page.dart';
- import 'package:appflowy/workspace/presentation/home/menu/view/draggable_view_item.dart';
- import 'package:appflowy/workspace/presentation/home/menu/view/view_add_button.dart';
- import 'package:appflowy/workspace/presentation/home/menu/view/view_item.dart';
- import 'package:appflowy/workspace/presentation/home/menu/view/view_more_action_button.dart';
- import 'package:appflowy_backend/protobuf/flowy-folder2/view.pb.dart';
- import 'package:appflowy_editor/appflowy_editor.dart';
- import 'package:easy_localization/easy_localization.dart';
- import 'package:flutter_test/flutter_test.dart';
- import 'package:integration_test/integration_test.dart';
- import '../util/util.dart';
- void main() {
- IntegrationTestWidgetsFlutterBinding.ensureInitialized();
- group('sidebar test', () {
- testWidgets('create a new page', (tester) async {
- await tester.initializeAppFlowy();
- await tester.tapGoButton();
- // create a new page
- await tester.tapNewPageButton();
- // expect to see a new document
- tester.expectToSeePageName(
- LocaleKeys.menuAppHeader_defaultNewPageName.tr(),
- );
- // and with one paragraph block
- expect(find.byType(ParagraphBlockComponentWidget), findsOneWidget);
- });
- testWidgets('create a new document, grid, board and calendar',
- (tester) async {
- await tester.initializeAppFlowy();
- await tester.tapGoButton();
- for (final layout in ViewLayoutPB.values) {
- // create a new page
- final name = 'AppFlowy_$layout';
- await tester.createNewPageWithName(
- name: name,
- layout: layout,
- );
- // expect to see a new page
- tester.expectToSeePageName(
- name,
- layout: layout,
- );
- switch (layout) {
- case ViewLayoutPB.Document:
- // and with one paragraph block
- expect(find.byType(ParagraphBlockComponentWidget), findsOneWidget);
- break;
- case ViewLayoutPB.Grid:
- expect(find.byType(GridPage), findsOneWidget);
- break;
- case ViewLayoutPB.Board:
- expect(find.byType(BoardPage), findsOneWidget);
- break;
- case ViewLayoutPB.Calendar:
- expect(find.byType(CalendarPage), findsOneWidget);
- break;
- }
- await tester.openPage(gettingStarted);
- }
- });
- testWidgets('create some nested pages, and move them', (tester) async {
- await tester.initializeAppFlowy();
- await tester.tapGoButton();
- final names = [1, 2, 3, 4].map((e) => 'document_$e').toList();
- for (var i = 0; i < names.length; i++) {
- final parentName = i == 0 ? gettingStarted : names[i - 1];
- await tester.createNewPageWithName(
- name: names[i],
- parentName: parentName,
- layout: ViewLayoutPB.Document,
- );
- tester.expectToSeePageName(names[i], parentName: parentName);
- }
- // move the document_3 to the getting started page
- await tester.movePageToOtherPage(
- name: names[3],
- parentName: gettingStarted,
- layout: ViewLayoutPB.Document,
- parentLayout: ViewLayoutPB.Document,
- );
- final fromId = tester
- .widget<SingleInnerViewItem>(tester.findPageName(names[3]))
- .view
- .parentViewId;
- final toId = tester
- .widget<SingleInnerViewItem>(tester.findPageName(gettingStarted))
- .view
- .id;
- expect(fromId, toId);
- // move the document_2 before document_1
- await tester.movePageToOtherPage(
- name: names[2],
- parentName: gettingStarted,
- layout: ViewLayoutPB.Document,
- parentLayout: ViewLayoutPB.Document,
- position: DraggableHoverPosition.bottom,
- );
- final childViews = tester
- .widget<SingleInnerViewItem>(tester.findPageName(gettingStarted))
- .view
- .childViews;
- expect(
- childViews[0].id,
- tester
- .widget<SingleInnerViewItem>(tester.findPageName(names[2]))
- .view
- .id,
- );
- expect(
- childViews[1].id,
- tester
- .widget<SingleInnerViewItem>(tester.findPageName(names[0]))
- .view
- .id,
- );
- expect(
- childViews[2].id,
- tester
- .widget<SingleInnerViewItem>(tester.findPageName(names[3]))
- .view
- .id,
- );
- });
- testWidgets('unable to move a document into a database', (tester) async {
- await tester.initializeAppFlowy();
- await tester.tapGoButton();
- const document = 'document';
- await tester.createNewPageWithName(
- name: document,
- openAfterCreated: false,
- );
- tester.expectToSeePageName(document, layout: ViewLayoutPB.Document);
- const grid = 'grid';
- await tester.createNewPageWithName(
- name: grid,
- layout: ViewLayoutPB.Grid,
- openAfterCreated: false,
- );
- tester.expectToSeePageName(grid, layout: ViewLayoutPB.Grid);
- // move the document to the grid page
- await tester.movePageToOtherPage(
- name: document,
- parentName: grid,
- layout: ViewLayoutPB.Document,
- parentLayout: ViewLayoutPB.Grid,
- );
- // it should not be moved
- final childViews = tester
- .widget<SingleInnerViewItem>(tester.findPageName(gettingStarted))
- .view
- .childViews;
- expect(
- childViews[0].name,
- document,
- );
- expect(
- childViews[1].name,
- grid,
- );
- });
- testWidgets('unable to create a new database inside the existing one',
- (tester) async {
- await tester.initializeAppFlowy();
- await tester.tapGoButton();
- const grid = 'grid';
- await tester.createNewPageWithName(
- name: grid,
- layout: ViewLayoutPB.Grid,
- openAfterCreated: true,
- );
- tester.expectToSeePageName(grid, layout: ViewLayoutPB.Grid);
- await tester.hoverOnPageName(
- grid,
- layout: ViewLayoutPB.Grid,
- onHover: () async {
- expect(find.byType(ViewAddButton), findsNothing);
- expect(find.byType(ViewMoreActionButton), findsOneWidget);
- },
- );
- });
- });
- }
|