cover_image_test.dart 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135
  1. import 'package:appflowy/plugins/document/presentation/editor_plugins/header/document_header_node_widget.dart';
  2. import 'package:flutter_test/flutter_test.dart';
  3. import 'package:integration_test/integration_test.dart';
  4. import '../util/emoji.dart';
  5. import '../util/util.dart';
  6. void main() {
  7. IntegrationTestWidgetsFlutterBinding.ensureInitialized();
  8. group('cover image', () {
  9. const location = 'cover_image';
  10. setUp(() async {
  11. await TestFolder.cleanTestLocation(location);
  12. await TestFolder.setTestLocation(location);
  13. });
  14. tearDown(() async {
  15. await TestFolder.cleanTestLocation(location);
  16. });
  17. tearDownAll(() async {
  18. await TestFolder.cleanTestLocation(null);
  19. });
  20. testWidgets('document cover tests', (tester) async {
  21. await tester.initializeAppFlowy();
  22. await tester.tapGoButton();
  23. tester.expectToSeeNoDocumentCover();
  24. // Hover over cover toolbar to show 'Add Cover' and 'Add Icon' buttons
  25. await tester.editor.hoverOnCoverToolbar();
  26. tester.expectToSeePluginAddCoverAndIconButton();
  27. // Insert a document cover
  28. await tester.editor.tapOnAddCover();
  29. tester.expectToSeeDocumentCover(CoverType.asset);
  30. // Hover over the cover to show the 'Change Cover' and delete buttons
  31. await tester.editor.hoverOnCover();
  32. tester.expectChangeCoverAndDeleteButton();
  33. // Change cover to a solid color background
  34. await tester.editor.tapOnChangeCover();
  35. await tester.editor.switchSolidColorBackground();
  36. await tester.editor.dismissCoverPicker();
  37. tester.expectToSeeDocumentCover(CoverType.color);
  38. // Change cover to a network image
  39. const imageUrl =
  40. "https://raw.githubusercontent.com/AppFlowy-IO/AppFlowy/main/frontend/appflowy_flutter/assets/images/appflowy_launch_splash.jpg";
  41. await tester.editor.hoverOnCover();
  42. await tester.editor.tapOnChangeCover();
  43. await tester.editor.addNetworkImageCover(imageUrl);
  44. await tester.editor.switchNetworkImageCover(imageUrl);
  45. await tester.editor.dismissCoverPicker();
  46. tester.expectToSeeDocumentCover(CoverType.file);
  47. // Remove the cover
  48. await tester.editor.hoverOnCover();
  49. await tester.editor.tapOnRemoveCover();
  50. tester.expectToSeeNoDocumentCover();
  51. });
  52. testWidgets('document icon tests', (tester) async {
  53. await tester.initializeAppFlowy();
  54. await tester.tapGoButton();
  55. tester.expectToSeeDocumentIcon(null);
  56. // Hover over cover toolbar to show the 'Add Cover' and 'Add Icon' buttons
  57. await tester.editor.hoverOnCoverToolbar();
  58. tester.expectToSeePluginAddCoverAndIconButton();
  59. // Insert a document icon
  60. await tester.editor.tapAddIconButton();
  61. await tester.switchToEmojiList();
  62. await tester.tapEmoji('😀');
  63. tester.expectToSeeDocumentIcon('😀');
  64. // Remove the document icon from the cover toolbar
  65. await tester.editor.hoverOnCoverToolbar();
  66. await tester.editor.tapRemoveIconButton();
  67. tester.expectToSeeDocumentIcon(null);
  68. // Add the icon back for further testing
  69. await tester.editor.hoverOnCoverToolbar();
  70. await tester.editor.tapAddIconButton();
  71. await tester.switchToEmojiList();
  72. await tester.tapEmoji('😀');
  73. tester.expectToSeeDocumentIcon('😀');
  74. // Change the document icon
  75. await tester.editor.tapOnIconWidget();
  76. await tester.switchToEmojiList();
  77. await tester.tapEmoji('😅');
  78. tester.expectToSeeDocumentIcon('😅');
  79. // Remove the document icon from the icon picker
  80. await tester.editor.tapOnIconWidget();
  81. await tester.editor.tapRemoveIconButton(isInPicker: true);
  82. tester.expectToSeeDocumentIcon(null);
  83. });
  84. testWidgets('icon and cover at the same time', (tester) async {
  85. await tester.initializeAppFlowy();
  86. await tester.tapGoButton();
  87. tester.expectToSeeDocumentIcon(null);
  88. tester.expectToSeeNoDocumentCover();
  89. // Hover over cover toolbar to show the 'Add Cover' and 'Add Icon' buttons
  90. await tester.editor.hoverOnCoverToolbar();
  91. tester.expectToSeePluginAddCoverAndIconButton();
  92. // Insert a document icon
  93. await tester.editor.tapAddIconButton();
  94. await tester.switchToEmojiList();
  95. await tester.tapEmoji('😀');
  96. // Insert a document cover
  97. await tester.editor.tapOnAddCover();
  98. // Expect to see the icon and cover at the same time
  99. tester.expectToSeeDocumentIcon('😀');
  100. tester.expectToSeeDocumentCover(CoverType.asset);
  101. // Hover over the cover toolbar and see that neither icons are shown
  102. await tester.editor.hoverOnCoverToolbar();
  103. tester.expectToSeeEmptyDocumentHeaderToolbar();
  104. });
  105. });
  106. }