display_controller_test.dart 2.3 KB

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