Skip to content
Prev Previous commit
Next Next commit
Add widget tests for errorBuilder
  • Loading branch information
memishood committed Jan 6, 2025
commit 766979ebeedddbd14c374b02d3636c4307576f47
102 changes: 102 additions & 0 deletions third_party/packages/flutter_svg/test/widget_svg_test.dart
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import 'dart:convert';
import 'dart:io';

import 'package:flutter/foundation.dart';
import 'package:flutter/widgets.dart';
Expand Down Expand Up @@ -767,6 +768,107 @@ void main() {
widgetFinder, matchesGoldenFile('golden_widget/image_$key.png'));
}
});

group('SvgPicture - errorBuilder', () {
testWidgets('SvgPicture.string handles failure',
(WidgetTester tester) async {
await tester.pumpWidget(
MediaQuery(
data: mediaQueryData,
child: SvgPicture.string(
'<!-- invalid svg -->',
errorBuilder: (
BuildContext context,
Object error,
StackTrace stackTrace,
) {
return const Directionality(
textDirection: TextDirection.ltr,
child: Text('image failed'),
);
},
),
),
);
await tester.pumpAndSettle();

expect(find.text('image failed'), findsOneWidget);
});

testWidgets('SvgPicture.memory handles failure',
(WidgetTester tester) async {
await tester.pumpWidget(
MediaQuery(
data: mediaQueryData,
child: SvgPicture.memory(
Uint8List.fromList(utf8.encode('<!-- invalid svg -->')),
errorBuilder: (
BuildContext context,
Object error,
StackTrace stackTrace,
) {
return const Directionality(
textDirection: TextDirection.ltr,
child: Text('image failed'),
);
},
),
),
);
await tester.pumpAndSettle();

expect(find.text('image failed'), findsOneWidget);
});

testWidgets('SvgPicture.asset handles failure',
(WidgetTester tester) async {
await tester.pumpWidget(
MediaQuery(
data: mediaQueryData,
child: SvgPicture.asset(
'/wrong path',
errorBuilder: (
BuildContext context,
Object error,
StackTrace stackTrace,
) {
return const Directionality(
textDirection: TextDirection.ltr,
child: Text('image failed'),
);
},
),
),
);
await tester.pumpAndSettle();

expect(find.text('image failed'), findsOneWidget);
});

testWidgets('SvgPicture.file handles failure', (WidgetTester tester) async {
await tester.pumpWidget(
MediaQuery(
data: mediaQueryData,
child: SvgPicture.file(
File(''),
errorBuilder: (
BuildContext context,
Object error,
StackTrace stackTrace,
) {
return const Directionality(
textDirection: TextDirection.ltr,
child: Text('image failed'),
);
},
),
),
);
await tester.pumpAndSettle();

expect(find.text('image failed'), findsOneWidget);
});
});
}

class FakeAssetBundle extends Fake implements AssetBundle {
Expand Down
Loading