expectation.dart 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138
  1. import 'package:appflowy/generated/locale_keys.g.dart';
  2. import 'package:appflowy/plugins/document/presentation/banner.dart';
  3. import 'package:appflowy/plugins/document/presentation/editor_plugins/header/document_header_node_widget.dart';
  4. import 'package:appflowy/plugins/document/presentation/editor_plugins/header/emoji_icon_widget.dart';
  5. import 'package:appflowy/workspace/presentation/home/home_stack.dart';
  6. import 'package:appflowy/workspace/presentation/home/menu/app/section/item.dart';
  7. import 'package:easy_localization/easy_localization.dart';
  8. import 'package:flowy_infra_ui/flowy_infra_ui.dart';
  9. import 'package:flutter_test/flutter_test.dart';
  10. const String readme = 'Read me';
  11. extension Expectation on WidgetTester {
  12. /// Expect to see the home page and with a default read me page.
  13. void expectToSeeHomePage() {
  14. expect(find.byType(HomeStack), findsOneWidget);
  15. expect(find.textContaining(readme), findsWidgets);
  16. }
  17. /// Expect to see the page name on the home page.
  18. void expectToSeePageName(String name) {
  19. final pageName = findPageName(name);
  20. expect(pageName, findsOneWidget);
  21. }
  22. /// Expect not to see the page name on the home page.
  23. void expectNotToSeePageName(String name) {
  24. final pageName = findPageName(name);
  25. expect(pageName, findsNothing);
  26. }
  27. /// Expect to see the document banner.
  28. void expectToSeeDocumentBanner() {
  29. expect(find.byType(DocumentBanner), findsOneWidget);
  30. }
  31. /// Expect not to see the document banner.
  32. void expectNotToSeeDocumentBanner() {
  33. expect(find.byType(DocumentBanner), findsNothing);
  34. }
  35. /// Expect to the markdown file export success dialog.
  36. void expectToExportSuccess() {
  37. final exportSuccess = find.byWidgetPredicate(
  38. (widget) =>
  39. widget is FlowyText &&
  40. widget.text == LocaleKeys.settings_files_exportFileSuccess.tr(),
  41. );
  42. expect(exportSuccess, findsOneWidget);
  43. }
  44. /// Expect to see the add button and icon button in the cover toolbar
  45. void expectToSeePluginAddCoverAndIconButton() {
  46. final addCover = find.textContaining(
  47. LocaleKeys.document_plugins_cover_addCover.tr(),
  48. );
  49. final addIcon = find.textContaining(
  50. LocaleKeys.document_plugins_cover_addIcon.tr(),
  51. );
  52. expect(addCover, findsOneWidget);
  53. expect(addIcon, findsOneWidget);
  54. }
  55. /// Expect to see the document header toolbar empty
  56. void expectToSeeEmptyDocumentHeaderToolbar() {
  57. final addCover = find.textContaining(
  58. LocaleKeys.document_plugins_cover_addCover.tr(),
  59. );
  60. final addIcon = find.textContaining(
  61. LocaleKeys.document_plugins_cover_addIcon.tr(),
  62. );
  63. expect(addCover, findsNothing);
  64. expect(addIcon, findsNothing);
  65. }
  66. void expectToSeeDocumentIcon(String? emoji) {
  67. if (emoji == null) {
  68. final iconWidget = find.byType(EmojiIconWidget);
  69. expect(iconWidget, findsNothing);
  70. return;
  71. }
  72. final iconWidget = find.byWidgetPredicate(
  73. (widget) => widget is EmojiIconWidget && widget.emoji == emoji,
  74. );
  75. expect(iconWidget, findsOneWidget);
  76. }
  77. void expectToSeeDocumentCover(CoverType type, String details) {
  78. final findCover = find.byWidgetPredicate(
  79. (widget) =>
  80. widget is DocumentCover &&
  81. widget.coverType == type &&
  82. widget.coverDetails == details,
  83. );
  84. expect(findCover, findsOneWidget);
  85. }
  86. void expectToSeeNoDocumentCover() {
  87. final findCover = find.byType(DocumentCover);
  88. expect(findCover, findsNothing);
  89. }
  90. void expectChangeCoverAndDeleteButton() {
  91. final findChangeCover = find.text(
  92. LocaleKeys.document_plugins_cover_changeCover.tr(),
  93. );
  94. final findRemoveIcon = find.byType(DeleteCoverButton);
  95. expect(findChangeCover, findsOneWidget);
  96. expect(findRemoveIcon, findsOneWidget);
  97. }
  98. /// Expect to see the user name on the home page
  99. void expectToSeeUserName(String name) {
  100. final userName = find.byWidgetPredicate(
  101. (widget) => widget is FlowyText && widget.text == name,
  102. );
  103. expect(userName, findsOneWidget);
  104. }
  105. /// Expect to see a text
  106. void expectToSeeText(String text) {
  107. Finder textWidget = find.textContaining(text, findRichText: true);
  108. if (textWidget.evaluate().isEmpty) {
  109. textWidget = find.byWidgetPredicate(
  110. (widget) => widget is FlowyText && widget.text == text,
  111. );
  112. }
  113. expect(textWidget, findsOneWidget);
  114. }
  115. /// Find the page name on the home page.
  116. Finder findPageName(String name) {
  117. return find.byWidgetPredicate(
  118. (widget) => widget is ViewSectionItem && widget.view.name == name,
  119. skipOffstage: false,
  120. );
  121. }
  122. }