feat(test): 70% tests coverage

This commit is contained in:
misha
2026-05-06 05:27:25 +03:00
parent 56313a4fcc
commit fe243965e3
12 changed files with 862 additions and 87 deletions

View File

@@ -614,6 +614,96 @@ void main() {
// Проверяем, что preview отображается (RichText должен быть)
expect(find.byType(RichText), findsWidgets);
});
testWidgets('preview: маркер списка со звёздочкой', (WidgetTester tester) async {
await tester.pumpWidget(
const MaterialApp(
home: Scaffold(
body: MarkdownEditor(
initialText: '* Asterisk item',
showInlineToolbar: true,
),
),
),
);
await tester.pump();
await tester.tap(find.byIcon(Icons.visibility));
await tester.pumpAndSettle();
// Тело пункта в RichText/TextSpan — find.textContaining не всегда его видит
expect(find.byType(RichText), findsWidgets);
expect(find.textContaining('•'), findsWidgets);
});
testWidgets('preview: нумерация из двух цифр', (WidgetTester tester) async {
await tester.pumpWidget(
const MaterialApp(
home: Scaffold(
body: MarkdownEditor(
initialText: '10. Tenth row',
showInlineToolbar: true,
),
),
),
);
await tester.pump();
await tester.tap(find.byIcon(Icons.visibility));
await tester.pumpAndSettle();
expect(find.byType(RichText), findsWidgets);
expect(find.textContaining('10.'), findsWidgets);
});
testWidgets(' после выхода из preview выполняется отложенный requestFocus', (WidgetTester tester) async {
await tester.pumpWidget(
const MaterialApp(
home: Scaffold(
body: MarkdownEditor(
initialText: 'focus',
showInlineToolbar: true,
),
),
),
);
await tester.pump();
await tester.tap(find.byIcon(Icons.visibility));
await tester.pumpAndSettle();
await tester.tap(find.byIcon(Icons.edit));
await tester.pump();
await tester.pump(const Duration(milliseconds: 150));
expect(find.byType(TextField), findsOneWidget);
});
testWidgets(' снимает разметку ссылки когда выделен markdown-link', (WidgetTester tester) async {
String? changed;
await tester.pumpWidget(
MaterialApp(
home: Scaffold(
body: MarkdownEditor(
initialText: '[Label](https://example.com)',
showInlineToolbar: true,
onChanged: (v) => changed = v,
),
),
),
);
await tester.pump();
final field = tester.widget<TextField>(find.byType(TextField));
final controller = field.controller!;
controller.selection = TextSelection(baseOffset: 0, extentOffset: controller.text.length);
await tester.tap(find.byIcon(Icons.link));
await tester.pump();
expect(changed, contains('Label'));
expect(changed, isNot(contains('[Label](https://example.com)')));
});
});
}