Parcourir la source

Tests: Lists normalization unit tests.

Krzysztof Krztoń il y a 7 ans
Parent
commit
e0807da79d

+ 19 - 0
packages/ckeditor5-paste-from-office/tests/_data/list/heading1/normalized.word2016.html

@@ -0,0 +1,19 @@
+<ol>
+	<li style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:l0 level1 lfo1'>
+		<![if !supportLists]>
+		<span lang=PL style='mso-fareast-font-family:"Calibri Light";mso-fareast-theme-font:major-latin;mso-bidi-font-family:"Calibri Light";mso-bidi-theme-font:major-latin;mso-ansi-language:PL'></span>
+		<![endif]>
+		<span lang=PL style='mso-ansi-language:PL'>
+			H1 1<o:p></o:p>
+		</span>
+	</li>
+
+	<li style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:l0 level1 lfo1'>
+		<![if !supportLists]>
+		<span lang=PL style='mso-fareast-font-family:"Calibri Light";mso-fareast-theme-font:major-latin;mso-bidi-font-family:"Calibri Light";mso-bidi-theme-font:major-latin;mso-ansi-language:PL'></span>
+		<![endif]>
+		<span lang=PL style='mso-ansi-language:PL'>
+			H1 2<o:p></o:p>
+		</span>
+	</li>
+</ol>

+ 21 - 0
packages/ckeditor5-paste-from-office/tests/_data/list/heading3-styled/normalized.word2016.html

@@ -0,0 +1,21 @@
+<ul>
+	<li style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:l0 level1 lfo1'>
+		<![if !supportLists]>
+		<span lang=PL style='font-family:Symbol;mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;mso-ansi-language:PL'></span>
+		<![endif]>
+		<span lang=PL style='mso-ansi-language:PL'>
+			H<b style='mso-bidi-font-weight:normal'>2 1</b><o:p></o:p>
+		</span>
+	</li>
+
+	<li style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:l0 level1 lfo1'>
+		<![if !supportLists]>
+		<span lang=PL style='font-family:Symbol;mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;mso-ansi-language:PL'></span>
+		<![endif]>
+		<i style='mso-bidi-font-style:normal'>
+			<u><span lang=PL style='mso-ansi-language:PL'>H</span></u>
+		</i>
+		<u><span lang=PL style='mso-ansi-language:PL'>2</span></u>
+		<span lang=PL style='mso-ansi-language:PL'> 2<o:p></o:p></span>
+	</li>
+</ul>

+ 10 - 0
packages/ckeditor5-paste-from-office/tests/_data/list/heading7/normalized.word2016.html

@@ -0,0 +1,10 @@
+<ol>
+	<li class=MsoHeading7 style='margin-left:18.0pt;text-indent:-18.0pt;mso-list:l0 level1 lfo1'>
+		<![if !supportLists]>
+		<span lang=PL style='mso-fareast-font-family:"Calibri Light";mso-fareast-theme-font:major-latin;mso-bidi-font-family:"Calibri Light";mso-bidi-theme-font:major-latin;mso-ansi-language:PL'></span>
+		<![endif]>
+		<span lang=PL style='mso-ansi-language:PL'>
+			H 7<o:p></o:p>
+		</span>
+	</li>
+</ol>

+ 137 - 0
packages/ckeditor5-paste-from-office/tests/_data/list/many-one-item/normalized.word2016.html

