Ocideck/test/free_markdown_preview_test.dart

54 lines
1.7 KiB
Dart
Raw Normal View History

import 'package:flutter/material.dart';
import 'package:flutter_highlight/flutter_highlight.dart';
import 'package:flutter_math_fork/flutter_math.dart';
import 'package:flutter_test/flutter_test.dart';
import 'package:ocideck/models/slide.dart';
import 'package:ocideck/widgets/slides/slide_preview.dart';
Widget _host(Slide slide) {
return Directionality(
textDirection: TextDirection.ltr,
child: Center(
child: SizedBox(
width: 800,
height: 450,
child: SlidePreviewWidget(slide: slide),
),
),
);
}
void main() {
testWidgets('free Markdown renders a highlighted code block', (tester) async {
final slide = Slide.create(SlideType.freeMarkdown).copyWith(
customMarkdown: '# Demo\n\n```dart\nvoid main() => print(42);\n```\n',
);
await tester.pumpWidget(_host(slide));
expect(find.byType(HighlightView), findsOneWidget);
});
testWidgets('free Markdown renders display math', (tester) async {
final slide = Slide.create(SlideType.freeMarkdown).copyWith(
customMarkdown: 'Stelling:\n\n\$\$E = mc^2\$\$\n',
);
await tester.pumpWidget(_host(slide));
expect(find.byType(Math), findsOneWidget);
});
testWidgets('an unknown code language falls back without throwing', (
tester,
) async {
final slide = Slide.create(SlideType.freeMarkdown).copyWith(
customMarkdown: '```nonexistentlang\nsome code\n```\n',
);
await tester.pumpWidget(_host(slide));
// No HighlightView (unknown language) and no exception during build.
expect(find.byType(HighlightView), findsNothing);
expect(tester.takeException(), isNull);
expect(find.text('some code'), findsOneWidget);
});
}