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 00000000000..fd7791a960a Binary files /dev/null and b/packages/rfw/test/goldens/material_test.button_bar_properties.overflow.png differ 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 00000000000..f47d0f33666 Binary files /dev/null and b/packages/rfw/test/goldens/material_test.button_bar_properties.png differ diff --git a/packages/rfw/test/material_widgets_test.dart b/packages/rfw/test/material_widgets_test.dart index db373487983..ac397ec5454 100644 --- a/packages/rfw/test/material_widgets_test.dart +++ b/packages/rfw/test/material_widgets_test.dart @@ -38,8 +38,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(const LibraryName(['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);