settings.dart 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108
  1. import 'package:appflowy/generated/locale_keys.g.dart';
  2. import 'package:appflowy/workspace/application/settings/appearance/appearance_cubit.dart';
  3. import 'package:appflowy/workspace/application/settings/prelude.dart';
  4. import 'package:appflowy/workspace/presentation/settings/settings_dialog.dart';
  5. import 'package:appflowy/workspace/presentation/settings/widgets/settings_menu_element.dart';
  6. import 'package:appflowy/workspace/presentation/settings/widgets/settings_user_view.dart';
  7. import 'package:easy_localization/easy_localization.dart';
  8. import 'package:flutter/material.dart';
  9. import 'package:flutter_test/flutter_test.dart';
  10. import 'base.dart';
  11. extension AppFlowySettings on WidgetTester {
  12. /// Open settings page
  13. Future<void> openSettings() async {
  14. final settingsButton = find.byTooltip(LocaleKeys.settings_menu_open.tr());
  15. expect(settingsButton, findsOneWidget);
  16. await tapButton(settingsButton);
  17. final settingsDialog = find.byType(SettingsDialog);
  18. expect(settingsDialog, findsOneWidget);
  19. return;
  20. }
  21. /// Open the page that insides the settings page
  22. Future<void> openSettingsPage(SettingsPage page) async {
  23. final button = find.byWidgetPredicate(
  24. (widget) => widget is SettingsMenuElement && widget.page == page,
  25. );
  26. expect(button, findsOneWidget);
  27. await tapButton(button);
  28. return;
  29. }
  30. Future<void> expectNoSettingsPage(SettingsPage page) async {
  31. final button = find.byWidgetPredicate(
  32. (widget) => widget is SettingsMenuElement && widget.page == page,
  33. );
  34. expect(button, findsNothing);
  35. return;
  36. }
  37. /// Restore the AppFlowy data storage location
  38. Future<void> restoreLocation() async {
  39. final button =
  40. find.byTooltip(LocaleKeys.settings_files_recoverLocationTooltips.tr());
  41. expect(button, findsOneWidget);
  42. await tapButton(button);
  43. return;
  44. }
  45. Future<void> tapOpenFolderButton() async {
  46. final button = find.text(LocaleKeys.settings_files_open.tr());
  47. expect(button, findsOneWidget);
  48. await tapButton(button);
  49. return;
  50. }
  51. Future<void> tapCustomLocationButton() async {
  52. final button = find.byTooltip(
  53. LocaleKeys.settings_files_changeLocationTooltips.tr(),
  54. );
  55. expect(button, findsOneWidget);
  56. await tapButton(button);
  57. return;
  58. }
  59. /// Enter user name
  60. Future<void> enterUserName(String name) async {
  61. final uni = find.byType(UserNameInput);
  62. expect(uni, findsOneWidget);
  63. await tap(uni);
  64. await enterText(uni, name);
  65. await wait(300); //
  66. await testTextInput.receiveAction(TextInputAction.done);
  67. await pumpAndSettle();
  68. }
  69. // go to settings page and switch the layout direction
  70. Future<void> switchLayoutDirectionMode(
  71. LayoutDirection layoutDirection,
  72. ) async {
  73. await openSettings();
  74. await openSettingsPage(SettingsPage.appearance);
  75. final button = find.byKey(const ValueKey('layout_direction_option_button'));
  76. expect(button, findsOneWidget);
  77. await tapButton(button);
  78. switch (layoutDirection) {
  79. case LayoutDirection.ltrLayout:
  80. final ltrButton = find.text(
  81. LocaleKeys.settings_appearance_layoutDirection_ltr.tr(),
  82. );
  83. await tapButton(ltrButton);
  84. break;
  85. case LayoutDirection.rtlLayout:
  86. final rtlButton = find.text(
  87. LocaleKeys.settings_appearance_layoutDirection_rtl.tr(),
  88. );
  89. await tapButton(rtlButton);
  90. break;
  91. }
  92. // tap anywhere to close the settings page
  93. await tapAt(Offset.zero);
  94. await pumpAndSettle();
  95. }
  96. }