drawer_test.dart 1.65 KB
Newer Older
1 2 3 4 5 6 7 8 9
// 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 'package:flutter/material.dart';
import 'package:flutter_test/flutter_test.dart';

void main() {
  testWidgets('Drawer control test', (WidgetTester tester) async {
10 11
    final Key containerKey = new Key('container');

12 13 14 15 16 17
    await tester.pumpWidget(
      new Scaffold(
        drawer: new Drawer(
          child: new Block(
            children: <Widget>[
              new DrawerHeader(
18 19 20 21
                child: new Container(
                  key: containerKey,
                  child: new Text('header')
                )
22 23 24 25 26 27 28 29 30 31 32 33 34 35
              ),
              new DrawerItem(
                icon: new Icon(Icons.archive),
                child: new Text('Archive')
              )
            ]
          )
        )
      )
    );

    expect(find.text('Archive'), findsNothing);
    ScaffoldState state = tester.firstState(find.byType(Scaffold));
    state.openDrawer();
36

37 38 39
    await tester.pump();
    await tester.pump(const Duration(seconds: 1));
    expect(find.text('Archive'), findsOneWidget);
40 41 42 43 44 45 46 47 48 49 50 51

    RenderBox box = tester.renderObject(find.byType(DrawerHeader));
    expect(box.size.height, equals(160.0 + 8.0 + 1.0)); // height + bottom margin + bottom edge

    final double drawerWidth = box.size.width;
    final double drawerHeight = box.size.height;

    box = tester.renderObject(find.byKey(containerKey));
    expect(box.size.width, equals(drawerWidth - 2 * 16.0));
    expect(box.size.height, equals(drawerHeight - 2 * 16.0 - 1.0)); // bottom edge

    expect(find.text('header'), findsOneWidget);
52 53
  });
}