summaryrefslogtreecommitdiff
path: root/test/scanning_widget_test.dart
blob: 552b8c5a58aac1c152ae060b99abab6372d7cbd8 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
// This is a basic Flutter widget test.
//
// To perform an interaction with a widget in your test, use the WidgetTester
// utility in the flutter_test package. For example, you can send tap and scroll
// gestures. You can also use WidgetTester to find child widgets in the widget
// tree, read text, and verify that the values of widget properties are correct.

import 'package:uvok_epaper_badge/control/mock_scanner_controller.dart';
import 'package:uvok_epaper_badge/control/scanner_controller.dart';
import 'package:uvok_epaper_badge/widgets/badge_app.dart';
import 'package:flutter_test/flutter_test.dart';

void main() {
  testWidgets('Ensure button scans', (WidgetTester tester) async {
    // Build our app and trigger a frame.
    MockScannerController msc = MockScannerController();

    final events = <ScanStatus>[];
    final sub = msc.statusStream.listen(events.add);

    await tester.pumpWidget(BadgeApp(selectedScanner: msc));
    await tester.pumpAndSettle();
    final scanButton = find.textContaining("scan");
    expect(scanButton, findsOneWidget);

    await tester.tap(scanButton);
    await tester.pump(Duration(seconds: 5));
    expect(events[0], ScanStatus.idle);
    expect(events[1], ScanStatus.scanning);
    expect(events[2], ScanStatus.finished);

    await msc.stopScan();
    msc.dispose();

    // sub.cancel();
    // debugPrint("The test is nearly finished");
    // await tester.pump(Duration(seconds: 2));
    // debugPrint("The test is finished");
  });
}