import 'package:cardash_launcher/data/models/app_entry.dart'; import 'package:cardash_launcher/data/models/system_status.dart'; import 'package:cardash_launcher/data/services/native_bridge.dart'; import 'package:cardash_launcher/features/home/system_controller.dart'; import 'package:flutter_test/flutter_test.dart'; class _MediaPlatform implements LauncherPlatform { bool playing = false; final List keys = []; @override Future> listApps() async => const []; @override Future launchApp({ required String packageName, required String activityName, }) async {} @override Future isDefaultHome() async => true; @override Future requestDefaultHome() async => true; @override Future getStatus() async => const SystemStatus(); @override Future getVolume() async => const VolumeInfo(index: 8, max: 15); @override Future setVolume(int index) async {} @override Future isMusicPlaying() async => playing; @override Future sendMediaKey(String action) async { keys.add(action); if (action == 'play') playing = true; if (action == 'pause') playing = false; return true; } } void main() { test('pause sends the pause key and clears playing state', () async { final platform = _MediaPlatform()..playing = true; final controller = SystemController(platform); await controller.start(); addTearDown(controller.dispose); expect(controller.isMusicPlaying, isTrue); await controller.pauseMusic(); expect(platform.keys, contains('pause')); expect(controller.isMusicPlaying, isFalse); controller.stop(); }); test('play resumes and reports whether audio started', () async { final platform = _MediaPlatform(); final controller = SystemController(platform); await controller.start(); addTearDown(controller.dispose); expect(controller.isMusicPlaying, isFalse); expect(await controller.playMusic(), isTrue); expect(platform.keys, contains('play')); expect(controller.isMusicPlaying, isTrue); controller.stop(); }); }