sidebar_test.dart 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142
  1. import 'package:appflowy/plugins/database_view/board/presentation/board_page.dart';
  2. import 'package:appflowy/plugins/database_view/calendar/presentation/calendar_page.dart';
  3. import 'package:appflowy/plugins/database_view/grid/presentation/grid_page.dart';
  4. import 'package:appflowy/workspace/presentation/home/menu/view/draggable_view_item.dart';
  5. import 'package:appflowy/workspace/presentation/home/menu/view/view_item.dart';
  6. import 'package:appflowy_backend/protobuf/flowy-folder2/view.pb.dart';
  7. import 'package:appflowy_editor/appflowy_editor.dart';
  8. import 'package:flutter/material.dart';
  9. import 'package:flutter_test/flutter_test.dart';
  10. import 'package:integration_test/integration_test.dart';
  11. import '../util/util.dart';
  12. void main() {
  13. IntegrationTestWidgetsFlutterBinding.ensureInitialized();
  14. group('sidebar test', () {
  15. testWidgets('create a new page', (tester) async {
  16. await tester.initializeAppFlowy();
  17. await tester.tapGoButton();
  18. // create a new page
  19. const name = 'Hello AppFlowy';
  20. await tester.tapNewPageButton();
  21. await tester.enterText(find.byType(TextFormField), name);
  22. await tester.tapOKButton();
  23. // expect to see a new document
  24. tester.expectToSeePageName(
  25. name,
  26. );
  27. // and with one paragraph block
  28. expect(find.byType(TextBlockComponentWidget), findsOneWidget);
  29. });
  30. testWidgets('create a new document, grid, board and calendar',
  31. (tester) async {
  32. await tester.initializeAppFlowy();
  33. await tester.tapGoButton();
  34. for (final layout in ViewLayoutPB.values) {
  35. // create a new page
  36. final name = 'AppFlowy_$layout';
  37. await tester.createNewPageWithName(
  38. name: name,
  39. layout: layout,
  40. );
  41. // expect to see a new page
  42. tester.expectToSeePageName(
  43. name,
  44. layout: layout,
  45. );
  46. switch (layout) {
  47. case ViewLayoutPB.Document:
  48. // and with one paragraph block
  49. expect(find.byType(TextBlockComponentWidget), findsOneWidget);
  50. break;
  51. case ViewLayoutPB.Grid:
  52. expect(find.byType(GridPage), findsOneWidget);
  53. break;
  54. case ViewLayoutPB.Board:
  55. expect(find.byType(BoardPage), findsOneWidget);
  56. break;
  57. case ViewLayoutPB.Calendar:
  58. expect(find.byType(CalendarPage), findsOneWidget);
  59. break;
  60. }
  61. await tester.openPage(gettingStated);
  62. }
  63. });
  64. testWidgets('create some nested pages, and move them', (tester) async {
  65. await tester.initializeAppFlowy();
  66. await tester.tapGoButton();
  67. final names = [1, 2, 3, 4].map((e) => 'document_$e').toList();
  68. for (var i = 0; i < names.length; i++) {
  69. final parentName = i == 0 ? gettingStated : names[i - 1];
  70. await tester.createNewPageWithName(
  71. name: names[i],
  72. parentName: parentName,
  73. layout: ViewLayoutPB.Document,
  74. );
  75. tester.expectToSeePageName(names[i], parentName: parentName);
  76. }
  77. // move the document_3 to the getting started page
  78. await tester.movePageToOtherPage(
  79. name: names[3],
  80. parentName: gettingStated,
  81. layout: ViewLayoutPB.Document,
  82. parentLayout: ViewLayoutPB.Document,
  83. );
  84. final fromId = tester
  85. .widget<SingleInnerViewItem>(tester.findPageName(names[3]))
  86. .view
  87. .parentViewId;
  88. final toId = tester
  89. .widget<SingleInnerViewItem>(tester.findPageName(gettingStated))
  90. .view
  91. .id;
  92. expect(fromId, toId);
  93. // move the document_2 before document_1
  94. await tester.movePageToOtherPage(
  95. name: names[2],
  96. parentName: gettingStated,
  97. layout: ViewLayoutPB.Document,
  98. parentLayout: ViewLayoutPB.Document,
  99. position: DraggableHoverPosition.bottom,
  100. );
  101. final childViews = tester
  102. .widget<SingleInnerViewItem>(tester.findPageName(gettingStated))
  103. .view
  104. .childViews;
  105. expect(
  106. childViews[0].id,
  107. tester
  108. .widget<SingleInnerViewItem>(tester.findPageName(names[2]))
  109. .view
  110. .id,
  111. );
  112. expect(
  113. childViews[1].id,
  114. tester
  115. .widget<SingleInnerViewItem>(tester.findPageName(names[0]))
  116. .view
  117. .id,
  118. );
  119. expect(
  120. childViews[2].id,
  121. tester
  122. .widget<SingleInnerViewItem>(tester.findPageName(names[3]))
  123. .view
  124. .id,
  125. );
  126. });
  127. });
  128. }