Feat: editable dom element (#39341)
* feat: __testEditable allows editable region tests It's not entirely isolated, but it makes it possible to select only the element with id 'editable-only' which is built solely from code inside the editable region. * fix(client): missing editableContents -> '' Previously it was added as the string 'undefined' * fix: more informative error messages * fix: DRY, correct and test getLines
This commit is contained in:
committed by
Mrugesh Mohapatra
parent
a1a051bd3a
commit
9df098953d
16
utils/get-lines.js
Normal file
16
utils/get-lines.js
Normal file
@@ -0,0 +1,16 @@
|
||||
const { isEmpty } = require('lodash');
|
||||
|
||||
// TODO: secure with tests
|
||||
function getLines(contents, range) {
|
||||
if (isEmpty(range)) {
|
||||
return '';
|
||||
}
|
||||
const lines = contents.split('\n');
|
||||
const editableLines =
|
||||
isEmpty(lines) || range[1] <= range[0]
|
||||
? []
|
||||
: lines.slice(range[0], range[1] - 1);
|
||||
return editableLines.join('\n');
|
||||
}
|
||||
|
||||
exports.getLines = getLines;
|
35
utils/get-lines.test.js
Normal file
35
utils/get-lines.test.js
Normal file
@@ -0,0 +1,35 @@
|
||||
/* global describe expect it */
|
||||
|
||||
const { getLines } = require('./get-lines');
|
||||
|
||||
const content = 'one\ntwo\nthree';
|
||||
|
||||
describe('dasherize', () => {
|
||||
it('returns a string', () => {
|
||||
expect(getLines('')).toBe('');
|
||||
});
|
||||
it("returns '' when the second arg is empty", () => {
|
||||
expect(getLines(content)).toBe('');
|
||||
});
|
||||
it("returns '' when the range is negative", () => {
|
||||
expect(getLines(content, [1, -1])).toBe('');
|
||||
});
|
||||
it("returns '' when the range is [n,n]", () => {
|
||||
expect(getLines(content, [0, 0])).toBe('');
|
||||
expect(getLines(content, [1, 1])).toBe('');
|
||||
expect(getLines(content, [2, 2])).toBe('');
|
||||
});
|
||||
|
||||
it('returns the first line when the range is [0,2]', () => {
|
||||
expect(getLines(content, [0, 2])).toBe('one');
|
||||
});
|
||||
it('returns the second line when the range is [1,3]', () => {
|
||||
expect(getLines(content, [1, 3])).toBe('two');
|
||||
});
|
||||
it('returns the first and second lines when the range is [0,3]', () => {
|
||||
expect(getLines(content, [0, 3])).toBe('one\ntwo');
|
||||
});
|
||||
it('returns the second and third lines when the range is [1,4]', () => {
|
||||
expect(getLines(content, [1, 4])).toBe('two\nthree');
|
||||
});
|
||||
});
|
Reference in New Issue
Block a user