Skip to content

Commit 3c5915b

Browse files
committed
content test [nfc]: Add mergedStyleOf helper, simplifying callers
1 parent 3a26d82 commit 3c5915b

File tree

1 file changed

+27
-24
lines changed

1 file changed

+27
-24
lines changed

test/widgets/content_test.dart

Lines changed: 27 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,8 @@ TextStyle? mergeSpanStylesOuterToInner(
6767

6868
/// The "merged style" ([mergeSpanStylesOuterToInner]) of a text span
6969
/// whose whole text matches the given pattern, under the given root span.
70+
///
71+
/// See also [mergedStyleOf], which can be more convenient.
7072
TextStyle? mergedStyleOfSubstring(InlineSpan rootSpan, Pattern spanPattern) {
7173
return mergeSpanStylesOuterToInner(rootSpan,
7274
(span) {
@@ -81,6 +83,23 @@ TextStyle? mergedStyleOfSubstring(InlineSpan rootSpan, Pattern spanPattern) {
8183
});
8284
}
8385

86+
/// The "merged style" ([mergeSpanStylesOuterToInner]) of a text span
87+
/// whose whole text matches the given pattern, somewhere in the tree.
88+
///
89+
/// This finds the relevant [Text] widget by a search for [spanPattern].
90+
/// If [findAncestor] is non-null, the search will only consider descendants
91+
/// of widgets matching [findAncestor].
92+
TextStyle? mergedStyleOf(WidgetTester tester, Pattern spanPattern, {
93+
Finder? findAncestor,
94+
}) {
95+
var findTextWidget = find.textContaining(spanPattern);
96+
if (findAncestor != null) {
97+
findTextWidget = find.descendant(of: findAncestor, matching: findTextWidget);
98+
}
99+
final rootSpan = tester.renderObject<RenderParagraph>(findTextWidget).text;
100+
return mergedStyleOfSubstring(rootSpan, spanPattern);
101+
}
102+
84103
/// A callback that finds some target subspan within the given span,
85104
/// and reports the target's font size.
86105
typedef TargetFontSizeFinder = double Function(InlineSpan rootSpan);
@@ -486,18 +505,12 @@ void main() {
486505
testFontWeight('syntax highlighting: non-bold span',
487506
expectedWght: 400,
488507
content: plainContent(ContentExample.codeBlockHighlightedShort.html),
489-
styleFinder: (tester) {
490-
final root = tester.renderObject<RenderParagraph>(find.textContaining('class')).text;
491-
return mergedStyleOfSubstring(root, 'class')!;
492-
});
508+
styleFinder: (tester) => mergedStyleOf(tester, 'class')!);
493509

494510
testFontWeight('syntax highlighting: bold span',
495511
expectedWght: 700,
496512
content: plainContent(ContentExample.codeBlockHighlightedShort.html),
497-
styleFinder: (tester) {
498-
final root = tester.renderObject<RenderParagraph>(find.textContaining('A')).text;
499-
return mergedStyleOfSubstring(root, 'A')!;
500-
});
513+
styleFinder: (tester) => mergedStyleOf(tester, 'A')!);
501514
});
502515

503516
testContentSmoke(ContentExample.mathBlock);
@@ -550,8 +563,7 @@ void main() {
550563
testContentSmoke(ContentExample.strong);
551564

552565
TextStyle findWordBold(WidgetTester tester) {
553-
final root = tester.renderObject<RenderParagraph>(find.textContaining('bold')).text;
554-
return mergedStyleOfSubstring(root, 'bold')!;
566+
return mergedStyleOf(tester, 'bold')!;
555567
}
556568

557569
testFontWeight('in plain paragraph',
@@ -906,11 +918,8 @@ void main() {
906918
find.descendant(of: find.byType(GlobalTime),
907919
matching: find.byIcon(ZulipIcons.clock)));
908920

909-
final textSpan = tester.renderObject<RenderParagraph>(
910-
find.descendant(of: find.byType(GlobalTime),
911-
matching: find.textContaining(renderedTextRegexp)
912-
)).text;
913-
final textColor = mergedStyleOfSubstring(textSpan, renderedTextRegexp)!.color;
921+
final textColor = mergedStyleOf(tester,
922+
findAncestor: find.byType(GlobalTime), renderedTextRegexp)!.color;
914923
check(textColor).isNotNull();
915924

916925
check(icon).color.isNotNull().isSameColorAs(textColor!);
@@ -939,11 +948,8 @@ void main() {
939948

940949
testWidgets('text is scaled', (tester) async {
941950
await doCheck(tester, (widget) {
942-
final textSpan = tester.renderObject<RenderParagraph>(
943-
find.descendant(of: find.byWidget(widget),
944-
matching: find.textContaining(renderedTextRegexp)
945-
)).text;
946-
return mergedStyleOfSubstring(textSpan, renderedTextRegexp)!.fontSize!;
951+
return mergedStyleOf(tester, findAncestor: find.byWidget(widget),
952+
renderedTextRegexp)!.fontSize!;
947953
});
948954
});
949955

@@ -1096,10 +1102,7 @@ void main() {
10961102
// | 1 | 2 | 3 | 4 |
10971103
content: plainContent(ContentExample.tableWithSingleRow.html),
10981104
expectedWght: 700,
1099-
styleFinder: (tester) {
1100-
final root = tester.renderObject<RenderParagraph>(find.textContaining('a')).text;
1101-
return mergedStyleOfSubstring(root, 'a')!;
1102-
});
1105+
styleFinder: (tester) => mergedStyleOf(tester, 'a')!);
11031106

11041107
testWidgets('header row background color', (tester) async {
11051108
await prepareContent(tester, plainContent(ContentExample.tableWithSingleRow.html));

0 commit comments

Comments
 (0)