import Delta from 'quill-delta'; import Editor from '../../../core/editor'; describe('Code', function() { it('newline', function() { let editor = this.initialize(Editor, `

      


\n


\n\n


`); expect(editor.scroll.domNode).toEqualHTML(`
\n


\n


\n\n


`); }); it('default child', function() { let editor = this.initialize(Editor, '


'); editor.formatLine(0, 1, { 'code-block': true }); expect(editor.scroll.domNode.innerHTML).toEqual('
\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: '

0123

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

4567

' }); editor.deleteText(4, 1); expect(editor.getDelta()).toEqual(new Delta().insert('01234567').insert('\n', { header: 1 })); expect(editor.scroll.domNode).toEqualHTML('

01234567

'); }); it('delete across before partial merge', function() { let editor = this.initialize(Editor, { html: '
01\n34\n67\n

90

' }); editor.deleteText(7, 3); expect(editor.getDelta()).toEqual(new Delta() .insert('01').insert('\n', { 'code-block': true }) .insert('34').insert('\n', { 'code-block': true }) .insert('60').insert('\n', { header: 1 }) ); expect(editor.scroll.domNode.innerHTML).toEqualHTML('
01\n34\n

60

'); }); it('delete across before no merge', function() { let editor = this.initialize(Editor, { html: '
01\n34\n

6789

' }); editor.deleteText(3, 5); expect(editor.getDelta()).toEqual(new Delta() .insert('01').insert('\n', { 'code-block': true }) .insert('89').insert('\n', { header: 1 }) ); expect(editor.scroll.domNode.innerHTML).toEqualHTML('
01\n

89

'); }); it('delete across after', function() { let editor = this.initialize(Editor, { html: '

0123

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('

0123

'); }); it('replace multiple', function() { let editor = this.initialize(Editor, { html: '
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

23

'); }); it('format interior line', function() { let editor = this.initialize(Editor, { html: '
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

23

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('

01

23

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

23

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


'); }); });