about_test.dart 3.27 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11
// Copyright 2016 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

import 'dart:async';

import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart';
import 'package:flutter_test/flutter_test.dart';

void main() {
12
  testWidgets('AboutListTile control test', (WidgetTester tester) async {
13 14 15 16 17
    await tester.pumpWidget(
      new MaterialApp(
        title: 'Pirate app',
        home: new Scaffold(
          appBar: new AppBar(
18
            title: const Text('Home'),
19 20
          ),
          drawer: new Drawer(
21
            child: new ListView(
22
              children: <Widget>[
23
                new AboutListTile(
24
                  applicationVersion: '0.1.2',
25
                  applicationIcon: const FlutterLogo(),
26 27
                  applicationLegalese: 'I am the very model of a modern major general.',
                  aboutBoxChildren: <Widget>[
28
                    const Text('About box'),
29 30 31 32 33 34 35 36 37 38 39 40 41 42
                  ]
                ),
              ],
            ),
          ),
        ),
      ),
    );

    expect(find.text('About Pirate app'), findsNothing);
    expect(find.text('0.1.2'), findsNothing);
    expect(find.text('About box'), findsNothing);

    await tester.tap(find.byType(IconButton));
43
    await tester.pumpAndSettle(const Duration(milliseconds: 100));
44 45 46 47 48 49

    expect(find.text('About Pirate app'), findsOneWidget);
    expect(find.text('0.1.2'), findsNothing);
    expect(find.text('About box'), findsNothing);

    await tester.tap(find.text('About Pirate app'));
50
    await tester.pumpAndSettle(const Duration(milliseconds: 100));
51 52 53 54 55 56 57 58 59 60 61 62

    expect(find.text('About Pirate app'), findsOneWidget);
    expect(find.text('0.1.2'), findsOneWidget);
    expect(find.text('About box'), findsOneWidget);

    LicenseRegistry.addLicense(() {
      return new Stream<LicenseEntry>.fromIterable(<LicenseEntry>[
        new LicenseEntryWithLineBreaks(<String>[ 'Pirate package '], 'Pirate license')
      ]);
    });

    await tester.tap(find.text('VIEW LICENSES'));
63
    await tester.pumpAndSettle(const Duration(milliseconds: 100));
64 65 66 67

    expect(find.text('Pirate license'), findsOneWidget);
  });

68 69
  testWidgets('About box logic defaults to executable name for app name', (WidgetTester tester) async {
    await tester.pumpWidget(
70
      new Material(child: new AboutListTile()),
71
    );
72
    expect(find.text('About flutter_tester'), findsOneWidget);
73 74
  });

75
  testWidgets('AboutListTile control test', (WidgetTester tester) async {
76
    final List<String> log = <String>[];
77 78 79 80 81 82 83 84 85 86 87 88 89 90 91

    Future<Null> licenseFuture;
    LicenseRegistry.addLicense(() {
      log.add('license1');
      licenseFuture = tester.pumpWidget(new Container());
      return new Stream<LicenseEntry>.fromIterable(<LicenseEntry>[]);
    });

    LicenseRegistry.addLicense(() {
      log.add('license2');
      return new Stream<LicenseEntry>.fromIterable(<LicenseEntry>[
        new LicenseEntryWithLineBreaks(<String>[ 'Another package '], 'Another license')
      ]);
    });

92
    await tester.pumpWidget(const Center(
93
      child: const LicensePage()
94 95 96 97 98 99 100 101 102 103 104
    ));

    expect(licenseFuture, isNotNull);
    await licenseFuture;

    // We should not hit an exception here.
    await tester.idle();

    expect(log, equals(<String>['license1', 'license2']));
  });
}