main
1import 'dart:async';
2
3import 'package:blood_pressure_app/features/bluetooth/backend/flutter_blue_plus/fbp_manager.dart';
4import 'package:blood_pressure_app/features/bluetooth/backend/flutter_blue_plus/flutter_blue_plus_mockable.dart';
5import 'package:blood_pressure_app/features/bluetooth/logic/bluetooth_cubit.dart';
6import 'package:flutter/widgets.dart';
7import 'package:flutter_blue_plus/flutter_blue_plus.dart' as fbp;
8import 'package:flutter_test/flutter_test.dart';
9import 'package:mockito/annotations.dart';
10import 'package:mockito/mockito.dart';
11
12@GenerateNiceMocks([
13 MockSpec<FlutterBluePlusMockable>(),
14])
15import 'bluetooth_cubit_test.mocks.dart';
16
17void main() {
18 test('should translate adapter stream to state', () async {
19 WidgetsFlutterBinding.ensureInitialized();
20 final flutterBluePlus = MockFlutterBluePlusMockable();
21 when(flutterBluePlus.adapterState).thenAnswer((_) =>
22 Stream.fromIterable([
23 fbp.BluetoothAdapterState.unknown,
24 fbp.BluetoothAdapterState.unavailable,
25 fbp.BluetoothAdapterState.turningOff,
26 fbp.BluetoothAdapterState.off,
27 fbp.BluetoothAdapterState.unauthorized,
28 fbp.BluetoothAdapterState.turningOn,
29 fbp.BluetoothAdapterState.on,
30 ]));
31 final manager = FlutterBluePlusManager(flutterBluePlus);
32 final cubit = BluetoothCubit(manager: manager);
33 expect(cubit.state, isA<BluetoothStateInitial>());
34
35 await expectLater(cubit.stream, emitsInOrder([
36 isA<BluetoothStateInitial>(),
37 isA<BluetoothStateUnfeasible>(),
38 isA<BluetoothStateDisabled>(),
39 isA<BluetoothStateDisabled>(),
40 isA<BluetoothStateUnauthorized>(),
41 isA<BluetoothStateDisabled>(),
42 isA<BluetoothStateReady>(),
43 ]));
44 });
45}