Added test cases for Custom markdown working

This commit is contained in:
Chinmay
2024-03-02 18:36:47 +05:30
parent 7e2f9e1144
commit 0a8b75b9fd
2 changed files with 30 additions and 5 deletions

View File

@ -9,9 +9,12 @@ class CustomMarkdown extends StatelessWidget {
super.key, super.key,
required this.data, required this.data,
this.padding = const EdgeInsets.all(16.0), this.padding = const EdgeInsets.all(16.0),
this.onTapLink,
}); });
final String data; final String data;
final EdgeInsets padding; final EdgeInsets padding;
final void Function(String text, String? href, String title)? onTapLink;
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
@ -25,7 +28,8 @@ class CustomMarkdown extends StatelessWidget {
data: data, data: data,
selectable: true, selectable: true,
extensionSet: md.ExtensionSet.gitHubFlavored, extensionSet: md.ExtensionSet.gitHubFlavored,
onTapLink: (text, href, title) { onTapLink: onTapLink ??
(text, href, title) {
launchUrl(Uri.parse(href ?? "")); launchUrl(Uri.parse(href ?? ""));
}, },
builders: { builders: {

View File

@ -1,5 +1,7 @@
import 'package:flutter/gestures.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter/services.dart'; import 'package:flutter/services.dart';
import 'package:flutter_markdown/flutter_markdown.dart';
import 'package:flutter_test/flutter_test.dart'; import 'package:flutter_test/flutter_test.dart';
import 'package:apidash/widgets/markdown.dart'; import 'package:apidash/widgets/markdown.dart';
@ -32,7 +34,7 @@ void main() {
expect(markdownTextFinder, findsOneWidget); expect(markdownTextFinder, findsOneWidget);
}); });
testWidgets('CustomMarkdown onTapLink callback works', testWidgets('CustomMarkdown has proper text rendered',
(WidgetTester tester) async { (WidgetTester tester) async {
await tester.pumpWidget(MaterialApp( await tester.pumpWidget(MaterialApp(
home: GestureDetector( home: GestureDetector(
@ -45,10 +47,29 @@ void main() {
await tester.tap(find.text('Link Text')); await tester.tap(find.text('Link Text'));
await tester.pump(); await tester.pump();
expect(find.text('Link Text'), findsOneWidget); expect(find.text('Link Text'), findsOneWidget);
expect(find.text('https://apidash.dev/'), findsNothing); expect(find.text('https://apidash.dev/'), findsNothing);
}); });
testWidgets('CustomMarkdown creates hyperlink',
(WidgetTester tester) async {
bool linkTapped = false;
await tester.pumpWidget(MaterialApp(
home: CustomMarkdown(
data: '[Link Text](https://apidash.dev/)',
onTapLink: (text, href, title) {
linkTapped = true;
expect(text, 'Link Text');
expect(href, 'https://apidash.dev/');
},
),
));
expect(find.byType(Markdown), findsOneWidget);
final markdownWidget = tester.widget<Markdown>(find.byType(Markdown));
expect(markdownWidget.data, '[Link Text](https://apidash.dev/)');
await tester.tap(find.text('Link Text'));
expect(linkTapped, true);
});
}); });
} }