|
@@ -16,14 +16,14 @@ import Strikethrough from '@ckeditor/ckeditor5-basic-styles/src/strikethrough';
|
|
|
import PasteFromOffice from '../../../src/pastefromoffice';
|
|
import PasteFromOffice from '../../../src/pastefromoffice';
|
|
|
|
|
|
|
|
import { setData } from '@ckeditor/ckeditor5-engine/src/dev-utils/model';
|
|
import { setData } from '@ckeditor/ckeditor5-engine/src/dev-utils/model';
|
|
|
-import { expectPaste } from '../../_utils/utils';
|
|
|
|
|
import { getFixtures } from '../../_utils/fixtures';
|
|
import { getFixtures } from '../../_utils/fixtures';
|
|
|
|
|
+import { expectModel } from '../../_utils/utils';
|
|
|
|
|
|
|
|
describe( 'Basic Styles – integration', () => {
|
|
describe( 'Basic Styles – integration', () => {
|
|
|
- let element, editor, fixtures;
|
|
|
|
|
|
|
+ let element, editor, input;
|
|
|
|
|
|
|
|
before( () => {
|
|
before( () => {
|
|
|
- fixtures = getFixtures( 'basic-styles' ).input;
|
|
|
|
|
|
|
+ input = getFixtures( 'basic-styles' ).input;
|
|
|
|
|
|
|
|
element = document.createElement( 'div' );
|
|
element = document.createElement( 'div' );
|
|
|
|
|
|
|
@@ -46,244 +46,63 @@ describe( 'Basic Styles – integration', () => {
|
|
|
element.remove();
|
|
element.remove();
|
|
|
} );
|
|
} );
|
|
|
|
|
|
|
|
- // Pastes: 'Some text <b>with bold</b>.'
|
|
|
|
|
- // Input same for: Chrome, Firefox and Edge.
|
|
|
|
|
- describe( 'bold within text', () => {
|
|
|
|
|
- it( 'pastes in the empty editor', () => {
|
|
|
|
|
- expectPaste( editor, fixtures.boldWithinText, '<paragraph>Some text <$text bold="true">with bold</$text>.[]</paragraph>' );
|
|
|
|
|
- } );
|
|
|
|
|
-
|
|
|
|
|
- it( 'pastes in the paragraph', () => {
|
|
|
|
|
- setData( editor.model, '<paragraph>More [] text</paragraph>' );
|
|
|
|
|
-
|
|
|
|
|
- expectPaste( editor, fixtures.boldWithinText,
|
|
|
|
|
- '<paragraph>More Some text <$text bold="true">with bold</$text>.[] text</paragraph>' );
|
|
|
|
|
- } );
|
|
|
|
|
-
|
|
|
|
|
- it( 'pastes in the different block context', () => {
|
|
|
|
|
- setData( editor.model, '<heading1>More [] text</heading1>' );
|
|
|
|
|
-
|
|
|
|
|
- expectPaste( editor, fixtures.boldWithinText,
|
|
|
|
|
- '<heading1>More Some text <$text bold="true">with bold</$text>.[] text</heading1>' );
|
|
|
|
|
- } );
|
|
|
|
|
-
|
|
|
|
|
- it( 'pastes in the inline styling context', () => {
|
|
|
|
|
- setData( editor.model, '<paragraph><$text italic="true">Ita[]lic</$text></paragraph>' );
|
|
|
|
|
-
|
|
|
|
|
- expectPaste( editor, fixtures.boldWithinText, '<paragraph><$text italic="true">Ita</$text>Some text ' +
|
|
|
|
|
- '<$text bold="true">with bold</$text>.[]<$text italic="true">lic</$text></paragraph>' );
|
|
|
|
|
- } );
|
|
|
|
|
-
|
|
|
|
|
- it( 'pastes inside another bold element', () => {
|
|
|
|
|
- setData( editor.model, '<paragraph><$text bold="true">Ita[]lic</$text></paragraph>' );
|
|
|
|
|
|
|
+ // Pastes:
|
|
|
|
|
+ // <p>Some text <b>with bold</b>.</p>
|
|
|
|
|
+ it( 'pastes bold within text', () => {
|
|
|
|
|
+ const expected = '<paragraph>Some text <$text bold="true">with bold</$text>.</paragraph>';
|
|
|
|
|
|
|
|
- expectPaste( editor, fixtures.boldWithinText, '<paragraph><$text bold="true">Ita</$text>Some text ' +
|
|
|
|
|
- '<$text bold="true">with bold</$text>.[]<$text bold="true">lic</$text></paragraph>' );
|
|
|
|
|
- } );
|
|
|
|
|
|
|
+ expectModel( editor, input.boldWithinText, expected );
|
|
|
} );
|
|
} );
|
|
|
|
|
|
|
|
- // Pastes: '<i>Italic</i> text.'
|
|
|
|
|
- // Input same for: Chrome, Firefox and Edge.
|
|
|
|
|
- describe( 'italic starting text', () => {
|
|
|
|
|
- it( 'pastes in the empty editor', () => {
|
|
|
|
|
- expectPaste( editor, fixtures.italicStartingText, '<paragraph><$text italic="true">Italic</$text> text.[]</paragraph>' );
|
|
|
|
|
- } );
|
|
|
|
|
-
|
|
|
|
|
- it( 'pastes in the paragraph', () => {
|
|
|
|
|
- setData( editor.model, '<paragraph>More [] text</paragraph>' );
|
|
|
|
|
-
|
|
|
|
|
- expectPaste( editor, fixtures.italicStartingText,
|
|
|
|
|
- '<paragraph>More <$text italic="true">Italic</$text> text.[] text</paragraph>' );
|
|
|
|
|
- } );
|
|
|
|
|
-
|
|
|
|
|
- it( 'pastes in the different block context', () => {
|
|
|
|
|
- setData( editor.model, '<heading1>More [] text</heading1>' );
|
|
|
|
|
-
|
|
|
|
|
- expectPaste( editor, fixtures.italicStartingText,
|
|
|
|
|
- '<heading1>More <$text italic="true">Italic</$text> text.[] text</heading1>' );
|
|
|
|
|
- } );
|
|
|
|
|
-
|
|
|
|
|
- it( 'pastes in the inline styling context', () => {
|
|
|
|
|
- setData( editor.model, '<paragraph><$text bold="true">Bol[]d</$text></paragraph>' );
|
|
|
|
|
-
|
|
|
|
|
- expectPaste( editor, fixtures.italicStartingText, '<paragraph><$text bold="true">Bol</$text><$text italic="true">' +
|
|
|
|
|
- 'Italic</$text> text.[]<$text bold="true">d</$text></paragraph>' );
|
|
|
|
|
- } );
|
|
|
|
|
-
|
|
|
|
|
- it( 'pastes inside another italic element', () => {
|
|
|
|
|
- setData( editor.model, '<paragraph><$text italic="true">Italic[]</$text></paragraph>' );
|
|
|
|
|
|
|
+ // Pastes:
|
|
|
|
|
+ // <p><i>Italic</i> text.</p>
|
|
|
|
|
+ it( 'pastes italic starting text', () => {
|
|
|
|
|
+ const expected = '<paragraph><$text italic="true">Italic</$text> text.</paragraph>';
|
|
|
|
|
|
|
|
- expectPaste( editor, fixtures.italicStartingText, '<paragraph><$text italic="true">ItalicItalic</$text> text.[]</paragraph>' );
|
|
|
|
|
- } );
|
|
|
|
|
|
|
+ expectModel( editor, input.italicStartingText, expected );
|
|
|
} );
|
|
} );
|
|
|
|
|
|
|
|
- // Pastes: '<u>Whole text underlined</u>'
|
|
|
|
|
- // Input same for: Chrome, Firefox and Edge.
|
|
|
|
|
- describe( 'underlined text', () => {
|
|
|
|
|
- it( 'pastes in the empty editor', () => {
|
|
|
|
|
- expectPaste( editor, fixtures.underlinedText,
|
|
|
|
|
- '<paragraph><$text underline="true">Whole text underlined[]</$text></paragraph>' );
|
|
|
|
|
- } );
|
|
|
|
|
-
|
|
|
|
|
- it( 'pastes in the paragraph', () => {
|
|
|
|
|
- setData( editor.model, '<paragraph>More [] text</paragraph>' );
|
|
|
|
|
-
|
|
|
|
|
- expectPaste( editor, fixtures.underlinedText, '<paragraph>More <$text underline="true">Whole text underlined[]' +
|
|
|
|
|
- '</$text> text</paragraph>' );
|
|
|
|
|
- } );
|
|
|
|
|
-
|
|
|
|
|
- it( 'pastes in the different block context', () => {
|
|
|
|
|
- setData( editor.model, '<heading1>More [] text</heading1>' );
|
|
|
|
|
-
|
|
|
|
|
- expectPaste( editor, fixtures.underlinedText,
|
|
|
|
|
- '<heading1>More <$text underline="true">Whole text underlined[]</$text> text</heading1>' );
|
|
|
|
|
- } );
|
|
|
|
|
-
|
|
|
|
|
- it( 'pastes in the inline styling context', () => {
|
|
|
|
|
- setData( editor.model, '<paragraph><$text bold="true">Bol[]d</$text></paragraph>' );
|
|
|
|
|
-
|
|
|
|
|
- expectPaste( editor, fixtures.underlinedText, '<paragraph><$text bold="true">Bol</$text><$text underline="true">' +
|
|
|
|
|
- 'Whole text underlined[]</$text><$text bold="true">d</$text></paragraph>' );
|
|
|
|
|
- } );
|
|
|
|
|
-
|
|
|
|
|
- it( 'pastes inside another underlined element', () => {
|
|
|
|
|
- setData( editor.model, '<paragraph><$text underline="true">Under []line</$text></paragraph>' );
|
|
|
|
|
|
|
+ // Pastes:
|
|
|
|
|
+ // <p><u>Whole text underlined</u></p>
|
|
|
|
|
+ it( 'pastes underlined text', () => {
|
|
|
|
|
+ const expected = '<paragraph><$text underline="true">Whole text underlined</$text></paragraph>';
|
|
|
|
|
|
|
|
- expectPaste( editor, fixtures.underlinedText, '<paragraph><$text underline="true">Under Whole text underlined[]' +
|
|
|
|
|
- 'line</$text></paragraph>' );
|
|
|
|
|
- } );
|
|
|
|
|
|
|
+ expectModel( editor, input.underlinedText, expected );
|
|
|
} );
|
|
} );
|
|
|
|
|
|
|
|
- // Pastes: 'Text <s>incorrect</s>'
|
|
|
|
|
- // Input same for: Chrome, Firefox and Edge.
|
|
|
|
|
- describe( 'strikethrough ending text', () => {
|
|
|
|
|
- it( 'pastes in the empty editor', () => {
|
|
|
|
|
- expectPaste( editor, fixtures.strikethroughEndingText,
|
|
|
|
|
- '<paragraph>Text <$text strikethrough="true">incorrect[]</$text></paragraph>' );
|
|
|
|
|
- } );
|
|
|
|
|
-
|
|
|
|
|
- it( 'pastes in the paragraph', () => {
|
|
|
|
|
- setData( editor.model, '<paragraph>More [] text</paragraph>' );
|
|
|
|
|
-
|
|
|
|
|
- expectPaste( editor, fixtures.strikethroughEndingText, '<paragraph>More Text <$text strikethrough="true">incorrect[]' +
|
|
|
|
|
- '</$text> text</paragraph>' );
|
|
|
|
|
- } );
|
|
|
|
|
-
|
|
|
|
|
- it( 'pastes in the different block context', () => {
|
|
|
|
|
- setData( editor.model, '<heading1>More [] text</heading1>' );
|
|
|
|
|
-
|
|
|
|
|
- expectPaste( editor, fixtures.strikethroughEndingText, '<heading1>More Text <$text strikethrough="true">incorrect[]' +
|
|
|
|
|
- '</$text> text</heading1>' );
|
|
|
|
|
- } );
|
|
|
|
|
-
|
|
|
|
|
- it( 'pastes in the inline styling context', () => {
|
|
|
|
|
- setData( editor.model, '<paragraph><$text bold="true">Bol[]d</$text></paragraph>' );
|
|
|
|
|
-
|
|
|
|
|
- expectPaste( editor, fixtures.strikethroughEndingText, '<paragraph><$text bold="true">Bol</$text>' +
|
|
|
|
|
- 'Text <$text strikethrough="true">incorrect[]</$text><$text bold="true">d</$text></paragraph>' );
|
|
|
|
|
- } );
|
|
|
|
|
-
|
|
|
|
|
- it( 'pastes inside another strikethrough element', () => {
|
|
|
|
|
- setData( editor.model, '<paragraph><$text strikethrough="true">[]Foo</$text></paragraph>' );
|
|
|
|
|
|
|
+ // Pastes:
|
|
|
|
|
+ // <p>Text <s>incorrect</s></p>
|
|
|
|
|
+ it( 'pastes strikethrough ending text', () => {
|
|
|
|
|
+ const expected = '<paragraph>Text <$text strikethrough="true">incorrect</$text></paragraph>';
|
|
|
|
|
|
|
|
- expectPaste( editor, fixtures.strikethroughEndingText, '<paragraph>Text <$text strikethrough="true">incorrect[]Foo' +
|
|
|
|
|
- '</$text></paragraph>' );
|
|
|
|
|
- } );
|
|
|
|
|
|
|
+ expectModel( editor, input.strikethroughEndingText, expected );
|
|
|
} );
|
|
} );
|
|
|
|
|
|
|
|
- // Pastes: 'Text <b><u>containi<s>ng</s></u></b><s><u> multi</u>ple</s><i>styling</i>.'
|
|
|
|
|
- // Input same for: Chrome, Firefox and Edge.
|
|
|
|
|
- describe( 'mulitple styles single line', () => {
|
|
|
|
|
- it( 'pastes in the empty editor', () => {
|
|
|
|
|
- expectPaste( editor, fixtures.multipleStylesSingleLine, '<paragraph>Text ' +
|
|
|
|
|
- '<$text bold="true" underline="true">containi</$text>' +
|
|
|
|
|
- '<$text bold="true" strikethrough="true" underline="true">ng</$text>' +
|
|
|
|
|
- '<$text strikethrough="true" underline="true"> multi</$text>' +
|
|
|
|
|
- '<$text strikethrough="true">ple </$text>' +
|
|
|
|
|
- '<$text italic="true">styling</$text>.[]</paragraph>' );
|
|
|
|
|
- } );
|
|
|
|
|
-
|
|
|
|
|
- it( 'pastes in the paragraph', () => {
|
|
|
|
|
- setData( editor.model, '<paragraph>More [] text</paragraph>' );
|
|
|
|
|
-
|
|
|
|
|
- expectPaste( editor, fixtures.multipleStylesSingleLine, '<paragraph>More Text ' +
|
|
|
|
|
- '<$text bold="true" underline="true">containi</$text>' +
|
|
|
|
|
- '<$text bold="true" strikethrough="true" underline="true">ng</$text>' +
|
|
|
|
|
- '<$text strikethrough="true" underline="true"> multi</$text>' +
|
|
|
|
|
- '<$text strikethrough="true">ple </$text>' +
|
|
|
|
|
- '<$text italic="true">styling</$text>.[] text</paragraph>' );
|
|
|
|
|
- } );
|
|
|
|
|
-
|
|
|
|
|
- it( 'pastes in the different block context', () => {
|
|
|
|
|
- setData( editor.model, '<heading1>More [] text</heading1>' );
|
|
|
|
|
-
|
|
|
|
|
- expectPaste( editor, fixtures.multipleStylesSingleLine, '<heading1>More Text ' +
|
|
|
|
|
- '<$text bold="true" underline="true">containi</$text>' +
|
|
|
|
|
- '<$text bold="true" strikethrough="true" underline="true">ng</$text>' +
|
|
|
|
|
- '<$text strikethrough="true" underline="true"> multi</$text>' +
|
|
|
|
|
- '<$text strikethrough="true">ple </$text>' +
|
|
|
|
|
- '<$text italic="true">styling</$text>.[] text</heading1>' );
|
|
|
|
|
- } );
|
|
|
|
|
-
|
|
|
|
|
- it( 'pastes in the inline styling context', () => {
|
|
|
|
|
- setData( editor.model, '<paragraph><$text bold="true">Bol[]d</$text></paragraph>' );
|
|
|
|
|
-
|
|
|
|
|
- expectPaste( editor, fixtures.multipleStylesSingleLine, '<paragraph><$text bold="true">Bol</$text>Text ' +
|
|
|
|
|
- '<$text bold="true" underline="true">containi</$text>' +
|
|
|
|
|
- '<$text bold="true" strikethrough="true" underline="true">ng</$text>' +
|
|
|
|
|
- '<$text strikethrough="true" underline="true"> multi</$text>' +
|
|
|
|
|
- '<$text strikethrough="true">ple </$text>' +
|
|
|
|
|
- '<$text italic="true">styling</$text>.[]' +
|
|
|
|
|
- '<$text bold="true">d</$text></paragraph>' );
|
|
|
|
|
- } );
|
|
|
|
|
|
|
+ // Pastes:
|
|
|
|
|
+ // <p>Text <b><u>containi<s>ng</s></u></b><s><u> multi</u>ple</s><i>styling</i>.</p>
|
|
|
|
|
+ it( 'pastes mulitple styles single line', () => {
|
|
|
|
|
+ const expected = '<paragraph>Text ' +
|
|
|
|
|
+ '<$text bold="true" underline="true">containi</$text>' +
|
|
|
|
|
+ '<$text bold="true" strikethrough="true" underline="true">ng</$text>' +
|
|
|
|
|
+ '<$text strikethrough="true" underline="true"> multi</$text>' +
|
|
|
|
|
+ '<$text strikethrough="true">ple </$text>' +
|
|
|
|
|
+ '<$text italic="true">styling</$text>.</paragraph>';
|
|
|
|
|
+
|
|
|
|
|
+ expectModel( editor, input.multipleStylesSingleLine, expected );
|
|
|
} );
|
|
} );
|
|
|
|
|
|
|
|
// Pastes:
|
|
// Pastes:
|
|
|
// <p>Line <b>bold</b> and <i>italics</i></p>
|
|
// <p>Line <b>bold</b> and <i>italics</i></p>
|
|
|
// <p>Line <b><u>foo</u></b><u> bar</u></p>
|
|
// <p>Line <b><u>foo</u></b><u> bar</u></p>
|
|
|
// <p><s>Third</s> line <b>styling, <i>space on e</i>nd </b></p>
|
|
// <p><s>Third</s> line <b>styling, <i>space on e</i>nd </b></p>
|
|
|
- // Input same for: Chrome, Firefox and Edge.
|
|
|
|
|
- describe( 'mulitple styles multiline', () => {
|
|
|
|
|
- it( 'pastes in the empty editor', () => {
|
|
|
|
|
- expectPaste( editor, fixtures.multipleStylesMultiline, '<paragraph>Line ' +
|
|
|
|
|
- '<$text bold="true">bold</$text> and <$text italic="true">italics</$text></paragraph>' +
|
|
|
|
|
- '<paragraph>Line <$text bold="true" underline="true">foo</$text><$text underline="true"> bar</$text></paragraph>' +
|
|
|
|
|
- '<paragraph><$text strikethrough="true">Third</$text> line <$text bold="true">styling, </$text>' +
|
|
|
|
|
- '<$text bold="true" italic="true">space on e</$text>' +
|
|
|
|
|
- '<$text bold="true">nd []</$text></paragraph>' ); // The last space '...nd </b></p>' goes missing.
|
|
|
|
|
- } );
|
|
|
|
|
-
|
|
|
|
|
- it( 'pastes in the paragraph', () => {
|
|
|
|
|
- setData( editor.model, '<paragraph>More [] text</paragraph>' );
|
|
|
|
|
-
|
|
|
|
|
- expectPaste( editor, fixtures.multipleStylesMultiline, '<paragraph>More Line ' +
|
|
|
|
|
- '<$text bold="true">bold</$text> and <$text italic="true">italics</$text></paragraph>' +
|
|
|
|
|
- '<paragraph>Line <$text bold="true" underline="true">foo</$text><$text underline="true"> bar</$text></paragraph>' +
|
|
|
|
|
- '<paragraph><$text strikethrough="true">Third</$text> line <$text bold="true">styling, </$text>' +
|
|
|
|
|
- '<$text bold="true" italic="true">space on e</$text>' +
|
|
|
|
|
- '<$text bold="true">nd []</$text> text</paragraph>' ); // The last space '...nd </b></p>' goes missing.
|
|
|
|
|
- } );
|
|
|
|
|
-
|
|
|
|
|
- it( 'pastes in the different block context', () => {
|
|
|
|
|
- setData( editor.model, '<heading1>More [] text</heading1>' );
|
|
|
|
|
-
|
|
|
|
|
- expectPaste( editor, fixtures.multipleStylesMultiline, '<heading1>More Line ' +
|
|
|
|
|
- '<$text bold="true">bold</$text> and <$text italic="true">italics</$text></heading1>' +
|
|
|
|
|
- '<paragraph>Line <$text bold="true" underline="true">foo</$text><$text underline="true"> bar</$text></paragraph>' +
|
|
|
|
|
- '<paragraph><$text strikethrough="true">Third</$text> line <$text bold="true">styling, </$text>' +
|
|
|
|
|
- '<$text bold="true" italic="true">space on e</$text>' +
|
|
|
|
|
- '<$text bold="true">nd []</$text> text</paragraph>' ); // The last space '...nd </b></p>' goes missing.
|
|
|
|
|
- } );
|
|
|
|
|
-
|
|
|
|
|
- it( 'pastes in the inline styling context', () => {
|
|
|
|
|
- setData( editor.model, '<paragraph><$text bold="true">Bol[]d</$text></paragraph>' );
|
|
|
|
|
-
|
|
|
|
|
- expectPaste( editor, fixtures.multipleStylesMultiline, '<paragraph><$text bold="true">Bol</$text>Line ' +
|
|
|
|
|
- '<$text bold="true">bold</$text> and <$text italic="true">italics</$text></paragraph>' +
|
|
|
|
|
- '<paragraph>Line <$text bold="true" underline="true">foo</$text><$text underline="true"> bar</$text></paragraph>' +
|
|
|
|
|
- '<paragraph><$text strikethrough="true">Third</$text> line <$text bold="true">styling, </$text>' +
|
|
|
|
|
- '<$text bold="true" italic="true">space on e</$text>' +
|
|
|
|
|
- '<$text bold="true">nd []d</$text></paragraph>' ); // The last space '...nd </b></p>' goes missing.
|
|
|
|
|
- } );
|
|
|
|
|
|
|
+ it( 'pastes mulitple styles multiline', () => {
|
|
|
|
|
+ const expected = '<paragraph>Line ' +
|
|
|
|
|
+ '<$text bold="true">bold</$text> and <$text italic="true">italics</$text></paragraph>' +
|
|
|
|
|
+ '<paragraph>Line <$text bold="true" underline="true">foo</$text><$text underline="true"> bar</$text></paragraph>' +
|
|
|
|
|
+ '<paragraph><$text strikethrough="true">Third</$text> line <$text bold="true">styling, </$text>' +
|
|
|
|
|
+ '<$text bold="true" italic="true">space on e</$text>' +
|
|
|
|
|
+ '<$text bold="true">nd </$text></paragraph>';
|
|
|
|
|
+
|
|
|
|
|
+ expectModel( editor, input.multipleStylesMultiline, expected );
|
|
|
} );
|
|
} );
|
|
|
} );
|
|
} );
|