|  | @@ -0,0 +1,73 @@
 | 
	
		
			
				|  |  | +import 'package:flowy_editor/flowy_editor.dart';
 | 
	
		
			
				|  |  | +import 'package:flowy_editor/src/render/rich_text/default_selectable.dart';
 | 
	
		
			
				|  |  | +import 'package:flowy_editor/src/render/rich_text/rich_text_style.dart';
 | 
	
		
			
				|  |  | +import 'package:flowy_editor/src/extensions/text_node_extensions.dart';
 | 
	
		
			
				|  |  | +import 'package:flutter_test/flutter_test.dart';
 | 
	
		
			
				|  |  | +import '../../infra/test_editor.dart';
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +void main() async {
 | 
	
		
			
				|  |  | +  setUpAll(() {
 | 
	
		
			
				|  |  | +    TestWidgetsFlutterBinding.ensureInitialized();
 | 
	
		
			
				|  |  | +  });
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +  group('delete_text_handler.dart', () {
 | 
	
		
			
				|  |  | +    testWidgets('Presses backspace key in empty document', (tester) async {
 | 
	
		
			
				|  |  | +      // Before
 | 
	
		
			
				|  |  | +      //
 | 
	
		
			
				|  |  | +      // [BIUS]Welcome to Appflowy 😁[BIUS]
 | 
	
		
			
				|  |  | +      //
 | 
	
		
			
				|  |  | +      // After
 | 
	
		
			
				|  |  | +      //
 | 
	
		
			
				|  |  | +      // [checkbox]Welcome to Appflowy 😁
 | 
	
		
			
				|  |  | +      //
 | 
	
		
			
				|  |  | +      const text = 'Welcome to Appflowy 😁';
 | 
	
		
			
				|  |  | +      final editor = tester.editor
 | 
	
		
			
				|  |  | +        ..insertTextNode(
 | 
	
		
			
				|  |  | +          '',
 | 
	
		
			
				|  |  | +          attributes: {
 | 
	
		
			
				|  |  | +            StyleKey.subtype: StyleKey.checkbox,
 | 
	
		
			
				|  |  | +            StyleKey.checkbox: false,
 | 
	
		
			
				|  |  | +          },
 | 
	
		
			
				|  |  | +          delta: Delta([
 | 
	
		
			
				|  |  | +            TextInsert(text, {
 | 
	
		
			
				|  |  | +              StyleKey.bold: true,
 | 
	
		
			
				|  |  | +              StyleKey.italic: true,
 | 
	
		
			
				|  |  | +              StyleKey.underline: true,
 | 
	
		
			
				|  |  | +              StyleKey.strikethrough: true,
 | 
	
		
			
				|  |  | +            }),
 | 
	
		
			
				|  |  | +          ]),
 | 
	
		
			
				|  |  | +        );
 | 
	
		
			
				|  |  | +      await editor.startTesting();
 | 
	
		
			
				|  |  | +      await editor.updateSelection(
 | 
	
		
			
				|  |  | +        Selection.single(path: [0], startOffset: 0),
 | 
	
		
			
				|  |  | +      );
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +      final selection =
 | 
	
		
			
				|  |  | +          Selection.single(path: [0], startOffset: 0, endOffset: text.length);
 | 
	
		
			
				|  |  | +      var node = editor.nodeAtPath([0]) as TextNode;
 | 
	
		
			
				|  |  | +      var state = node.key?.currentState as DefaultSelectable;
 | 
	
		
			
				|  |  | +      var checkboxWidget = find.byKey(state.iconKey!);
 | 
	
		
			
				|  |  | +      await tester.tap(checkboxWidget);
 | 
	
		
			
				|  |  | +      await tester.pumpAndSettle();
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +      expect(node.attributes.check, true);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +      expect(node.allSatisfyBoldInSelection(selection), true);
 | 
	
		
			
				|  |  | +      expect(node.allSatisfyItalicInSelection(selection), true);
 | 
	
		
			
				|  |  | +      expect(node.allSatisfyUnderlineInSelection(selection), true);
 | 
	
		
			
				|  |  | +      expect(node.allSatisfyStrikethroughInSelection(selection), true);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +      node = editor.nodeAtPath([0]) as TextNode;
 | 
	
		
			
				|  |  | +      state = node.key?.currentState as DefaultSelectable;
 | 
	
		
			
				|  |  | +      await tester.ensureVisible(find.byKey(state.iconKey!));
 | 
	
		
			
				|  |  | +      await tester.tap(find.byKey(state.iconKey!));
 | 
	
		
			
				|  |  | +      await tester.pump();
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +      expect(node.attributes.check, false);
 | 
	
		
			
				|  |  | +      expect(node.allSatisfyBoldInSelection(selection), true);
 | 
	
		
			
				|  |  | +      expect(node.allSatisfyItalicInSelection(selection), true);
 | 
	
		
			
				|  |  | +      expect(node.allSatisfyUnderlineInSelection(selection), true);
 | 
	
		
			
				|  |  | +      expect(node.allSatisfyStrikethroughInSelection(selection), true);
 | 
	
		
			
				|  |  | +    });
 | 
	
		
			
				|  |  | +  });
 | 
	
		
			
				|  |  | +}
 |