Export test utilites

pull/1265/head
Richard Marshall 2 years ago
parent d1f1641aad
commit 06138e612a
No known key found for this signature in database
GPG Key ID: 45CD5A14FB29C4D7
  1. 16
      README.md
  2. 3
      lib/flutter_quill_test.dart
  3. 16
      lib/src/test/widget_tester_extension.dart
  4. 2
      pubspec.yaml
  5. 4
      test/bug_fix_test.dart
  6. 6
      test/widgets/editor_test.dart

@ -391,6 +391,22 @@ tables, and mentions. Conversion can be performed in vanilla Dart (i.e., server-
It is a complete Dart part of the popular and mature [quill-delta-to-html](https://www.npmjs.com/package/quill-delta-to-html) It is a complete Dart part of the popular and mature [quill-delta-to-html](https://www.npmjs.com/package/quill-delta-to-html)
Typescript/Javascript package. Typescript/Javascript package.
## Testing
To aid in testing applications using the editor an extension to the flutter `WidgetTester` is provided which includes methods to simplify interacting with the editor in test cases.
Import the test utilities in your test file:
```dart
import 'package:flutter_quill/flutter_quill_test.dart';
```
and then enter text using `quillEnterText`:
```dart
await tester.quillEnterText(find.byType(QuillEditor), 'test\n');
```
## Sponsors ## Sponsors
<a href="https://bulletjournal.us/home/index.html"> <a href="https://bulletjournal.us/home/index.html">

@ -0,0 +1,3 @@
library flutter_quill_test;
export 'src/test/widget_tester_extension.dart';

@ -1,8 +1,10 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_quill/src/widgets/editor.dart';
import 'package:flutter_quill/src/widgets/raw_editor.dart';
import 'package:flutter_test/flutter_test.dart'; import 'package:flutter_test/flutter_test.dart';
import '../widgets/editor.dart';
import '../widgets/raw_editor.dart';
/// Extends
extension QuillEnterText on WidgetTester { extension QuillEnterText on WidgetTester {
/// Give the QuillEditor widget specified by [finder] the focus. /// Give the QuillEditor widget specified by [finder] the focus.
Future<void> quillGiveFocus(Finder finder) { Future<void> quillGiveFocus(Finder finder) {
@ -29,12 +31,18 @@ extension QuillEnterText on WidgetTester {
Future<void> quillEnterText(Finder finder, String text) async { Future<void> quillEnterText(Finder finder, String text) async {
return TestAsyncUtils.guard(() async { return TestAsyncUtils.guard(() async {
await quillGiveFocus(finder); await quillGiveFocus(finder);
await updateEditingValue(finder, text); await quillUpdateEditingValue(finder, text);
await idle(); await idle();
}); });
} }
Future<void> updateEditingValue(Finder finder, String text) async { /// Update the text editing value of the QuillEditor widget specified by
/// [finder] with [text], as if it had been provided by the onscreen keyboard.
///
/// The widget specified by [finder] must already have focus and be a
/// [QuillEditor] or have a [QuillEditor] descendant. For example
/// `find.byType(QuillEditor)`.
Future<void> quillUpdateEditingValue(Finder finder, String text) async {
return TestAsyncUtils.guard(() async { return TestAsyncUtils.guard(() async {
final editor = state<RawEditorState>( final editor = state<RawEditorState>(
find.descendant( find.descendant(

@ -25,7 +25,7 @@ dependencies:
platform: ^3.1.0 platform: ^3.1.0
pasteboard: ^0.2.0 pasteboard: ^0.2.0
dev_dependencies: # Dependencies for testing utilities
flutter_test: flutter_test:
sdk: flutter sdk: flutter

@ -1,7 +1,7 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_quill/flutter_quill.dart' hide Text; import 'package:flutter_quill/flutter_quill.dart';
import 'package:flutter_quill/flutter_quill_test.dart';
import 'package:flutter_test/flutter_test.dart'; import 'package:flutter_test/flutter_test.dart';
import 'widget_tester_extension.dart';
void main() { void main() {
group('Bug fix', () { group('Bug fix', () {

@ -2,12 +2,10 @@ import 'dart:convert' show jsonDecode;
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter/services.dart'; import 'package:flutter/services.dart';
import 'package:flutter_quill/src/widgets/controller.dart'; import 'package:flutter_quill/flutter_quill.dart';
import 'package:flutter_quill/src/widgets/editor.dart'; import 'package:flutter_quill/flutter_quill_test.dart';
import 'package:flutter_test/flutter_test.dart'; import 'package:flutter_test/flutter_test.dart';
import '../widget_tester_extension.dart';
void main() { void main() {
late QuillController controller; late QuillController controller;

Loading…
Cancel
Save