@@ -0,0 +1,137 @@
+<ol>
+	<li class=MsoListParagraphCxSpFirst style='text-indent:-18.0pt;mso-list:l2 level1 lfo1'>
+		<![if !supportLists]>
+		<span lang=PL style='mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin;mso-ansi-language:PL'></span>
+		<![endif]>
+		<span lang=PL style='mso-ansi-language:PL'>
+			A<o:p></o:p>
+		</span>
+	</li>
+</ol>
+
+<ol>
+	<li class=MsoListParagraphCxSpMiddle style='margin-left:54.0pt;mso-add-space:auto;text-indent:-18.0pt;mso-list:l5 level1 lfo2'>
+		<![if !supportLists]>
+		<span lang=PL style='mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin;mso-ansi-language:PL'></span>
+		<![endif]>
+		<span lang=PL style='mso-ansi-language:PL'>
+			B<o:p></o:p>
+		</span>
+	</li>
+</ol>
+
+<ol>
+	<li class=MsoListParagraphCxSpMiddle style='text-indent:-36.0pt;mso-text-indent-alt:-18.0pt;mso-list:l7 level1 lfo3'>
+		<![if !supportLists]>
+		<span lang=PL style='mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin;mso-ansi-language:PL'></span>
+		<![endif]>
+		<span lang=PL style='mso-ansi-language:PL'>
+			C<o:p></o:p>
+		</span>
+	</li>
+</ol>
+
+<ol>
+	<li class=MsoListParagraphCxSpMiddle style='text-indent:-18.0pt;mso-list:l10 level1 lfo4'>
+		<![if !supportLists]>
+		<span lang=PL style='mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin;mso-ansi-language:PL'></span>
+		<![endif]>
+		<span lang=PL style='mso-ansi-language:PL'>
+			D<o:p></o:p>
+		</span>
+	</li>
+</ol>
+
+<ol>
+	<li class=MsoListParagraphCxSpMiddle style='text-indent:-18.0pt;mso-list:l9 level1 lfo5'>
+		<![if !supportLists]>
+		<span lang=PL style='mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin;mso-ansi-language:PL'></span>
+		<![endif]>
+		<span lang=PL style='mso-ansi-language:PL'>
+			E<o:p></o:p>
+		</span>
+	</li>
+</ol>
+
+<ol>
+	<li class=MsoListParagraphCxSpMiddle style='text-indent:-18.0pt;mso-list:l4 level1 lfo6'>
+		<![if !supportLists]>
+		<span lang=PL style='mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin;mso-ansi-language:PL'></span>
+		<![endif]>
+		<span lang=PL style='mso-ansi-language:PL'>
+			F<o:p></o:p>
+		</span>
+	</li>
+</ol>
+
+<ol>
+	<li class=MsoListParagraphCxSpLast style='text-indent:-36.0pt;mso-text-indent-alt:-18.0pt;mso-list:l6 level1 lfo7'>
+		<![if !supportLists]>
+		<span lang=PL style='mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin;mso-ansi-language:PL'></span>
+		<![endif]>
+		<span lang=PL style='mso-ansi-language:PL'>
+			G<o:p></o:p>
+		</span>
+	</li>
+</ol>
+
+<p class=MsoNormal><span lang=PL style='mso-ansi-language:PL'><o:p>&nbsp;</o:p></span></p>
+
+<ul>
+	<li class=MsoListParagraphCxSpFirst style='text-indent:-18.0pt;mso-list:l1 level1 lfo8'>
+		<![if !supportLists]>
+		<span lang=PL style='font-family:Symbol;mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;mso-ansi-language:PL'></span>
+		<![endif]>
+		<span lang=PL style='mso-ansi-language:PL'>
+			H<o:p></o:p>
+		</span>
+	</li>
+</ul>
+
+<ul>
+	<li class=MsoListParagraphCxSpLast style='text-indent:-18.0pt;mso-list:l3 level1 lfo9'>
+		<![if !supportLists]>
+		<span lang=PL style='font-family:"Courier New";mso-fareast-font-family:"Courier New";mso-ansi-language:PL'></span>
+		<![endif]>
+		<span lang=PL style='mso-ansi-language:PL'>
+			I<o:p></o:p>
+		</span>
+	</li>
+</ul>
+
+<p class=MsoNormal><span lang=PL style='mso-ansi-language:PL'><o:p>&nbsp;</o:p></span></p>
+
+<ul>
+	<li class=MsoListParagraphCxSpFirst style='text-indent:-18.0pt;mso-list:l8 level1 lfo10'>
+		<![if !supportLists]>
+		<span lang=PL style='font-family:Wingdings;mso-fareast-font-family:Wingdings;mso-bidi-font-family:Wingdings;mso-ansi-language:PL'></span>
+		<![endif]>
+		<span lang=PL style='mso-ansi-language:PL'>
+			J<o:p></o:p>
+		</span>
+	</li>
+</ul>
+
+<ul>
+	<li class=MsoListParagraphCxSpLast style='text-indent:-18.0pt;mso-list:l11 level1 lfo11'>
+		<![if !supportLists]>
+		<span lang=PL style='font-family:Symbol;mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;mso-ansi-language:PL'></span>
+		<![endif]>
+		<span lang=PL style='mso-ansi-language:PL'>
+			k<o:p></o:p>
+		</span>
+	</li>
+</ul>
+
+<p class=MsoNormal style='margin-left:18.0pt'><span lang=PL style='mso-ansi-language:PL'><o:p>&nbsp;</o:p></span></p>
+
+<ol>
+	<li class=MsoListParagraph style='margin-left:18.0pt;mso-add-space:auto;text-indent:-18.0pt;mso-list:l0 level1 lfo12'>
+		<![if !supportLists]>
+		<span lang=PL style='mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin;mso-ansi-language:PL'></span>
+		<![endif]>
+		<span lang=PL style='mso-ansi-language:PL'>
+			h1<o:p></o:p>
+		</span>
+	</li>
+</ol>

