Skip to content

Commit

Permalink
Update Drawer tests for M2/M3 (flutter#135752)
Browse files Browse the repository at this point in the history
Updated unit tests for `Drawer` to have M2 and M3 versions.

More info in flutter#127064
  • Loading branch information
TahaTesser authored and Mairramer committed Oct 10, 2023
1 parent 2b33dfd commit e3f9b7c
Showing 1 changed file with 54 additions and 6 deletions.
60 changes: 54 additions & 6 deletions packages/flutter/test/material/drawer_test.dart
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ import 'package:leak_tracker_flutter_testing/leak_tracker_flutter_testing.dart';
import '../widgets/semantics_tester.dart';

void main() {
testWidgetsWithLeakTracking('Drawer control test', (WidgetTester tester) async {
testWidgetsWithLeakTracking('Material2 - Drawer control test', (WidgetTester tester) async {
const Key containerKey = Key('container');

await tester.pumpWidget(
Expand Down Expand Up @@ -58,6 +58,54 @@ void main() {
expect(find.text('header'), findsOneWidget);
});

testWidgetsWithLeakTracking('Material3 - Drawer control test', (WidgetTester tester) async {
const Key containerKey = Key('container');

await tester.pumpWidget(
MaterialApp(
theme: ThemeData(useMaterial3: true),
home: Scaffold(
drawer: Drawer(
child: ListView(
children: <Widget>[
DrawerHeader(
child: Container(
key: containerKey,
child: const Text('header'),
),
),
const ListTile(
leading: Icon(Icons.archive),
title: Text('Archive'),
),
],
),
),
),
),
);

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

await tester.pump();
await tester.pump(const Duration(seconds: 1));
expect(find.text('Archive'), findsOneWidget);

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)); // Header divider thickness is 1.0 in Material 3.

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

testWidgetsWithLeakTracking('Drawer dismiss barrier has label', (WidgetTester tester) async {
final SemanticsTester semantics = SemanticsTester(tester);
await tester.pumpWidget(
Expand Down Expand Up @@ -570,7 +618,7 @@ void main() {
expect(box.size.width, equals(smallWidth));
});

testWidgetsWithLeakTracking('Drawer default shape (ltr)', (WidgetTester tester) async {
testWidgetsWithLeakTracking('Material3 - Drawer default shape (ltr)', (WidgetTester tester) async {
await tester.pumpWidget(
MaterialApp(
theme: ThemeData(useMaterial3: true),
Expand Down Expand Up @@ -630,7 +678,7 @@ void main() {
);
});

testWidgetsWithLeakTracking('Drawer default shape (rtl)', (WidgetTester tester) async {
testWidgetsWithLeakTracking('Material3 - Drawer default shape (rtl)', (WidgetTester tester) async {
await tester.pumpWidget(
MaterialApp(
theme: ThemeData(useMaterial3: true),
Expand Down Expand Up @@ -690,7 +738,7 @@ void main() {
);
});

testWidgetsWithLeakTracking('Drawer clip behavior', (WidgetTester tester) async {
testWidgetsWithLeakTracking('Material3 - Drawer clip behavior', (WidgetTester tester) async {
await tester.pumpWidget(
MaterialApp(
theme: ThemeData(useMaterial3: true),
Expand Down Expand Up @@ -746,7 +794,7 @@ void main() {
// support is deprecated and the APIs are removed, these tests
// can be deleted.

testWidgetsWithLeakTracking('Drawer default shape', (WidgetTester tester) async {
testWidgetsWithLeakTracking('Material2 - Drawer default shape', (WidgetTester tester) async {
await tester.pumpWidget(
MaterialApp(
theme: ThemeData(useMaterial3: false),
Expand Down Expand Up @@ -787,7 +835,7 @@ void main() {
expect(material.shape, null);
});

testWidgetsWithLeakTracking('Drawer clip behavior', (WidgetTester tester) async {
testWidgetsWithLeakTracking('Material2 - Drawer clip behavior', (WidgetTester tester) async {
await tester.pumpWidget(
MaterialApp(
theme: ThemeData(useMaterial3: false),
Expand Down

0 comments on commit e3f9b7c

Please sign in to comment.