From 1c1516c35e69163f07f89240ceadc771d5799f46 Mon Sep 17 00:00:00 2001 From: derdilla <82763757+NobodyForNothing@users.noreply.github.com> Date: Thu, 23 May 2024 20:48:09 +0200 Subject: [PATCH] Add tests for material banner example (#147733) Part of https://github.com/flutter/flutter/issues/130459. --- .../banner/material_banner.0_test.dart | 27 ++++++++++++++ .../banner/material_banner.1_test.dart | 35 ++++++++++++++++++- 2 files changed, 61 insertions(+), 1 deletion(-) diff --git a/examples/api/test/material/banner/material_banner.0_test.dart b/examples/api/test/material/banner/material_banner.0_test.dart index 7080e7d91f..68b14c6248 100644 --- a/examples/api/test/material/banner/material_banner.0_test.dart +++ b/examples/api/test/material/banner/material_banner.0_test.dart @@ -7,6 +7,21 @@ import 'package:flutter_api_samples/material/banner/material_banner.0.dart' as e import 'package:flutter_test/flutter_test.dart'; void main() { + testWidgets('Shows all elements', (WidgetTester tester) async { + await tester.pumpWidget( + const example.MaterialBannerExampleApp(), + ); + + expect(find.byType(MaterialBanner), findsOneWidget); + expect(find.byType(AppBar), findsOneWidget); + expect(find.byType(TextButton), findsNWidgets(2)); + expect(find.text('Hello, I am a Material Banner'), findsOneWidget); + expect(find.text('The MaterialBanner is below'), findsOneWidget); + expect(find.text('OPEN'), findsOneWidget); + expect(find.text('DISMISS'), findsOneWidget); + expect(find.byIcon(Icons.agriculture_outlined), findsOneWidget); + }); + testWidgets('BottomNavigationBar Updates Screen Content', (WidgetTester tester) async { await tester.pumpWidget( const example.MaterialBannerExampleApp(), @@ -18,4 +33,16 @@ void main() { expect(find.widgetWithText(TextButton, 'OPEN'), findsOne); expect(find.widgetWithText(TextButton, 'DISMISS'), findsOne); }); + + testWidgets('The banner is below the text saying so', (WidgetTester tester) async { + await tester.pumpWidget( + const example.MaterialBannerExampleApp(), + ); + + expect(find.byType(MaterialBanner), findsOneWidget); + expect(find.text('The MaterialBanner is below'), findsOneWidget); + final double bannerY = tester.getCenter(find.byType(MaterialBanner)).dy; + final double textY = tester.getCenter(find.text('The MaterialBanner is below')).dy; + expect(bannerY, greaterThan(textY)); + }); } diff --git a/examples/api/test/material/banner/material_banner.1_test.dart b/examples/api/test/material/banner/material_banner.1_test.dart index c3d1e5b5ce..0d65238377 100644 --- a/examples/api/test/material/banner/material_banner.1_test.dart +++ b/examples/api/test/material/banner/material_banner.1_test.dart @@ -3,10 +3,32 @@ // found in the LICENSE file. import 'package:flutter/material.dart'; -import 'package:flutter_api_samples/material/banner/material_banner.1.dart' as example; +import 'package:flutter_api_samples/material/banner/material_banner.1.dart' + as example; import 'package:flutter_test/flutter_test.dart'; void main() { + testWidgets('Shows all elements when needed', (WidgetTester tester) async { + await tester.pumpWidget(const example.MaterialBannerExampleApp()); + await tester.pumpAndSettle(); + expect(find.text('The MaterialBanner is below'), findsOneWidget); + expect(find.text('Show MaterialBanner'), findsOneWidget); + expect(find.byType(MaterialBanner), findsNothing); + expect(find.text('DISMISS'), findsNothing); + expect(find.byIcon(Icons.agriculture_outlined), findsNothing); + + await tester.tap(find.text('Show MaterialBanner')); + await tester.pumpAndSettle(); + expect(find.byType(MaterialBanner), findsOneWidget); + expect(find.text('DISMISS'), findsOneWidget); + expect(find.byIcon(Icons.agriculture_outlined), findsOneWidget); + + final MaterialBanner banner = tester.widget( + find.byType(MaterialBanner), + ); + expect(banner.backgroundColor, Colors.green); + }); + testWidgets('BottomNavigationBar Updates Screen Content', (WidgetTester tester) async { await tester.pumpWidget( const example.MaterialBannerExampleApp(), @@ -20,6 +42,17 @@ void main() { expect(find.text('Hello, I am a Material Banner'), findsOne); expect(find.byIcon(Icons.agriculture_outlined), findsOne); expect(find.widgetWithText(TextButton, 'DISMISS'), findsOne); + }); + testWidgets('The banner is below the text saying so', (WidgetTester tester) async { + await tester.pumpWidget(const example.MaterialBannerExampleApp()); + await tester.tap(find.text('Show MaterialBanner')); + await tester.pumpAndSettle(); + + expect(find.byType(MaterialBanner), findsOneWidget); + expect(find.text('The MaterialBanner is below'), findsOneWidget); + final double bannerY = tester.getCenter(find.byType(MaterialBanner)).dy; + final double textY = tester.getCenter(find.text('The MaterialBanner is below')).dy; + expect(bannerY, greaterThan(textY)); }); }