+ 47 - 0
packages/ckeditor5-paste-from-office/tests/_data/list/multiple-combined/normalized.word2016.html

@@ -0,0 +1,47 @@
+<ol>
+	<li class=MsoListParagraphCxSpFirst style='text-indent:-18.0pt;mso-list:l1 level1 lfo1'>
+		<![if !supportLists]>
+		<span lang=PL style='mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;
+	mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin;mso-ansi-language:
+	PL'></span>
+		<![endif]>
+		<span lang=PL style='mso-ansi-language:PL'>
+			Item1<o:p></o:p>
+		</span>
+	</li>
+
+	<li class=MsoListParagraphCxSpMiddle style='text-indent:-18.0pt;mso-list:l1 level1 lfo1'>
+		<![if !supportLists]>
+		<span lang=PL style='mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;
+	mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin;mso-ansi-language:
+	PL'></span>
+		<![endif]>
+		<span lang=PL style='mso-ansi-language:PL'>
+			Item 2<o:p></o:p>
+		</span>
+	</li>
+</ol>
+
+<ol>
+	<li class=MsoListParagraphCxSpMiddle style='text-indent:-18.0pt;mso-list:l0 level1 lfo2'>
+		<![if !supportLists]>
+		<span lang=PL style='mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;
+	mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin;mso-ansi-language:
+	PL'></span>
+		<![endif]>
+		<span lang=PL style='mso-ansi-language:PL'>
+			Item 1<o:p></o:p>
+		</span>
+	</li>
+
+	<li class=MsoListParagraphCxSpLast style='text-indent:-18.0pt;mso-list:l0 level1 lfo2'>
+		<![if !supportLists]>
+		<span lang=PL style='mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;
+	mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin;mso-ansi-language:
+	PL'></span>
+		<![endif]>
+		<span lang=PL style='mso-ansi-language:PL'>
+			Item2<o:p></o:p>
+		</span>
+	</li>
+</ol>

+ 32 - 0
packages/ckeditor5-paste-from-office/tests/_data/list/multiple/normalized.word2016.html

@@ -0,0 +1,32 @@
+<ol>
+	<li class=MsoListParagraphCxSpFirst style='text-indent:-18.0pt;mso-list:l1 level1 lfo1'>
+		<![if !supportLists]>
+		<span lang=PL style='mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin;mso-ansi-language:PL'></span>
+		<![endif]>
+		<span lang=PL style='mso-ansi-language:PL'>
+			Item1<o:p></o:p>
+		</span>
+	</li>
+
+	<li class=MsoListParagraphCxSpLast style='text-indent:-18.0pt;mso-list:l1 level1 lfo1'>
+		<![if !supportLists]>
+		<span lang=PL style='mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin;mso-ansi-language:PL'></span>
+		<![endif]>
+		<span lang=PL style='mso-ansi-language:PL'>
+			Item 2<o:p></o:p>
+		</span>
+	</li>
+</ol>
+
+<p class=MsoNormal><span lang=PL style='mso-ansi-language:PL'>Some text<o:p></o:p></span></p>
+
+<ul>
+	<li class=MsoListParagraph style='text-indent:-18.0pt;mso-list:l0 level1 lfo2'>
+		<![if !supportLists]>
+		<span lang=PL style='font-family:Symbol;mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;mso-ansi-language:PL'></span>
+		<![endif]>
+		<span lang=PL style='mso-ansi-language:PL'>
+			Bullet 1<o:p></o:p>
+		</span>
+	</li>
+</ul>

