Skip to content

Commit 023f1e6

Browse files
chrisbobberajveermalviya
authored andcommitted
settings test: Check theme-setting radio buttons by checking what paints
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 ccdacf9 commit 023f1e6

File tree

1 file changed

+13
-3
lines changed

1 file changed

+13
-3
lines changed

test/widgets/settings_test.dart

Lines changed: 13 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,18 @@ 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+
final element = tester.element(findRadioListTileWithTitle(title));
45+
final checkedColor = Theme.of(element).colorScheme.primary;
46+
// `paints` isn't a [Matcher] so we wrap it with `equals`;
47+
// awkward but it works
48+
final paintsAsCheckedMatcher = equals(paints..circle(color: checkedColor));
49+
check(because: '$title should be ${expectedIsChecked ? 'checked' : 'unchecked'}',
50+
element.renderObject,
51+
).legacyMatcher(
52+
expectedIsChecked
53+
? paintsAsCheckedMatcher
54+
: isNot(paintsAsCheckedMatcher));
4555
}
4656
check(testBinding.globalStore)
4757
.settings.themeSetting.equals(expectedThemeSetting);

0 commit comments

Comments
 (0)