mirror of
				https://github.com/AppFlowy-IO/AppFlowy.git
				synced 2025-10-30 17:38:40 +00:00 
			
		
		
		
	 7f74fd6149
			
		
	
	
		7f74fd6149
		
			
		
	
	
	
	
		
			
			* chore: change initial cover type's name to none * chore: refactor cover node widget * chore: use a constant instead of magic value * fix: make the size of icon hover effect smaller * chore: improve appearance of selected color * test: add cover integration tests * fix: inner ring of selected color in dark mode * refactor: cover node to document header node * test: simplify tests * chore: rename files
		
			
				
	
	
		
			139 lines
		
	
	
		
			4.5 KiB
		
	
	
	
		
			Dart
		
	
	
	
	
	
			
		
		
	
	
			139 lines
		
	
	
		
			4.5 KiB
		
	
	
	
		
			Dart
		
	
	
	
	
	
| import 'package:appflowy/generated/locale_keys.g.dart';
 | |
| import 'package:appflowy/plugins/document/presentation/banner.dart';
 | |
| import 'package:appflowy/plugins/document/presentation/editor_plugins/header/document_header_node_widget.dart';
 | |
| import 'package:appflowy/plugins/document/presentation/editor_plugins/header/emoji_icon_widget.dart';
 | |
| import 'package:appflowy/workspace/presentation/home/home_stack.dart';
 | |
| import 'package:appflowy/workspace/presentation/home/menu/app/section/item.dart';
 | |
| import 'package:easy_localization/easy_localization.dart';
 | |
| import 'package:flowy_infra_ui/flowy_infra_ui.dart';
 | |
| import 'package:flutter_test/flutter_test.dart';
 | |
| 
 | |
| const String readme = 'Read me';
 | |
| 
 | |
| extension Expectation on WidgetTester {
 | |
|   /// Expect to see the home page and with a default read me page.
 | |
|   void expectToSeeHomePage() {
 | |
|     expect(find.byType(HomeStack), findsOneWidget);
 | |
|     expect(find.textContaining(readme), findsWidgets);
 | |
|   }
 | |
| 
 | |
|   /// Expect to see the page name on the home page.
 | |
|   void expectToSeePageName(String name) {
 | |
|     final pageName = findPageName(name);
 | |
|     expect(pageName, findsOneWidget);
 | |
|   }
 | |
| 
 | |
|   /// Expect not to see the page name on the home page.
 | |
|   void expectNotToSeePageName(String name) {
 | |
|     final pageName = findPageName(name);
 | |
|     expect(pageName, findsNothing);
 | |
|   }
 | |
| 
 | |
|   /// Expect to see the document banner.
 | |
|   void expectToSeeDocumentBanner() {
 | |
|     expect(find.byType(DocumentBanner), findsOneWidget);
 | |
|   }
 | |
| 
 | |
|   /// Expect not to see the document banner.
 | |
|   void expectNotToSeeDocumentBanner() {
 | |
|     expect(find.byType(DocumentBanner), findsNothing);
 | |
|   }
 | |
| 
 | |
|   /// Expect to the markdown file export success dialog.
 | |
|   void expectToExportSuccess() {
 | |
|     final exportSuccess = find.byWidgetPredicate(
 | |
|       (widget) =>
 | |
|           widget is FlowyText &&
 | |
|           widget.text == LocaleKeys.settings_files_exportFileSuccess.tr(),
 | |
|     );
 | |
|     expect(exportSuccess, findsOneWidget);
 | |
|   }
 | |
| 
 | |
|   /// Expect to see the add button and icon button in the cover toolbar
 | |
|   void expectToSeePluginAddCoverAndIconButton() {
 | |
|     final addCover = find.textContaining(
 | |
|       LocaleKeys.document_plugins_cover_addCover.tr(),
 | |
|     );
 | |
|     final addIcon = find.textContaining(
 | |
|       LocaleKeys.document_plugins_cover_addIcon.tr(),
 | |
|     );
 | |
|     expect(addCover, findsOneWidget);
 | |
|     expect(addIcon, findsOneWidget);
 | |
|   }
 | |
| 
 | |
|   /// Expect to see the document header toolbar empty
 | |
|   void expectToSeeEmptyDocumentHeaderToolbar() {
 | |
|     final addCover = find.textContaining(
 | |
|       LocaleKeys.document_plugins_cover_addCover.tr(),
 | |
|     );
 | |
|     final addIcon = find.textContaining(
 | |
|       LocaleKeys.document_plugins_cover_addIcon.tr(),
 | |
|     );
 | |
|     expect(addCover, findsNothing);
 | |
|     expect(addIcon, findsNothing);
 | |
|   }
 | |
| 
 | |
|   void expectToSeeDocumentIcon(String? emoji) {
 | |
|     if (emoji == null) {
 | |
|       final iconWidget = find.byType(EmojiIconWidget);
 | |
|       expect(iconWidget, findsNothing);
 | |
|       return;
 | |
|     }
 | |
|     final iconWidget = find.byWidgetPredicate(
 | |
|       (widget) => widget is EmojiIconWidget && widget.emoji == emoji,
 | |
|     );
 | |
|     expect(iconWidget, findsOneWidget);
 | |
|   }
 | |
| 
 | |
|   void expectToSeeDocumentCover(CoverType type, String details) {
 | |
|     final findCover = find.byWidgetPredicate(
 | |
|       (widget) =>
 | |
|           widget is DocumentCover &&
 | |
|           widget.coverType == type &&
 | |
|           widget.coverDetails == details,
 | |
|     );
 | |
|     expect(findCover, findsOneWidget);
 | |
|   }
 | |
| 
 | |
|   void expectToSeeNoDocumentCover() {
 | |
|     final findCover = find.byType(DocumentCover);
 | |
|     expect(findCover, findsNothing);
 | |
|   }
 | |
| 
 | |
|   void expectChangeCoverAndDeleteButton() {
 | |
|     final findChangeCover = find.text(
 | |
|       LocaleKeys.document_plugins_cover_changeCover.tr(),
 | |
|     );
 | |
|     final findRemoveIcon = find.byType(DeleteCoverButton);
 | |
|     expect(findChangeCover, findsOneWidget);
 | |
|     expect(findRemoveIcon, findsOneWidget);
 | |
|   }
 | |
| 
 | |
|   /// Expect to see the user name on the home page
 | |
|   void expectToSeeUserName(String name) {
 | |
|     final userName = find.byWidgetPredicate(
 | |
|       (widget) => widget is FlowyText && widget.text == name,
 | |
|     );
 | |
|     expect(userName, findsOneWidget);
 | |
|   }
 | |
| 
 | |
|   /// Expect to see a text
 | |
|   void expectToSeeText(String text) {
 | |
|     Finder textWidget = find.textContaining(text, findRichText: true);
 | |
|     if (textWidget.evaluate().isEmpty) {
 | |
|       textWidget = find.byWidgetPredicate(
 | |
|         (widget) => widget is FlowyText && widget.text == text,
 | |
|       );
 | |
|     }
 | |
|     expect(textWidget, findsOneWidget);
 | |
|   }
 | |
| 
 | |
|   /// Find the page name on the home page.
 | |
|   Finder findPageName(String name) {
 | |
|     return find.byWidgetPredicate(
 | |
|       (widget) => widget is ViewSectionItem && widget.view.name == name,
 | |
|       skipOffstage: false,
 | |
|     );
 | |
|   }
 | |
| }
 |