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}