zefyr

delete_rules_test.dart 1.7KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. // Copyright (c) 2018, the Zefyr project authors. Please see the AUTHORS file
  2. // for details. All rights reserved. Use of this source code is governed by a
  3. // BSD-style license that can be found in the LICENSE file.
  4. import 'package:test/test.dart';
  5. import 'package:quill_delta/quill_delta.dart';
  6. import 'package:notus/notus.dart';
  7. final ul = NotusAttribute.ul.toJson();
  8. final bold = NotusAttribute.bold.toJson();
  9. void main() {
  10. group('$PreserveLineStyleOnMergeRule', () {
  11. final rule = new PreserveLineStyleOnMergeRule();
  12. test('preserves block style', () {
  13. final ul = NotusAttribute.ul.toJson();
  14. final doc = new Delta()
  15. ..insert('Title\nOne')
  16. ..insert('\n', ul)
  17. ..insert('Two\n');
  18. final actual = rule.apply(doc, 9, 1);
  19. final expected = new Delta()
  20. ..retain(9)
  21. ..delete(1)
  22. ..retain(3)
  23. ..retain(1, ul);
  24. expect(actual, expected);
  25. });
  26. test('resets block style', () {
  27. final unsetUl = NotusAttribute.block.unset.toJson();
  28. final doc = new Delta()
  29. ..insert('Title\nOne')
  30. ..insert('\n', NotusAttribute.ul.toJson())
  31. ..insert('Two\n');
  32. final actual = rule.apply(doc, 5, 1);
  33. final expected = new Delta()
  34. ..retain(5)
  35. ..delete(1)
  36. ..retain(3)
  37. ..retain(1, unsetUl);
  38. expect(actual, expected);
  39. });
  40. });
  41. group('$CatchAllDeleteRule', () {
  42. final rule = new CatchAllDeleteRule();
  43. test('applies change as-is', () {
  44. final doc = new Delta()..insert('Document\n');
  45. final actual = rule.apply(doc, 3, 5);
  46. final expected = new Delta()
  47. ..retain(3)
  48. ..delete(5);
  49. expect(actual, expected);
  50. });
  51. });
  52. }