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}