+ 19 - 0
packages/ckeditor5-paste-from-office/tests/_data/list/simple/normalized.word2016.html

@@ -0,0 +1,19 @@
+<ol>
+	<li class=MsoListParagraphCxSpFirst style='text-indent:-18.0pt;mso-list:l0 level1 lfo1'>
+		<![if !supportLists]>
+		<span lang=PL style='mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin;mso-ansi-language:PL'></span>
+		<![endif]>
+		<span lang=PL style='mso-ansi-language:PL'>
+			Item1<o:p></o:p>
+		</span>
+	</li>
+
+	<li class=MsoListParagraphCxSpLast style='text-indent:-18.0pt;mso-list:l0 level1 lfo1'>
+		<![if !supportLists]>
+		<span lang=PL style='mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin;mso-ansi-language:PL'></span>
+		<![endif]>
+		<span lang=PL style='mso-ansi-language:PL'>
+			Item 2<o:p></o:p>
+		</span>
+	</li>
+</ol>

+ 43 - 0
packages/ckeditor5-paste-from-office/tests/_data/list/styled/normalized.word2016.html

@@ -0,0 +1,43 @@
+<p class=MsoNormal>
+	<span lang=PL style='mso-ansi-language:PL'>
+		List:<o:p></o:p>
+	</span>
+</p>
+
+<ul>
+	<li class=MsoListParagraphCxSpFirst style='text-indent:-18.0pt;mso-list:l0 level1 lfo1'>
+		<![if !supportLists]>
+		<span lang=PL style='font-family:Symbol;mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;mso-ansi-language:PL'></span>
+		<![endif]>
+		<span lang=PL style='mso-ansi-language:PL'>
+			B<b style='mso-bidi-font-weight:normal'>old</b>
+			<o:p></o:p>
+		</span>
+	</li>
+
+	<li class=MsoListParagraphCxSpMiddle style='text-indent:-18.0pt;mso-list:l0 level1 lfo1'>
+		<![if !supportLists]>
+		<span lang=PL style='font-family:Symbol;mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;mso-ansi-language:PL'></span>
+		<![endif]>
+		<span class=MsoHyperlink>
+			<span lang=PL style='mso-ansi-language:PL'>
+				<a href="https://cksource.com">Lin</a>
+			</span>
+		</span>
+		<span lang=PL style='mso-ansi-language:PL'>
+			k<o:p></o:p>
+		</span>
+	</li>
+
+	<li class=MsoListParagraphCxSpLast style='text-indent:-18.0pt;mso-list:l0 level1 lfo1'>
+		<![if !supportLists]>
+		<span lang=PL style='font-family:Symbol;mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;mso-ansi-language:PL'></span>
+		<![endif]>
+		<i style='mso-bidi-font-style:normal'>
+			<span lang=PL style='mso-ansi-language:PL'>
+				M<b style='mso-bidi-font-weight:normal'>ul<u>tip</u></b><u>le</u>
+				<o:p></o:p>
+			</span>
+		</i>
+	</li>
+</ul>

+ 88 - 0
packages/ckeditor5-paste-from-office/tests/data/normalization/list.js

