main
1import 'dart:ui';
2
3import 'package:blood_pressure_app/features/bluetooth/backend/bluetooth_backend.dart';
4import 'package:blood_pressure_app/features/bluetooth/backend/mock/mock_device.dart';
5import 'package:blood_pressure_app/features/bluetooth/backend/mock/mock_manager.dart';
6import 'package:blood_pressure_app/features/bluetooth/ui/device_selection.dart';
7import 'package:blood_pressure_app/l10n/app_localizations.dart';
8import 'package:flutter_test/flutter_test.dart';
9
10import '../../../util.dart';
11
12void main() {
13 testWidgets('Connects with one element', (WidgetTester tester) async {
14 final dev = MockBluetoothDevice(MockBluetoothManager(), 'Test device with long name (No.124356)');
15
16 final List<BluetoothDevice> accepted = [];
17 await tester.pumpWidget(materialApp(DeviceSelection(
18 scanResults: [ dev ],
19 onAccepted: accepted.add,
20 )));
21
22 expect(find.text('Test device with long name (No.124356)'), findsOneWidget);
23 final localizations = await AppLocalizations.delegate.load(const Locale('en'));
24 expect(find.text(localizations.connect), findsOneWidget);
25
26 expect(accepted, isEmpty);
27 await tester.tap(find.text(localizations.connect));
28 expect(accepted.length, 1);
29 expect(accepted, contains(dev));
30
31
32 await tester.tap(find.text('Test device with long name (No.124356)'));
33 expect(accepted.length, 2);
34 expect(accepted, containsAllInOrder([dev, dev]));
35 });
36
37 testWidgets('Shows multiple elements', (WidgetTester tester) async {
38 BluetoothDevice getDev(String name) => MockBluetoothDevice(MockBluetoothManager(), name);
39
40 await tester.pumpWidget(materialApp(DeviceSelection(
41 scanResults: [
42 getDev('dev1'),
43 getDev('dev2'),
44 getDev('dev3'),
45 ],
46 onAccepted: (dev) => fail('No entry tapped'),
47 )));
48
49 expect(find.text('dev1'), findsOneWidget);
50 expect(find.text('dev2'), findsOneWidget);
51 expect(find.text('dev3'), findsOneWidget);
52 final localizations = await AppLocalizations.delegate.load(const Locale('en'));
53 expect(find.text(localizations.connect), findsNWidgets(3));
54 });
55 // Inside ListView
56}