display_controller_test.dart 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  1. import 'package:cardash_launcher/core/display_controller.dart';
  2. import 'package:cardash_launcher/data/models/app_entry.dart';
  3. import 'package:cardash_launcher/data/models/media_playback.dart';
  4. import 'package:cardash_launcher/data/models/update_info.dart';
  5. import 'package:cardash_launcher/data/models/system_status.dart';
  6. import 'package:cardash_launcher/data/repositories/settings_repository.dart';
  7. import 'package:cardash_launcher/data/services/native_bridge.dart';
  8. import 'package:flutter_test/flutter_test.dart';
  9. import 'package:shared_preferences/shared_preferences.dart';
  10. class _DisplayPlatform implements LauncherPlatform {
  11. final List<bool> calls = [];
  12. @override
  13. Future<List<AppEntry>> listApps() async => const [];
  14. @override
  15. Future<void> launchApp({
  16. required String packageName,
  17. required String activityName,
  18. }) async {}
  19. @override
  20. Future<bool> isDefaultHome() async => true;
  21. @override
  22. Future<bool> requestDefaultHome() async => true;
  23. @override
  24. Future<SystemStatus> getStatus() async => const SystemStatus();
  25. @override
  26. Future<VolumeInfo> getVolume() async => const VolumeInfo();
  27. @override
  28. Future<void> setVolume(int index) async {}
  29. @override
  30. Future<bool> isMusicPlaying() async => false;
  31. @override
  32. Future<bool> sendMediaKey(String action) async => true;
  33. @override
  34. Future<MediaPlayback> getMediaState() async => const MediaPlayback();
  35. @override
  36. Future<bool> openNotificationAccessSettings() async => true;
  37. @override
  38. Future<void> setKeepScreenOn(bool enabled) async {
  39. calls.add(enabled);
  40. }
  41. @override
  42. Future<bool> openUrl(String url) async => true;
  43. @override
  44. Future<UpdateInstallResult> downloadAndInstallUpdate(String url) async {
  45. return const UpdateInstallResult(
  46. started: false,
  47. permissionRequired: false,
  48. message: 'not started',
  49. );
  50. }
  51. }
  52. void main() {
  53. test('keeps the screen on by default and persists a change', () async {
  54. SharedPreferences.setMockInitialValues({});
  55. final prefs = await SharedPreferences.getInstance();
  56. final settings = SettingsRepository(prefs);
  57. final platform = _DisplayPlatform();
  58. final controller = DisplayController(platform, settings);
  59. addTearDown(controller.dispose);
  60. expect(controller.keepScreenOn, isTrue);
  61. await controller.initialize();
  62. expect(platform.calls.last, isTrue);
  63. await controller.setKeepScreenOn(false);
  64. expect(controller.keepScreenOn, isFalse);
  65. expect(platform.calls.last, isFalse);
  66. expect(SettingsRepository(prefs).keepScreenOn, isFalse);
  67. expect(
  68. DisplayController(platform, SettingsRepository(prefs)).keepScreenOn,
  69. isFalse,
  70. );
  71. });
  72. }