import Delta from 'quill-delta';
import Editor from '../../../core/editor';
describe('Code', function() {
it('format newline', function() {
const editor = this.initialize(Editor, '
');
editor.formatLine(0, 1, { 'code-block': true });
expect(editor.scroll.domNode).toEqualHTML(
``,
);
});
it('format lines', function() {
const 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).toEqualHTML(
``,
);
});
it('remove format', function() {
const editor = this.initialize(
Editor,
'',
);
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() {
const editor = this.initialize(
Editor,
'0123
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(
'5678
',
);
});
it('delete merge before', function() {
const editor = this.initialize(
Editor,
'0123
',
);
editor.deleteText(4, 1);
expect(editor.getDelta()).toEqual(
new Delta().insert('01234567').insert('\n', { 'code-block': true }),
);
expect(editor.scroll.domNode).toEqualHTML(
'',
);
});
it('delete merge after', function() {
const editor = this.initialize(
Editor,
'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() {
const editor = this.initialize(
Editor,
`
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(
`
60
`,
);
});
it('delete across before no merge', function() {
const editor = this.initialize(
Editor,
`
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(
'89
',
);
});
it('delete across after', function() {
const editor = this.initialize(
Editor,
`0123
`,
);
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(`
`);
});
it('replace', function() {
const editor = this.initialize(
Editor,
'',
);
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() {
const editor = this.initialize(
Editor,
`
`,
);
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 imprecise bounds', function() {
const editor = this.initialize(
Editor,
`
`,
);
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).toEqualHTML(
'01
23
',
);
});
it('format without newline', function() {
const editor = this.initialize(
Editor,
`
`,
);
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).toEqualHTML(`
`);
});
it('format line', function() {
const editor = this.initialize(
Editor,
`
`,
);
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).toEqualHTML(`
23
`);
});
it('ignore formatAt', function() {
const editor = this.initialize(
Editor,
'',
);
editor.formatText(1, 1, { bold: true });
expect(editor.getDelta()).toEqual(
new Delta().insert('0123').insert('\n', { 'code-block': true }),
);
expect(editor.scroll.domNode).toEqualHTML(
'',
);
});
it('partial block modification applyDelta', function() {
const editor = this.initialize(
Editor,
``,
);
const 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).toEqualHTML(
`
`,
);
});
});