diff --git a/dev/bots/check_code_samples.dart b/dev/bots/check_code_samples.dart index bd3e88919a..37fae596bc 100644 --- a/dev/bots/check_code_samples.dart +++ b/dev/bots/check_code_samples.dart @@ -463,7 +463,6 @@ final Set _knownMissingTests = { 'examples/api/test/widgets/actions/focusable_action_detector.0_test.dart', 'examples/api/test/widgets/color_filter/color_filtered.0_test.dart', 'examples/api/test/widgets/focus_scope/focus.2_test.dart', - 'examples/api/test/widgets/focus_scope/focus.0_test.dart', 'examples/api/test/widgets/focus_scope/focus.1_test.dart', 'examples/api/test/widgets/focus_scope/focus_scope.0_test.dart', 'examples/api/test/widgets/scroll_view/custom_scroll_view.1_test.dart', diff --git a/examples/api/test/widgets/focus_scope/focus.0_test.dart b/examples/api/test/widgets/focus_scope/focus.0_test.dart new file mode 100644 index 0000000000..a42c3665e4 --- /dev/null +++ b/examples/api/test/widgets/focus_scope/focus.0_test.dart @@ -0,0 +1,80 @@ +// 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/services.dart'; +import 'package:flutter_api_samples/widgets/focus_scope/focus.0.dart' + as example; +import 'package:flutter_test/flutter_test.dart'; + +void main() { + testWidgets('shows initial content', (WidgetTester tester) async { + await tester.pumpWidget(const example.FocusExampleApp()); + expect(find.byType(Scaffold), findsOneWidget); + expect(find.byType(AppBar), findsOneWidget); + expect(find.byType(FocusScope), findsAtLeastNWidgets(1)); + expect(find.text('Press to focus'), findsOneWidget); + expect(find.text('Focus Sample'), findsOneWidget); + expect(find.byType(Container), findsOneWidget); + + final Container container = + tester.widget(find.byType(Container)); + expect(container.color, Colors.white); + }); + + testWidgets('switches to focus mode', (WidgetTester tester) async { + await tester.pumpWidget(const example.FocusExampleApp()); + expect(find.text('Press to focus'), findsOneWidget); + expect(find.text("I'm in color! Press R,G,B!"), findsNothing); + await tester.tap(find.text('Press to focus')); + await tester.pumpAndSettle(); + expect(find.text('Press to focus'), findsNothing); + expect(find.text("I'm in color! Press R,G,B!"), findsOneWidget); + + expect(find.byType(Container), findsOneWidget); + final Container container = + tester.widget(find.byType(Container)); + expect(container.color, Colors.white); + + await tester.tap(find.text("I'm in color! Press R,G,B!")); + await tester.pumpAndSettle(); + expect(find.text('Press to focus'), findsOneWidget); + expect(find.text("I'm in color! Press R,G,B!"), findsNothing); + }); + + testWidgets('changes color according to key presses', (WidgetTester tester) async { + await tester.pumpWidget(const example.FocusExampleApp()); + expect(find.byType(Container), findsOneWidget); + expect(tester.widget(find.byType(Container)).color, Colors.white); + await tester.sendKeyEvent(LogicalKeyboardKey.keyR); + await tester.pumpAndSettle(); + expect(tester.widget(find.byType(Container)).color, Colors.white); + await tester.sendKeyEvent(LogicalKeyboardKey.keyG); + await tester.pumpAndSettle(); + expect(tester.widget(find.byType(Container)).color, Colors.white); + await tester.sendKeyEvent(LogicalKeyboardKey.keyB); + await tester.pumpAndSettle(); + expect(tester.widget(find.byType(Container)).color, Colors.white); + + expect(find.text('Press to focus'), findsOneWidget); + await tester.tap(find.text('Press to focus')); + await tester.pumpAndSettle(); + expect(find.byType(Container), findsOneWidget); + expect(tester.widget(find.byType(Container)).color, Colors.white); + await tester.sendKeyEvent(LogicalKeyboardKey.keyR); + await tester.pumpAndSettle(); + expect(tester.widget(find.byType(Container)).color, Colors.red); + await tester.sendKeyEvent(LogicalKeyboardKey.keyG); + await tester.pumpAndSettle(); + expect(tester.widget(find.byType(Container)).color, Colors.green); + await tester.sendKeyEvent(LogicalKeyboardKey.keyB); + await tester.pumpAndSettle(); + expect(tester.widget(find.byType(Container)).color, Colors.blue); + + expect(find.text("I'm in color! Press R,G,B!"), findsOneWidget); + await tester.tap(find.text("I'm in color! Press R,G,B!")); + await tester.pumpAndSettle(); + expect(tester.widget(find.byType(Container)).color, Colors.white); + }); +}