forked from flutter/packages
-
Notifications
You must be signed in to change notification settings - Fork 2
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Adds tests to the last two Snack Bar examples as part of #130459. Makes the [last example](https://api.flutter.dev/flutter/material/SnackBar-class.html#material.SnackBar.3) more usable through the use of standard widgets and visual hierarchy. Constraints on options that are not required by the SnackBar contract have been removed (Overflow threshold works on fixed SnackBars).
- Loading branch information
Showing
5 changed files
with
280 additions
and
77 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
60 changes: 60 additions & 0 deletions
60
examples/api/test/material/snack_bar/snack_bar.1_test.dart
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,60 @@ | ||
// Copyright 2014 The Flutter 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_api_samples/material/snack_bar/snack_bar.1.dart' as example; | ||
import 'package:flutter_test/flutter_test.dart'; | ||
|
||
void main() { | ||
testWidgets('Tapping on button shows snackbar', (WidgetTester tester) async { | ||
await tester.pumpWidget( | ||
const example.SnackBarExampleApp(), | ||
); | ||
|
||
expect(find.byType(SnackBar), findsNothing); | ||
expect(find.widgetWithText(AppBar, 'SnackBar Sample'), findsOneWidget); | ||
|
||
await tester.tap(find.widgetWithText(ElevatedButton, 'Show Snackbar')); | ||
await tester.pump(); | ||
|
||
expect(find.text('Awesome SnackBar!'), findsOneWidget); | ||
expect(find.widgetWithText(SnackBarAction, 'Action'), findsOneWidget); | ||
|
||
final SnackBar bar = tester.widget<SnackBar>(find.ancestor( | ||
of: find.text('Awesome SnackBar!'), | ||
matching: find.byType(SnackBar))); | ||
expect(bar.behavior, SnackBarBehavior.floating); | ||
}); | ||
|
||
testWidgets('Snackbar is styled correctly', (WidgetTester tester) async { | ||
await tester.pumpWidget( | ||
const example.SnackBarExampleApp(), | ||
); | ||
await tester.tap(find.byType(ElevatedButton)); | ||
await tester.pump(); | ||
|
||
expect(find.byType(SnackBar), findsOneWidget); | ||
|
||
final SnackBar bar = tester.widget<SnackBar>(find.byType(SnackBar)); | ||
expect(bar.behavior, SnackBarBehavior.floating); | ||
expect(bar.width, 280.0); | ||
expect(bar.shape, isA<RoundedRectangleBorder>() | ||
.having((RoundedRectangleBorder b) => b.borderRadius, 'radius', BorderRadius.circular(10.0))); | ||
}); | ||
|
||
testWidgets('Snackbar should disappear after timeout', (WidgetTester tester) async { | ||
await tester.pumpWidget( | ||
const example.SnackBarExampleApp(), | ||
); | ||
expect(find.byType(SnackBar), findsNothing); | ||
|
||
await tester.tap(find.byType(ElevatedButton)); | ||
await tester.pumpAndSettle(); | ||
expect(find.byType(SnackBar), findsOneWidget); | ||
|
||
await tester.pump(const Duration(milliseconds: 1500)); | ||
await tester.pumpAndSettle(); | ||
expect(find.byType(SnackBar), findsNothing); | ||
}); | ||
} |
Oops, something went wrong.