From c8ac35bd4332bea18327a5455cc829a3669cf159 Mon Sep 17 00:00:00 2001 From: Taha Tesser Date: Wed, 31 Jan 2024 12:35:34 +0200 Subject: [PATCH] [rfw] Restore RFW to 100% coverage after `ButtonBar` update --- packages/rfw/CHANGELOG.md | 5 + .../rfw/lib/src/flutter/material_widgets.dart | 18 ++-- packages/rfw/pubspec.yaml | 2 +- ...al_test.button_bar_properties.overflow.png | Bin 0 -> 2453 bytes .../material_test.button_bar_properties.png | Bin 0 -> 4101 bytes packages/rfw/test/material_widgets_test.dart | 94 ++++++++++++++++-- 6 files changed, 103 insertions(+), 16 deletions(-) create mode 100644 packages/rfw/test/goldens/material_test.button_bar_properties.overflow.png create mode 100644 packages/rfw/test/goldens/material_test.button_bar_properties.png diff --git a/packages/rfw/CHANGELOG.md b/packages/rfw/CHANGELOG.md index 412f7505d2d..50ac2718594 100644 --- a/packages/rfw/CHANGELOG.md +++ b/packages/rfw/CHANGELOG.md @@ -1,3 +1,8 @@ +## 1.0.22 + +* Adds more testing to restore coverage to 100%. +* Format documentation. + ## 1.0.21 * Adds support for subscribing to the root of a `DynamicContent` object. diff --git a/packages/rfw/lib/src/flutter/material_widgets.dart b/packages/rfw/lib/src/flutter/material_widgets.dart index b21bc8c2e63..cd1e515f226 100644 --- a/packages/rfw/lib/src/flutter/material_widgets.dart +++ b/packages/rfw/lib/src/flutter/material_widgets.dart @@ -140,18 +140,18 @@ Map get _materialWidgetsDefinitions => (ButtonBarLayoutBehavior.values, source, ['layoutBehavior']) diff --git a/packages/rfw/pubspec.yaml b/packages/rfw/pubspec.yaml index af77f348200..756d32ae05b 100644 --- a/packages/rfw/pubspec.yaml +++ b/packages/rfw/pubspec.yaml @@ -2,7 +2,7 @@ name: rfw description: "Remote Flutter widgets: a library for rendering declarative widget description files at runtime." repository: https://github.com/flutter/packages/tree/main/packages/rfw issue_tracker: https://github.com/flutter/flutter/issues?q=is%3Aissue+is%3Aopen+label%3A%22p%3A+rfw%22 -version: 1.0.21 +version: 1.0.22 environment: sdk: ">=3.0.0 <4.0.0" diff --git a/packages/rfw/test/goldens/material_test.button_bar_properties.overflow.png b/packages/rfw/test/goldens/material_test.button_bar_properties.overflow.png new file mode 100644 index 0000000000000000000000000000000000000000..fd7791a960ad5fb9e3b30eb77191509688a6ac8a GIT binary patch literal 2453 zcmeAS@N?(olHy`uVBq!ia0vp^Cm0x*A~@K9EcJyezW^!5;vjb?hIQv;UIIBR#ZI0f z96(URk5JozhwG~V>hS% z*V(&0UiSCbN-?#`C+{)*TYfZ>zaieZ(LsQNWt12V1Ip7u#j73jA5879|5yL!$JJjS z7cWn@ZImoxZ&VQAV8TsoFqrA{EzOpxZtWdM1rC-b2Wk+9g8M%^&YnFx83=sTCU4yS zdsZt?PR}zrIdKU%%ft{hUv-cyU&G zdU{T7ZtvBrS3f@L)<0LP($2PN<3_`{iifR*|Ni{Ue3N)?u4QqW&F3@5$%%=HIXO9J zY8Be|vCZ^REB^0mRD1gL>E!C_>TAY*Z!b7}`}XbFp+kpEwiR^g=;`&{y?ZzEyoK5R zqfID5)BknF$-+IKKAu&cX&7c;X!0b5&Jo0Fe!-PF5f z#}12W)28{I70l@u<*-@#?0=}p90ejvl$PUFpI_ZUhVL8J>~an%lCZ0SG{>&an4Wu?fmj~GVk~Q|F@(1`#Tf!La&(pb+t9WUM_!p zsFi#3yrLAz6IWMtDzO&zQ^X{E?YX5)Sj`;u0 z|MC6$y|(LOcbnzi-)H+e(!K0K_5^>spHHS+#MNfU?D%;#qV6YeVZn-{#pnB;PQNc9 zo>ymjZvU@qJBpv5`|;=V`E=XYC-``tTw5ER++#Se`ZIs9^x>DA>fgSJ_x}9ifWy1{ z`|XcOB)@#54Hf_M;V{2(Tu})-+opZ{{+(u@Gy8w}@no}a>*rSfJG*>;GfMsghD*dp zi+^>W&B1A5|KHR5(`*x$5zHZTeq7$;|LgLCGv?)}nXVu~L0mshCb?(h?wy8P4d>|n zzJ6}0_w=+qPhJ2$vGsbKG*IgAhvO@IAC}zQUlv#Y_p7A7tZC|@A-W0 wr9GR}ypn%tX&RBbM_I^ueKa&cq4Cgun=kK=q%*=RfK4j~Pgg&ebxsLQ0Cbb<^#A|> literal 0 HcmV?d00001 diff --git a/packages/rfw/test/goldens/material_test.button_bar_properties.png b/packages/rfw/test/goldens/material_test.button_bar_properties.png new file mode 100644 index 0000000000000000000000000000000000000000..f47d0f336669327af35b46bbcdc4833e6f64576b GIT binary patch literal 4101 zcmeAS@N?(olHy`uVBq!ia0y~yU{+vYV2a>i1B%QlYbpRzjKx9jP7LeL$-D$|Sc;uI zLpXq-h9jkefq{R$r;B4q#hkZyHfG-|Wjg*bf8MNHHy*!?JQ!oWtD{*YW>?pgM+J*s zmj<{zd{gyL_MR5IYwVY0K`iY`9e#`W4n0)RGrx5wVJ}N|k-tY#@S~(^nPcDAcdozw zr}jkqho|2^oI5;u>CvQ(=0K~NHm_s{Qu}3@SQr>ia0oCkC@4EHFf{ZqFfuS0jS7wi z$Y^31%?P6vZ}i`J%7L5PA)AieWl6p zVYQG#fycbMUoSttTt2_AeO^u3oSlDuSycY(G>o=1{;KmXdH3ws$sgZdPyTz@{8)ed zU77PXpU>>5{QS%|e)G|>`*-vITQ02b*8^nsgM@l}dsjYZkP%QQ;IRAs zX0zcjiPQBJHIGzfLVuS(Kdrxi&+C~-lOC?W@#j9s_HEm@FQ3O);LvbDF(N)*9%xha zO#eMCi?jZ}yYt$9`P;W|dzUUYB;YXpq zReyIEzq_+@_q>^B(~`@}x6e9axN-Mx>onv1?+5-K7UtwT*vc(_Od>gFeXTJ>`R6Oa z{&&Bg`Sj`2ja#=?sTKO<(ww_3Xzx#piopUtfR!v+3;F zvy*FUYjg7R`}f-R=fBG{n++_L%>2MJ3IUF)9LYY^0i+sUJ15n z(u>_?ab97_xsthGSr1KvGCoje!tf|@6HaxeLo&`!}DeRzdzu7`S0iR['test']), parseLibraryFile(''' import core; @@ -225,6 +227,82 @@ void main() { ); }); + testWidgets('Implement ButtonBar properties', (WidgetTester tester) async { + final Runtime runtime = setupRuntime(); + final DynamicContent data = DynamicContent(); + final List eventLog = []; + await tester.pumpWidget( + MaterialApp( + theme: ThemeData(useMaterial3: false), + home: RemoteWidget( + runtime: runtime, + data: data, + widget: const FullyQualifiedWidgetName(testName, 'root'), + onEvent: (String eventName, DynamicMap eventArguments) { + eventLog.add('$eventName $eventArguments'); + }, + ), + ), + ); + expect( + tester.takeException().toString(), + contains('Could not find remote widget named'), + ); + + addTearDown(() async { + await tester.binding.setSurfaceSize(null); + }); + + runtime.update(testName, parseLibraryFile(''' + import core; + import material; + widget root = Scaffold( + body: Center( + child: ButtonBar( + buttonPadding: [8.0], + layoutBehavior: 'constrained', + alignment: 'end', + overflowDirection: 'up', + overflowButtonSpacing: 8.0, + mainAxisSize: 'min', + children: [ + ElevatedButton( + onPressed: event 'button' { }, + child: Text(text: 'Elevated'), + ), + OutlinedButton( + onPressed: event 'button' { }, + child: Text(text: 'Outlined'), + ), + TextButton( + onPressed: event 'button' { }, + child: Text(text: 'Text'), + ), + ], + ), + ), + ); + ''')); + await tester.pump(); + + await expectLater( + find.byType(RemoteWidget), + matchesGoldenFile('goldens/material_test.button_bar_properties.png'), + skip: !runGoldens, + ); + + // Update the surface size for ButtonBar to overflow. + await tester.binding.setSurfaceSize(const Size(200.0, 600.0)); + await tester.pump(); + + await expectLater( + find.byType(RemoteWidget), + matchesGoldenFile( + 'goldens/material_test.button_bar_properties.overflow.png'), + skip: !runGoldens, + ); + }); + testWidgets('OverflowBar configured to resemble ButtonBar', (WidgetTester tester) async { final Runtime runtime = setupRuntime(); @@ -243,8 +321,10 @@ void main() { ), ), ); - expect(tester.takeException().toString(), - contains('Could not find remote widget named')); + expect( + tester.takeException().toString(), + contains('Could not find remote widget named'), + ); runtime.update(testName, parseLibraryFile(''' import core; @@ -301,8 +381,10 @@ void main() { ), ), ); - expect(tester.takeException().toString(), - contains('Could not find remote widget named')); + expect( + tester.takeException().toString(), + contains('Could not find remote widget named'), + ); addTearDown(() async { await tester.binding.setSurfaceSize(null);