From 27b961673a9b5b6fc3cc1b2263d018bed09fbedb Mon Sep 17 00:00:00 2001 From: Valentin Vignal <32538273+ValentinVignal@users.noreply.github.com> Date: Mon, 24 Jun 2024 14:16:13 +0800 Subject: [PATCH] Add tests for form_text_field.1.dart (#150481) Contributes to https://github.com/flutter/flutter/issues/130459 It adds a test for - `examples/api/lib/material/text_form_field/text_form_field.1.dart` --- dev/bots/check_code_samples.dart | 1 - .../text_form_field.1_test.dart | 58 +++++++++++++++++++ 2 files changed, 58 insertions(+), 1 deletion(-) create mode 100644 examples/api/test/material/text_form_field/text_form_field.1_test.dart diff --git a/dev/bots/check_code_samples.dart b/dev/bots/check_code_samples.dart index 1d076a6ebb0..af7713fdf70 100644 --- a/dev/bots/check_code_samples.dart +++ b/dev/bots/check_code_samples.dart @@ -325,7 +325,6 @@ final Set _knownMissingTests = { 'examples/api/test/material/flexible_space_bar/flexible_space_bar.0_test.dart', 'examples/api/test/material/chip/deletable_chip_attributes.on_deleted.0_test.dart', 'examples/api/test/material/expansion_panel/expansion_panel_list.expansion_panel_list_radio.0_test.dart', - 'examples/api/test/material/text_form_field/text_form_field.1_test.dart', 'examples/api/test/material/scrollbar/scrollbar.1_test.dart', 'examples/api/test/material/search_anchor/search_anchor.0_test.dart', 'examples/api/test/material/search_anchor/search_anchor.1_test.dart', diff --git a/examples/api/test/material/text_form_field/text_form_field.1_test.dart b/examples/api/test/material/text_form_field/text_form_field.1_test.dart new file mode 100644 index 00000000000..e15d6f711f2 --- /dev/null +++ b/examples/api/test/material/text_form_field/text_form_field.1_test.dart @@ -0,0 +1,58 @@ +// 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/material/text_form_field/text_form_field.1.dart' as example; +import 'package:flutter_test/flutter_test.dart'; + +void main() { + testWidgets('Pressing space should focus the next field', (WidgetTester tester) async { + await tester.pumpWidget(const example.TextFormFieldExampleApp()); + final Finder textFormField = find.byType(TextFormField); + + expect(textFormField, findsExactly(5)); + + final Finder editableText = find.byType(EditableText); + expect(editableText, findsExactly(5)); + + List getFocuses() { + return editableText.evaluate() + .map((Element finderResult) => (finderResult.widget as EditableText).focusNode.hasFocus) + .toList(); + } + + expect(getFocuses(), const [false, false, false, false, false]); + + await tester.tap(textFormField.first); + await tester.pump(); + + expect(getFocuses(), const [true, false, false, false, false]); + + await tester.sendKeyEvent(LogicalKeyboardKey.space); + await tester.pump(); + + expect(getFocuses(), const [false, true, false, false, false]); + + await tester.sendKeyEvent(LogicalKeyboardKey.space); + await tester.pump(); + + expect(getFocuses(), const [false, false, true, false, false]); + + await tester.sendKeyEvent(LogicalKeyboardKey.space); + await tester.pump(); + + expect(getFocuses(), const [false, false, false, true, false]); + + await tester.sendKeyEvent(LogicalKeyboardKey.space); + await tester.pump(); + + expect(getFocuses(), const [false, false, false, false, true]); + + await tester.sendKeyEvent(LogicalKeyboardKey.space); + await tester.pump(); + + expect(getFocuses(), const [true, false, false, false, false]); + }); +}