@@ -8,6 +8,7 @@ import 'package:flutter/services.dart';
88import 'package:event_bus/event_bus.dart' ;
99import 'package:logger/logger.dart' ;
1010import 'package:sembast/sembast.dart' ;
11+ import 'package:permission_handler/permission_handler.dart' ;
1112
1213import 'package:borneo_app/features/devices/view_models/device_discovery_view_model.dart' ;
1314import 'package:borneo_app/core/services/devices/device_manager.dart' ;
@@ -227,6 +228,32 @@ void main() {
227228 );
228229 }
229230
231+ test ('blePermissionList returns Android permissions on Android' , () {
232+ vm = makeVm (mobile: true );
233+ final perms = vm.blePermissionList ();
234+ expect (perms, containsAll ([Permission .locationWhenInUse, Permission .bluetoothScan, Permission .bluetoothConnect]));
235+ expect (perms.length, 3 );
236+ });
237+
238+ test ('blePermissionList returns iOS permissions on iOS' , () {
239+ // manual iOS platform service, bypassing makeVm helper
240+ bleProv = FakeBleProvisioner ();
241+ vm = DeviceDiscoveryViewModel (
242+ Logger (),
243+ FakeDeviceManager (),
244+ bleProv,
245+ FakeDeviceModuleRegistry (),
246+ FakePlatformService (isIOS: true ),
247+ globalEventBus: EventBus (),
248+ gt: FakeGettext (),
249+ logger: Logger (),
250+ requestBlePermissions: () async => true ,
251+ );
252+ final perms = vm.blePermissionList ();
253+ expect (perms, containsAll ([Permission .bluetooth, Permission .locationWhenInUse]));
254+ expect (perms.length, 2 );
255+ });
256+
230257 test ('startDiscovery does not call BLE scan when permissions denied' , () async {
231258 vm = makeVm (mobile: true , permissions: () async => false );
232259 expect (bleProv.scanCalled, isFalse);
0 commit comments