diff --git a/packages/rfw/CHANGELOG.md b/packages/rfw/CHANGELOG.md index 412f7505d2d1..50ac27185949 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 b21bc8c2e630..cd1e515f2264 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/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 000000000000..fd7791a960ad 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 000000000000..f47d0f336669 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 db3734879833..ac397ec54542 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);