renamedelta.js 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110
  1. /**
  2. * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
  3. * For licensing, see LICENSE.md.
  4. */
  5. import transformations from '../../../../src/model/delta/basic-transformations';
  6. /*jshint unused: false*/
  7. import deltaTransform from '../../../../src/model/delta/transform';
  8. const transform = deltaTransform.transform;
  9. import Element from '../../../../src/model/element';
  10. import Position from '../../../../src/model/position';
  11. import RenameDelta from '../../../../src/model/delta/renamedelta';
  12. import RenameOperation from '../../../../src/model/operation/renameoperation';
  13. import {
  14. getFilledDocument,
  15. expectDelta,
  16. getSplitDelta
  17. } from '../../../../tests/model/delta/transform/_utils/utils';
  18. describe( 'transform', () => {
  19. let doc, root, baseVersion;
  20. beforeEach( () => {
  21. doc = getFilledDocument();
  22. root = doc.getRoot();
  23. baseVersion = doc.version;
  24. } );
  25. describe( 'RenameDelta by', () => {
  26. describe( 'SplitDelta', () => {
  27. it( 'split element is renamed', () => {
  28. let renameDelta = new RenameDelta();
  29. renameDelta.addOperation( new RenameOperation(
  30. new Position( root, [ 3, 3 ] ),
  31. 'p',
  32. 'li',
  33. baseVersion
  34. ) );
  35. let splitPosition = new Position( root, [ 3, 3, 3 ] );
  36. let splitDelta = getSplitDelta( splitPosition, new Element( 'p' ), 9, baseVersion );
  37. let transformed = transform( renameDelta, splitDelta );
  38. baseVersion = splitDelta.length;
  39. expect( transformed.length ).to.equal( 2 );
  40. expectDelta( transformed[ 0 ], {
  41. type: RenameDelta,
  42. operations: [
  43. {
  44. type: RenameOperation,
  45. oldName: 'p',
  46. newName: 'li',
  47. position: new Position( root, [ 3, 3 ] )
  48. }
  49. ]
  50. } );
  51. expectDelta( transformed[ 1 ], {
  52. type: RenameDelta,
  53. operations: [
  54. {
  55. type: RenameOperation,
  56. oldName: 'p',
  57. newName: 'li',
  58. position: new Position( root, [ 3, 4 ] )
  59. }
  60. ]
  61. } );
  62. } );
  63. it( 'split element is different than renamed element', () => {
  64. let renameDelta = new RenameDelta();
  65. renameDelta.addOperation( new RenameOperation(
  66. new Position( root, [ 3, 3 ] ),
  67. 'p',
  68. 'li',
  69. baseVersion
  70. ) );
  71. let splitPosition = new Position( root, [ 3, 2, 1 ] );
  72. let splitDelta = getSplitDelta( splitPosition, new Element( 'p' ), 9, baseVersion );
  73. let transformed = transform( renameDelta, splitDelta );
  74. baseVersion = splitDelta.length;
  75. expect( transformed.length ).to.equal( 1 );
  76. expectDelta( transformed[ 0 ], {
  77. type: RenameDelta,
  78. operations: [
  79. {
  80. type: RenameOperation,
  81. oldName: 'p',
  82. newName: 'li',
  83. position: new Position( root, [ 3, 4 ] )
  84. }
  85. ]
  86. } );
  87. } );
  88. } );
  89. } );
  90. } );