@@ -0,0 +1,88 @@
+/**
+ * @license Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved.
+ * For licensing, see LICENSE.md.
+ */
+
+import VirtualTestEditor from '@ckeditor/ckeditor5-core/tests/_utils/virtualtesteditor';
+import testUtils from '@ckeditor/ckeditor5-core/tests/_utils/utils';
+import Clipboard from '@ckeditor/ckeditor5-clipboard/src/clipboard';
+import PasteFromWord from '../../../src/pastefromword';
+
+import { stringify } from '@ckeditor/ckeditor5-engine/src/dev-utils/view';
+import normalizeHtml from '@ckeditor/ckeditor5-utils/tests/_utils/normalizehtml';
+
+import simple from '../../_data/list/simple/input.word2016.html';
+import styled from '../../_data/list/styled/input.word2016.html';
+import multiple from '../../_data/list/multiple/input.word2016.html';
+import multipleCombined from '../../_data/list/multiple-combined/input.word2016.html';
+import manyOneItem from '../../_data/list/many-one-item/input.word2016.html';
+import heading1 from '../../_data/list/heading1/input.word2016.html';
+import heading3Styled from '../../_data/list/heading3-styled/input.word2016.html';
+import heading7 from '../../_data/list/heading7/input.word2016.html';
+
+import simpleNormalized from '../../_data/list/simple/normalized.word2016.html';
+import styledNormalized from '../../_data/list/styled/normalized.word2016.html';
+import multipleNormalized from '../../_data/list/multiple/normalized.word2016.html';
+import multipleCombinedNormalized from '../../_data/list/multiple-combined/normalized.word2016.html';
+import manyOneItemNormalized from '../../_data/list/many-one-item/normalized.word2016.html';
+import heading1Normalized from '../../_data/list/heading1/normalized.word2016.html';
+import heading3StyledNormalized from '../../_data/list/heading3-styled/normalized.word2016.html';
+import heading7Normalized from '../../_data/list/heading7/normalized.word2016.html';
+
+describe( 'List – normalization', () => {
+	let editor, pasteFromWordPlugin;
+
+	testUtils.createSinonSandbox();
+
+	beforeEach( () => {
+		return VirtualTestEditor
+			.create( {
+				plugins: [ Clipboard, PasteFromWord ]
+			} )
+			.then( newEditor => {
+				editor = newEditor;
+
+				pasteFromWordPlugin = editor.plugins.get( 'PasteFromWord' );
+			} );
+	} );
+
+	it( 'normalizes simple list', () => {
+		expectNormalized( pasteFromWordPlugin._normalizeWordInput( simple, editor ), simpleNormalized );
+	} );
+
+	it( 'normalizes list with styled items prepended by a paragraph', () => {
+		expectNormalized( pasteFromWordPlugin._normalizeWordInput( styled, editor ), styledNormalized );
+	} );
+
+	it( 'normalizes multiple lists separated by the paragraph', () => {
+		expectNormalized( pasteFromWordPlugin._normalizeWordInput( multiple, editor ), multipleNormalized );
+	} );
+
+	it( 'normalizes multiple lists one right after another', () => {
+		expectNormalized( pasteFromWordPlugin._normalizeWordInput( multipleCombined, editor ), multipleCombinedNormalized );
+	} );
+
+	it( 'normalizes many one item lists', () => {
+		expectNormalized( pasteFromWordPlugin._normalizeWordInput( manyOneItem, editor ), manyOneItemNormalized );
+	} );
+
+	it( 'normalizes list created from headings (h1)', () => {
+		expectNormalized( pasteFromWordPlugin._normalizeWordInput( heading1, editor ), heading1Normalized );
+	} );
+
+	it( 'normalizes list created from styled headings (h3)', () => {
+		expectNormalized( pasteFromWordPlugin._normalizeWordInput( heading3Styled, editor ), heading3StyledNormalized );
+	} );
+
+	it( 'normalizes list created from heading (h7)', () => {
+		expectNormalized( pasteFromWordPlugin._normalizeWordInput( heading7, editor ), heading7Normalized );
+	} );
+} );
+
+function expectNormalized( normalizedInput, expectedInput ) {
+	let expected = expectedInput.replace( /> /g, '>&nbsp;' ).replace( / </g, '&nbsp;<' );
+	expected = normalizeHtml( expected );
+	expected = expected.replace( />\s+</g, '><' );
+
+	expect( stringify( normalizedInput ) ).to.equal( expected );
+}