system_controller_test.dart 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. import 'package:cardash_launcher/data/models/app_entry.dart';
  2. import 'package:cardash_launcher/data/models/system_status.dart';
  3. import 'package:cardash_launcher/data/services/native_bridge.dart';
  4. import 'package:cardash_launcher/features/home/system_controller.dart';
  5. import 'package:flutter_test/flutter_test.dart';
  6. class _MediaPlatform implements LauncherPlatform {
  7. bool playing = false;
  8. final List<String> keys = [];
  9. @override
  10. Future<List<AppEntry>> listApps() async => const [];
  11. @override
  12. Future<void> launchApp({
  13. required String packageName,
  14. required String activityName,
  15. }) async {}
  16. @override
  17. Future<bool> isDefaultHome() async => true;
  18. @override
  19. Future<bool> requestDefaultHome() async => true;
  20. @override
  21. Future<SystemStatus> getStatus() async => const SystemStatus();
  22. @override
  23. Future<VolumeInfo> getVolume() async => const VolumeInfo(index: 8, max: 15);
  24. @override
  25. Future<void> setVolume(int index) async {}
  26. @override
  27. Future<bool> isMusicPlaying() async => playing;
  28. @override
  29. Future<bool> sendMediaKey(String action) async {
  30. keys.add(action);
  31. if (action == 'play') playing = true;
  32. if (action == 'pause') playing = false;
  33. return true;
  34. }
  35. }
  36. void main() {
  37. test('pause sends the pause key and clears playing state', () async {
  38. final platform = _MediaPlatform()..playing = true;
  39. final controller = SystemController(platform);
  40. await controller.start();
  41. addTearDown(controller.dispose);
  42. expect(controller.isMusicPlaying, isTrue);
  43. await controller.pauseMusic();
  44. expect(platform.keys, contains('pause'));
  45. expect(controller.isMusicPlaying, isFalse);
  46. controller.stop();
  47. });
  48. test('play resumes and reports whether audio started', () async {
  49. final platform = _MediaPlatform();
  50. final controller = SystemController(platform);
  51. await controller.start();
  52. addTearDown(controller.dispose);
  53. expect(controller.isMusicPlaying, isFalse);
  54. expect(await controller.playMusic(), isTrue);
  55. expect(platform.keys, contains('play'));
  56. expect(controller.isMusicPlaying, isTrue);
  57. controller.stop();
  58. });
  59. }