import Delta from 'quill-delta'; import Editor from '../../../core/editor'; describe('Code', function() { it('newline', function() { let editor = this.initialize(Editor, `
\n
\n\n
\n
\n
\n\n
\n'); }); it('merge', function() { let editor = this.initialize(Editor, `
0
0
0
1\n
0
2\n\n
1\n
0
1\n
1\n
1\n
2\n\n
2\n\n
0
2\n\n
1\n
2\n\n
2\n\n`); editor.scroll.lines().forEach(function(line) { line.optimize(); }) expect(editor.scroll.domNode).toEqualHTML(`
0\n0\n
0\n1\n
0\n2\n\n
1\n0\n
1\n1\n
1\n2\n\n
2\n\n0\n
2\n\n1\n
2\n\n2\n\n`); }); it('merge multiple', function() { let editor = this.initialize(Editor, `
0
1
2
3`); editor.scroll.children.head.optimize(); expect(editor.scroll.domNode).toEqualHTML(`
0\n1\n2\n3\n`); }); it('add', function() { let editor = this.initialize(Editor, '
0123
5678
'); editor.formatLine(2, 5, { 'code-block': true }); expect(editor.getDelta()).toEqual(new Delta() .insert('0123').insert('\n', { 'code-block': true }) .insert('5678').insert('\n', { 'code-block': true }) ); expect(editor.scroll.domNode.innerHTML).toEqual('0123\n5678\n'); }); it('remove', function() { let editor = this.initialize(Editor, { html: '
0123\n' }); editor.formatText(4, 1, { 'code-block': false }); expect(editor.getDelta()).toEqual(new Delta().insert('0123\n')); expect(editor.scroll.domNode).toEqualHTML('
0123
'); }); it('delete last', function() { let editor = this.initialize(Editor, { html: '0123
\n
5678
' }); editor.deleteText(4, 1); expect(editor.getDelta()).toEqual(new Delta().insert('0123').insert('\n', { 'code-block': true }).insert('5678\n')); expect(editor.scroll.domNode).toEqualHTML('0123
5678
'); }); it('delete merge before', function() { let editor = this.initialize(Editor, { html: '4567\n' }); editor.deleteText(4, 1); expect(editor.getDelta()).toEqual(new Delta().insert('01234567').insert('\n', { 'code-block': true })); expect(editor.scroll.domNode).toEqualHTML('
01234567\n'); }); it('delete merge after', function() { let editor = this.initialize(Editor, { html: '
0123\n
01\n34\n67\n
01\n34\n
01\n34\n
01\n
56\n89\n' }); editor.deleteText(2, 4); expect(editor.getDelta()).toEqual(new Delta() .insert('016').insert('\n', { 'code-block': true }) .insert('89').insert('\n', { 'code-block': true }) ); expect(editor.scroll.domNode.innerHTML).toEqualHTML('
016\n89\n'); }); it('replace', function() { let editor = this.initialize(Editor, { html: '
0123\n' }); editor.formatText(4, 1, { 'header': 1 }); expect(editor.getDelta()).toEqual(new Delta().insert('0123').insert('\n', { header: 1 })); expect(editor.scroll.domNode).toEqualHTML('
01\n23\n' }); editor.formatText(0, 6, { 'header': 1 }); expect(editor.getDelta()).toEqual(new Delta() .insert('01').insert('\n', { header: 1 }) .insert('23').insert('\n', { header: 1 }) ); expect(editor.scroll.domNode).toEqualHTML('
01\n23\n45\n' }); editor.formatText(5, 1, { 'header': 1 }); expect(editor.getDelta()).toEqual(new Delta() .insert('01').insert('\n', { 'code-block': true }) .insert('23').insert('\n', { 'header': 1 }) .insert('45').insert('\n', { 'code-block': true }) ); expect(editor.scroll.domNode.innerHTML).toEqual('
01\n
45\n'); }); it('format imprecise bounds', function() { let editor = this.initialize(Editor, { html: '
01\n23\n45\n' }); editor.formatText(1, 6, { 'header': 1 }); expect(editor.getDelta()).toEqual(new Delta() .insert('01').insert('\n', { 'header': 1 }) .insert('23').insert('\n', { 'header': 1 }) .insert('45').insert('\n', { 'code-block': true }) ); expect(editor.scroll.domNode.innerHTML).toEqual('
45\n'); }); it('format without newline', function() { let editor = this.initialize(Editor, { html: '
01\n23\n45\n' }); editor.formatText(3, 1, { 'header': 1 }); expect(editor.getDelta()).toEqual(new Delta() .insert('01').insert('\n', { 'code-block': true }) .insert('23').insert('\n', { 'code-block': true }) .insert('45').insert('\n', { 'code-block': true }) ); expect(editor.scroll.domNode.innerHTML).toEqual('
01\n23\n45\n'); }); it('format line', function() { let editor = this.initialize(Editor, { html: '
01\n23\n45\n' }); editor.formatLine(3, 1, { 'header': 1 }); expect(editor.getDelta()).toEqual(new Delta() .insert('01').insert('\n', { 'code-block': true }) .insert('23').insert('\n', { 'header': 1 }) .insert('45').insert('\n', { 'code-block': true }) ); expect(editor.scroll.domNode.innerHTML).toEqual('
01\n
45\n'); }); it('ignore formatAt', function() { let editor = this.initialize(Editor, '
0123'); editor.formatText(1, 1, { bold: true }); expect(editor.getDelta()).toEqual(new Delta().insert('0123').insert('\n', { 'code-block': true })); expect(editor.scroll.domNode).toEqualHTML('
0123'); }); it('partial block modification applyDelta', function() { let editor = this.initialize(Editor, { html: '
a\nb\n\n' }); let delta = new Delta() .retain(3) .insert('\n', { 'code-block': true }) .delete(1) .retain(1, { 'code-block': null }); editor.applyDelta(delta); expect(editor.scroll.domNode.innerHTML).toEqual('
a\nb\n