document_with_database_test.dart 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  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/plugins/document/presentation/editor_plugins/base/link_to_page_widget.dart';
  5. import 'package:appflowy_backend/protobuf/flowy-folder2/protobuf.dart';
  6. import 'package:appflowy_editor/appflowy_editor.dart';
  7. import 'package:flowy_infra/uuid.dart';
  8. import 'package:flutter_test/flutter_test.dart';
  9. import 'package:integration_test/integration_test.dart';
  10. import '../util/util.dart';
  11. void main() {
  12. IntegrationTestWidgetsFlutterBinding.ensureInitialized();
  13. group('database view in document', () {
  14. testWidgets('insert a referenced grid', (tester) async {
  15. await tester.initializeAppFlowy();
  16. await tester.tapGoButton();
  17. await insertReferenceDatabase(tester, ViewLayoutPB.Grid);
  18. // validate the referenced grid is inserted
  19. expect(
  20. find.descendant(
  21. of: find.byType(AppFlowyEditor),
  22. matching: find.byType(GridPage),
  23. ),
  24. findsOneWidget,
  25. );
  26. });
  27. testWidgets('insert a referenced board', (tester) async {
  28. await tester.initializeAppFlowy();
  29. await tester.tapGoButton();
  30. await insertReferenceDatabase(tester, ViewLayoutPB.Board);
  31. // validate the referenced board is inserted
  32. expect(
  33. find.descendant(
  34. of: find.byType(AppFlowyEditor),
  35. matching: find.byType(BoardPage),
  36. ),
  37. findsOneWidget,
  38. );
  39. });
  40. testWidgets('insert a referenced calendar', (tester) async {
  41. await tester.initializeAppFlowy();
  42. await tester.tapGoButton();
  43. await insertReferenceDatabase(tester, ViewLayoutPB.Calendar);
  44. // validate the referenced grid is inserted
  45. expect(
  46. find.descendant(
  47. of: find.byType(AppFlowyEditor),
  48. matching: find.byType(CalendarPage),
  49. ),
  50. findsOneWidget,
  51. );
  52. });
  53. });
  54. }
  55. /// Insert a referenced database of [layout] into the document
  56. Future<void> insertReferenceDatabase(
  57. WidgetTester tester,
  58. ViewLayoutPB layout,
  59. ) async {
  60. // create a new grid
  61. final id = uuid();
  62. final name = '${layout.name}_$id';
  63. await tester.createNewPageWithName(
  64. layout,
  65. name,
  66. );
  67. // create a new document
  68. await tester.createNewPageWithName(
  69. ViewLayoutPB.Document,
  70. 'insert_a_reference_${layout.name}',
  71. );
  72. // tap the first line of the document
  73. await tester.editor.tapLineOfEditorAt(0);
  74. // insert a referenced view
  75. await tester.editor.showSlashMenu();
  76. await tester.editor.tapSlashMenuItemWithName(
  77. layout.referencedMenuName,
  78. );
  79. final linkToPageMenu = find.byType(LinkToPageMenu);
  80. expect(linkToPageMenu, findsOneWidget);
  81. final referencedDatabase = find.descendant(
  82. of: linkToPageMenu,
  83. matching: find.findTextInFlowyText(name),
  84. );
  85. expect(referencedDatabase, findsOneWidget);
  86. await tester.tapButton(referencedDatabase);
  87. }