Skip to content

Commit 608a24f

Browse files
committed
test [nfc]: Consolidate a widgets/checks.dart for trivial checks-extensions
I've long had a recurring small annoyance that the "foo_checks.dart" file interferes with tab-completion for "foo_test.dart". For example as mentioned in this comment: #1608 (comment) So here's an approach to solve that, beginning with the "checks" files in test/widgets/. For updating the imports, I used a bit of Perl: $ perl -i -0pe ' s,import .\K(?!dialog)\w*_checks.dart,checks.dart,g ' test/widgets/*_test.dart
1 parent e9bbf4e commit 608a24f

20 files changed

+97
-121
lines changed

test/notifications/open_test.dart

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,9 +22,8 @@ import '../model/binding.dart';
2222
import '../model/narrow_checks.dart';
2323
import '../stdlib_checks.dart';
2424
import '../test_navigation.dart';
25+
import '../widgets/checks.dart';
2526
import '../widgets/dialog_checks.dart';
26-
import '../widgets/message_list_checks.dart';
27-
import '../widgets/page_checks.dart';
2827
import 'display_test.dart';
2928

3029
Map<String, Object?> messageApnsPayload(

test/widgets/action_sheet_test.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ import '../stdlib_checks.dart';
4444
import '../test_clipboard.dart';
4545
import '../test_images.dart';
4646
import '../test_share_plus.dart';
47-
import 'compose_box_checks.dart';
47+
import 'checks.dart';
4848
import 'dialog_checks.dart';
4949
import 'test_app.dart';
5050

test/widgets/app_test.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ import '../model/store_checks.dart';
1717
import '../model/test_store.dart';
1818
import '../test_navigation.dart';
1919
import 'dialog_checks.dart';
20-
import 'page_checks.dart';
20+
import 'checks.dart';
2121
import 'test_app.dart';
2222

2323
void main() {

test/widgets/channel_colors_checks.dart

Lines changed: 0 additions & 12 deletions
This file was deleted.

test/widgets/channel_colors_test.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import 'package:flutter_checks/flutter_checks.dart';
44
import 'package:flutter_test/flutter_test.dart';
55
import 'package:zulip/widgets/channel_colors.dart';
66

7-
import 'channel_colors_checks.dart';
7+
import 'checks.dart';
88

99
void main() {
1010
group('ChannelColorSwatches', () {

test/widgets/checks.dart

Lines changed: 86 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,86 @@
1+
import 'package:checks/checks.dart';
2+
import 'package:flutter/widgets.dart';
3+
4+
import 'package:zulip/model/narrow.dart';
5+
import 'package:zulip/widgets/channel_colors.dart';
6+
import 'package:zulip/widgets/compose_box.dart';
7+
import 'package:zulip/widgets/content.dart';
8+
import 'package:zulip/widgets/message_list.dart';
9+
import 'package:zulip/widgets/page.dart';
10+
import 'package:zulip/widgets/profile.dart';
11+
import 'package:zulip/widgets/store.dart';
12+
import 'package:zulip/widgets/unread_count_badge.dart';
13+
14+
extension ChannelColorSwatchChecks on Subject<ChannelColorSwatch> {
15+
Subject<Color> get base => has((s) => s.base, 'base');
16+
Subject<Color> get unreadCountBadgeBackground => has((s) => s.unreadCountBadgeBackground, 'unreadCountBadgeBackground');
17+
Subject<Color> get iconOnPlainBackground => has((s) => s.iconOnPlainBackground, 'iconOnPlainBackground');
18+
Subject<Color> get iconOnBarBackground => has((s) => s.iconOnBarBackground, 'iconOnBarBackground');
19+
Subject<Color> get barBackground => has((s) => s.barBackground, 'barBackground');
20+
}
21+
22+
extension ComposeBoxStateChecks on Subject<ComposeBoxState> {
23+
Subject<ComposeBoxController> get controller => has((c) => c.controller, 'controller');
24+
}
25+
26+
extension ComposeBoxControllerChecks on Subject<ComposeBoxController> {
27+
Subject<ComposeContentController> get content => has((c) => c.content, 'content');
28+
Subject<FocusNode> get contentFocusNode => has((c) => c.contentFocusNode, 'contentFocusNode');
29+
}
30+
31+
extension StreamComposeBoxControllerChecks on Subject<StreamComposeBoxController> {
32+
Subject<ComposeTopicController> get topic => has((c) => c.topic, 'topic');
33+
Subject<FocusNode> get topicFocusNode => has((c) => c.topicFocusNode, 'topicFocusNode');
34+
}
35+
36+
extension EditMessageComposeBoxControllerChecks on Subject<EditMessageComposeBoxController> {
37+
Subject<int> get messageId => has((c) => c.messageId, 'messageId');
38+
Subject<String?> get originalRawContent => has((c) => c.originalRawContent, 'originalRawContent');
39+
}
40+
41+
extension ComposeContentControllerChecks on Subject<ComposeContentController> {
42+
Subject<List<ContentValidationError>> get validationErrors => has((c) => c.validationErrors, 'validationErrors');
43+
}
44+
45+
extension RealmContentNetworkImageChecks on Subject<RealmContentNetworkImage> {
46+
Subject<Uri> get src => has((i) => i.src, 'src');
47+
// TODO others
48+
}
49+
50+
extension AvatarImageChecks on Subject<AvatarImage> {
51+
Subject<int> get userId => has((i) => i.userId, 'userId');
52+
}
53+
54+
extension AvatarShapeChecks on Subject<AvatarShape> {
55+
Subject<double> get size => has((i) => i.size, 'size');
56+
Subject<double> get borderRadius => has((i) => i.borderRadius, 'borderRadius');
57+
Subject<Widget> get child => has((i) => i.child, 'child');
58+
}
59+
60+
extension MessageListPageChecks on Subject<MessageListPage> {
61+
Subject<Narrow> get initNarrow => has((x) => x.initNarrow, 'initNarrow');
62+
Subject<int?> get initAnchorMessageId => has((x) => x.initAnchorMessageId, 'initAnchorMessageId');
63+
}
64+
65+
extension WidgetRouteChecks<T> on Subject<WidgetRoute<T>> {
66+
Subject<Widget> get page => has((x) => x.page, 'page');
67+
}
68+
69+
extension AccountRouteChecks<T> on Subject<AccountRoute<T>> {
70+
Subject<int> get accountId => has((x) => x.accountId, 'accountId');
71+
}
72+
73+
extension ProfilePageChecks on Subject<ProfilePage> {
74+
Subject<int> get userId => has((x) => x.userId, 'userId');
75+
}
76+
77+
extension PerAccountStoreWidgetChecks on Subject<PerAccountStoreWidget> {
78+
Subject<int> get accountId => has((x) => x.accountId, 'accountId');
79+
Subject<Widget> get child => has((x) => x.child, 'child');
80+
}
81+
82+
extension UnreadCountBadgeChecks on Subject<UnreadCountBadge> {
83+
Subject<int> get count => has((b) => b.count, 'count');
84+
Subject<bool> get bold => has((b) => b.bold, 'bold');
85+
Subject<Color?> get backgroundColor => has((b) => b.backgroundColor, 'backgroundColor');
86+
}

test/widgets/compose_box_checks.dart

Lines changed: 0 additions & 26 deletions
This file was deleted.

test/widgets/compose_box_test.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ import '../model/store_checks.dart';
3737
import '../model/test_store.dart';
3838
import '../model/typing_status_test.dart';
3939
import '../stdlib_checks.dart';
40-
import 'compose_box_checks.dart';
40+
import 'checks.dart';
4141
import 'dialog_checks.dart';
4242
import 'test_app.dart';
4343

test/widgets/content_checks.dart

Lines changed: 0 additions & 19 deletions
This file was deleted.

test/widgets/content_test.dart

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,9 +28,8 @@ import '../model/test_store.dart';
2828
import '../stdlib_checks.dart';
2929
import '../test_images.dart';
3030
import '../test_navigation.dart';
31+
import 'checks.dart';
3132
import 'dialog_checks.dart';
32-
import 'message_list_checks.dart';
33-
import 'page_checks.dart';
3433
import 'test_app.dart';
3534

3635
/// Simulate a nested "inner" span's style by merging all ancestor-span

0 commit comments

Comments
 (0)