From 46cb2d7b013cd356962ed41d55fba2e65ddb89f2 Mon Sep 17 00:00:00 2001 From: Elias Elfarri Date: Tue, 12 Mar 2024 17:25:58 +0100 Subject: [PATCH] Write unit tests for API Examples of checkbox.0, checkbox.1 (#144888) Write unit tests for API Examples of checkbox.0, checkbox.1 Part of #130459 --- dev/bots/check_code_samples.dart | 2 - .../material/checkbox/checkbox.0_test.dart | 59 ++++++++++++++++ .../material/checkbox/checkbox.1_test.dart | 68 +++++++++++++++++++ 3 files changed, 127 insertions(+), 2 deletions(-) create mode 100644 examples/api/test/material/checkbox/checkbox.0_test.dart create mode 100644 examples/api/test/material/checkbox/checkbox.1_test.dart diff --git a/dev/bots/check_code_samples.dart b/dev/bots/check_code_samples.dart index 54f54ea1931..3e1b1044a45 100644 --- a/dev/bots/check_code_samples.dart +++ b/dev/bots/check_code_samples.dart @@ -371,8 +371,6 @@ final Set _knownMissingTests = { 'examples/api/test/material/app_bar/sliver_app_bar.3_test.dart', 'examples/api/test/material/banner/material_banner.1_test.dart', 'examples/api/test/material/banner/material_banner.0_test.dart', - 'examples/api/test/material/checkbox/checkbox.1_test.dart', - 'examples/api/test/material/checkbox/checkbox.0_test.dart', 'examples/api/test/material/navigation_rail/navigation_rail.extended_animation.0_test.dart', 'examples/api/test/rendering/growth_direction/growth_direction.0_test.dart', 'examples/api/test/rendering/sliver_grid/sliver_grid_delegate_with_fixed_cross_axis_count.0_test.dart', diff --git a/examples/api/test/material/checkbox/checkbox.0_test.dart b/examples/api/test/material/checkbox/checkbox.0_test.dart new file mode 100644 index 00000000000..568c03f2078 --- /dev/null +++ b/examples/api/test/material/checkbox/checkbox.0_test.dart @@ -0,0 +1,59 @@ +// 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/checkbox/checkbox.0.dart' + as example; +import 'package:flutter_test/flutter_test.dart'; + +void main() { + testWidgets('Checkbox can be checked', (WidgetTester tester) async { + await tester.pumpWidget( + const example.CheckboxExampleApp(), + ); + + Checkbox checkbox = tester.widget(find.byType(Checkbox)); + expect(checkbox.value, isFalse); + + await tester.tap(find.byType(Checkbox)); + await tester.pump(); + + checkbox = tester.widget(find.byType(Checkbox)); + expect(checkbox.value, isTrue); + + await tester.tap(find.byType(Checkbox)); + await tester.pump(); + + checkbox = tester.widget(find.byType(Checkbox)); + expect(checkbox.value, isFalse); + }); + + testWidgets('Checkbox color can be changed', (WidgetTester tester) async { + await tester.pumpWidget( + const example.CheckboxExampleApp(), + ); + final Checkbox checkbox = tester.widget(find.byType(Checkbox)); + + expect( + checkbox.checkColor, + Colors.white, + ); + expect( + checkbox.fillColor!.resolve({}), + Colors.red, + ); + expect( + checkbox.fillColor!.resolve({MaterialState.pressed}), + Colors.blue, + ); + expect( + checkbox.fillColor!.resolve({MaterialState.hovered}), + Colors.blue, + ); + expect( + checkbox.fillColor!.resolve({MaterialState.focused}), + Colors.blue, + ); + }); +} diff --git a/examples/api/test/material/checkbox/checkbox.1_test.dart b/examples/api/test/material/checkbox/checkbox.1_test.dart new file mode 100644 index 00000000000..7d1500aa24c --- /dev/null +++ b/examples/api/test/material/checkbox/checkbox.1_test.dart @@ -0,0 +1,68 @@ +// 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/checkbox/checkbox.1.dart' + as example; +import 'package:flutter_test/flutter_test.dart'; + +void main() { + testWidgets('Checkbox can be checked', (WidgetTester tester) async { + await tester.pumpWidget( + const example.CheckboxExampleApp(), + ); + + expect(find.byType(Checkbox), findsNWidgets(3)); + Checkbox checkbox = tester.widget(find.byType(Checkbox).first); + Checkbox checkboxWithError = tester.widget(find.byType(Checkbox).at(1)); + Checkbox checkboxDisabled = tester.widget(find.byType(Checkbox).last); + + // Verify the initial state of the checkboxes. + expect(checkbox.value, isTrue); + expect(checkboxWithError.value, isTrue); + expect(checkboxDisabled.value, isTrue); + + expect(checkboxWithError.isError, isTrue); + expect(checkboxDisabled.onChanged, null); + + expect(checkbox.tristate, isTrue); + expect(checkboxWithError.tristate, isTrue); + expect(checkboxDisabled.tristate, isTrue); + + // Tap the first Checkbox and verify the state change. + await tester.tap(find.byType(Checkbox).first); + await tester.pump(); + checkbox = tester.widget(find.byType(Checkbox).first); + checkboxWithError = tester.widget(find.byType(Checkbox).at(1)); + checkboxDisabled = tester.widget(find.byType(Checkbox).last); + + expect(checkbox.value, isNull); + expect(checkboxWithError.value, isNull); + expect(checkboxDisabled.value, isNull); + + // Tap the second Checkbox and verify the state change. + await tester.tap(find.byType(Checkbox).at(1)); + await tester.pump(); + + checkbox = tester.widget(find.byType(Checkbox).first); + checkboxWithError = tester.widget(find.byType(Checkbox).at(1)); + checkboxDisabled = tester.widget(find.byType(Checkbox).last); + + expect(checkbox.value, isFalse); + expect(checkboxWithError.value, isFalse); + expect(checkboxDisabled.value, isFalse); + + // Tap the third Checkbox and verify that should remain unchanged. + await tester.tap(find.byType(Checkbox).last); + await tester.pump(); + + checkbox = tester.widget(find.byType(Checkbox).first); + checkboxWithError = tester.widget(find.byType(Checkbox).at(1)); + checkboxDisabled = tester.widget(find.byType(Checkbox).last); + + expect(checkbox.value, isFalse); + expect(checkboxWithError.value, isFalse); + expect(checkboxDisabled.value, isFalse); + }); +}