Skip to content

Commit e3a2856

Browse files
committed
settings test: Check theme-setting radio buttons by checking semantics
This tests the observable behavior more directly. RadioListTile.checked has been deprecated (#1545), so we'd like this test to stop relying on that implementation detail.
1 parent 0ada484 commit e3a2856

File tree

1 file changed

+14
-3
lines changed

1 file changed

+14
-3
lines changed

test/widgets/settings_test.dart

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ import 'package:checks/checks.dart';
22
import 'package:flutter/foundation.dart';
33
import 'package:flutter/material.dart';
44
import 'package:flutter_test/flutter_test.dart';
5+
import 'package:legacy_checks/legacy_checks.dart';
56
import 'package:zulip/model/settings.dart';
67
import 'package:zulip/widgets/settings.dart';
78

@@ -39,9 +40,19 @@ void main() {
3940
ThemeSetting.dark => 'Dark',
4041
};
4142
for (final title in ['System', 'Light', 'Dark']) {
42-
check(tester.widget<RadioListTile<ThemeSetting?>>(
43-
findRadioListTileWithTitle(title)))
44-
.checked.equals(title == expectedCheckedTitle);
43+
final expectedIsChecked = title == expectedCheckedTitle;
44+
check(tester.semantics.find(findRadioListTileWithTitle(title)))
45+
// `.legacyMatcher()` wrapper just because flutter_checks's
46+
// `matchesSemantics` doesn't yet have a `hasSelectedState` param
47+
.legacyMatcher(matchesSemantics(
48+
label: title,
49+
isFocusable: true,
50+
hasEnabledState: true, isEnabled: true,
51+
isInMutuallyExclusiveGroup: true,
52+
hasCheckedState: true, isChecked: expectedIsChecked,
53+
hasSelectedState: true,
54+
hasTapAction: true,
55+
hasFocusAction: true));
4556
}
4657
check(testBinding.globalStore)
4758
.settings.themeSetting.equals(expectedThemeSetting);

0 commit comments

Comments
 (0)