diff --git a/test/transforms/fixtures/insert-text/after-mark/index.js b/test/transforms/fixtures/insert-text/after-mark/index.js new file mode 100644 index 000000000..d99dc8750 --- /dev/null +++ b/test/transforms/fixtures/insert-text/after-mark/index.js @@ -0,0 +1,27 @@ + +import assert from 'assert' + +export default function (state) { + const { document, selection } = state + const texts = document.getTexts() + const first = texts.first() + const range = selection.merge({ + anchorKey: first.key, + anchorOffset: 3, + focusKey: first.key, + focusOffset: 3 + }) + + const next = state + .transform() + .moveTo(range) + .insertText('a') + .apply() + + assert.deepEqual( + next.selection.toJS(), + range.moveForward().toJS() + ) + + return next +} diff --git a/test/transforms/fixtures/insert-text/after-mark/input.yaml b/test/transforms/fixtures/insert-text/after-mark/input.yaml new file mode 100644 index 000000000..9516919f3 --- /dev/null +++ b/test/transforms/fixtures/insert-text/after-mark/input.yaml @@ -0,0 +1,12 @@ + +nodes: + - kind: block + type: paragraph + nodes: + - kind: text + ranges: + - text: w + - text: or + marks: + - type: bold + - text: d diff --git a/test/transforms/fixtures/insert-text/after-mark/output.yaml b/test/transforms/fixtures/insert-text/after-mark/output.yaml new file mode 100644 index 000000000..721088c8c --- /dev/null +++ b/test/transforms/fixtures/insert-text/after-mark/output.yaml @@ -0,0 +1,12 @@ + +nodes: + - kind: block + type: paragraph + nodes: + - kind: text + ranges: + - text: w + - text: ora + marks: + - type: bold + - text: d diff --git a/test/transforms/fixtures/insert-text/before-mark/index.js b/test/transforms/fixtures/insert-text/before-mark/index.js new file mode 100644 index 000000000..0ff315b53 --- /dev/null +++ b/test/transforms/fixtures/insert-text/before-mark/index.js @@ -0,0 +1,27 @@ + +import assert from 'assert' + +export default function (state) { + const { document, selection } = state + const texts = document.getTexts() + const first = texts.first() + const range = selection.merge({ + anchorKey: first.key, + anchorOffset: 1, + focusKey: first.key, + focusOffset: 1 + }) + + const next = state + .transform() + .moveTo(range) + .insertText('a') + .apply() + + assert.deepEqual( + next.selection.toJS(), + range.moveForward().toJS() + ) + + return next +} diff --git a/test/transforms/fixtures/insert-text/before-mark/input.yaml b/test/transforms/fixtures/insert-text/before-mark/input.yaml new file mode 100644 index 000000000..9516919f3 --- /dev/null +++ b/test/transforms/fixtures/insert-text/before-mark/input.yaml @@ -0,0 +1,12 @@ + +nodes: + - kind: block + type: paragraph + nodes: + - kind: text + ranges: + - text: w + - text: or + marks: + - type: bold + - text: d diff --git a/test/transforms/fixtures/insert-text/before-mark/output.yaml b/test/transforms/fixtures/insert-text/before-mark/output.yaml new file mode 100644 index 000000000..456a7d85e --- /dev/null +++ b/test/transforms/fixtures/insert-text/before-mark/output.yaml @@ -0,0 +1,12 @@ + +nodes: + - kind: block + type: paragraph + nodes: + - kind: text + ranges: + - text: wa + - text: or + marks: + - type: bold + - text: d diff --git a/test/transforms/fixtures/insert-text/during-mark/index.js b/test/transforms/fixtures/insert-text/during-mark/index.js new file mode 100644 index 000000000..18e4109b0 --- /dev/null +++ b/test/transforms/fixtures/insert-text/during-mark/index.js @@ -0,0 +1,27 @@ + +import assert from 'assert' + +export default function (state) { + const { document, selection } = state + const texts = document.getTexts() + const first = texts.first() + const range = selection.merge({ + anchorKey: first.key, + anchorOffset: 2, + focusKey: first.key, + focusOffset: 2 + }) + + const next = state + .transform() + .moveTo(range) + .insertText('a') + .apply() + + assert.deepEqual( + next.selection.toJS(), + range.moveForward().toJS() + ) + + return next +} diff --git a/test/transforms/fixtures/insert-text/during-mark/input.yaml b/test/transforms/fixtures/insert-text/during-mark/input.yaml new file mode 100644 index 000000000..9516919f3 --- /dev/null +++ b/test/transforms/fixtures/insert-text/during-mark/input.yaml @@ -0,0 +1,12 @@ + +nodes: + - kind: block + type: paragraph + nodes: + - kind: text + ranges: + - text: w + - text: or + marks: + - type: bold + - text: d diff --git a/test/transforms/fixtures/insert-text/during-mark/output.yaml b/test/transforms/fixtures/insert-text/during-mark/output.yaml new file mode 100644 index 000000000..d0108de73 --- /dev/null +++ b/test/transforms/fixtures/insert-text/during-mark/output.yaml @@ -0,0 +1,12 @@ + +nodes: + - kind: block + type: paragraph + nodes: + - kind: text + ranges: + - text: w + - text: oar + marks: + - type: bold + - text: d diff --git a/test/transforms/fixtures/insert-text/first-character/index.js b/test/transforms/fixtures/insert-text/first-character/index.js new file mode 100644 index 000000000..2965f9e5f --- /dev/null +++ b/test/transforms/fixtures/insert-text/first-character/index.js @@ -0,0 +1,27 @@ + +import assert from 'assert' + +export default function (state) { + const { document, selection } = state + const texts = document.getTexts() + const first = texts.first() + const range = selection.merge({ + anchorKey: first.key, + anchorOffset: 0, + focusKey: first.key, + focusOffset: 0 + }) + + const next = state + .transform() + .moveTo(range) + .insertText('a') + .apply() + + assert.deepEqual( + next.selection.toJS(), + range.moveForward().toJS() + ) + + return next +} diff --git a/test/transforms/fixtures/insert-text/first-character/input.yaml b/test/transforms/fixtures/insert-text/first-character/input.yaml new file mode 100644 index 000000000..b1be31e90 --- /dev/null +++ b/test/transforms/fixtures/insert-text/first-character/input.yaml @@ -0,0 +1,8 @@ + +nodes: + - kind: block + type: paragraph + nodes: + - kind: text + ranges: + - text: word diff --git a/test/transforms/fixtures/insert-text/first-character/output.yaml b/test/transforms/fixtures/insert-text/first-character/output.yaml new file mode 100644 index 000000000..a373de628 --- /dev/null +++ b/test/transforms/fixtures/insert-text/first-character/output.yaml @@ -0,0 +1,8 @@ + +nodes: + - kind: block + type: paragraph + nodes: + - kind: text + ranges: + - text: aword diff --git a/test/transforms/fixtures/insert-text/first-space/index.js b/test/transforms/fixtures/insert-text/first-space/index.js new file mode 100644 index 000000000..52f94c691 --- /dev/null +++ b/test/transforms/fixtures/insert-text/first-space/index.js @@ -0,0 +1,27 @@ + +import assert from 'assert' + +export default function (state) { + const { document, selection } = state + const texts = document.getTexts() + const first = texts.first() + const range = selection.merge({ + anchorKey: first.key, + anchorOffset: 0, + focusKey: first.key, + focusOffset: 0 + }) + + const next = state + .transform() + .moveTo(range) + .insertText(' ') + .apply() + + assert.deepEqual( + next.selection.toJS(), + range.moveForward().toJS() + ) + + return next +} diff --git a/test/transforms/fixtures/insert-text/first-space/input.yaml b/test/transforms/fixtures/insert-text/first-space/input.yaml new file mode 100644 index 000000000..b1be31e90 --- /dev/null +++ b/test/transforms/fixtures/insert-text/first-space/input.yaml @@ -0,0 +1,8 @@ + +nodes: + - kind: block + type: paragraph + nodes: + - kind: text + ranges: + - text: word diff --git a/test/transforms/fixtures/insert-text/first-space/output.yaml b/test/transforms/fixtures/insert-text/first-space/output.yaml new file mode 100644 index 000000000..f994c9653 --- /dev/null +++ b/test/transforms/fixtures/insert-text/first-space/output.yaml @@ -0,0 +1,8 @@ + +nodes: + - kind: block + type: paragraph + nodes: + - kind: text + ranges: + - text: " word" diff --git a/test/transforms/fixtures/insert-text/first-words/index.js b/test/transforms/fixtures/insert-text/first-words/index.js new file mode 100644 index 000000000..5e2aa3650 --- /dev/null +++ b/test/transforms/fixtures/insert-text/first-words/index.js @@ -0,0 +1,27 @@ + +import assert from 'assert' + +export default function (state) { + const { document, selection } = state + const texts = document.getTexts() + const first = texts.first() + const range = selection.merge({ + anchorKey: first.key, + anchorOffset: 0, + focusKey: first.key, + focusOffset: 0 + }) + + const next = state + .transform() + .moveTo(range) + .insertText('a few words ') + .apply() + + assert.deepEqual( + next.selection.toJS(), + range.moveForward(12).toJS() + ) + + return next +} diff --git a/test/transforms/fixtures/insert-text/first-words/input.yaml b/test/transforms/fixtures/insert-text/first-words/input.yaml new file mode 100644 index 000000000..b1be31e90 --- /dev/null +++ b/test/transforms/fixtures/insert-text/first-words/input.yaml @@ -0,0 +1,8 @@ + +nodes: + - kind: block + type: paragraph + nodes: + - kind: text + ranges: + - text: word diff --git a/test/transforms/fixtures/insert-text/first-words/output.yaml b/test/transforms/fixtures/insert-text/first-words/output.yaml new file mode 100644 index 000000000..b5278cbc6 --- /dev/null +++ b/test/transforms/fixtures/insert-text/first-words/output.yaml @@ -0,0 +1,8 @@ + +nodes: + - kind: block + type: paragraph + nodes: + - kind: text + ranges: + - text: a few words word diff --git a/test/transforms/fixtures/insert-text/last-character/index.js b/test/transforms/fixtures/insert-text/last-character/index.js new file mode 100644 index 000000000..b796aaaf3 --- /dev/null +++ b/test/transforms/fixtures/insert-text/last-character/index.js @@ -0,0 +1,27 @@ + +import assert from 'assert' + +export default function (state) { + const { document, selection } = state + const texts = document.getTexts() + const first = texts.first() + const range = selection.merge({ + anchorKey: first.key, + anchorOffset: first.length, + focusKey: first.key, + focusOffset: first.length + }) + + const next = state + .transform() + .moveTo(range) + .insertText('a') + .apply() + + assert.deepEqual( + next.selection.toJS(), + range.moveForward().toJS() + ) + + return next +} diff --git a/test/transforms/fixtures/insert-text/last-character/input.yaml b/test/transforms/fixtures/insert-text/last-character/input.yaml new file mode 100644 index 000000000..b1be31e90 --- /dev/null +++ b/test/transforms/fixtures/insert-text/last-character/input.yaml @@ -0,0 +1,8 @@ + +nodes: + - kind: block + type: paragraph + nodes: + - kind: text + ranges: + - text: word diff --git a/test/transforms/fixtures/insert-text/last-character/output.yaml b/test/transforms/fixtures/insert-text/last-character/output.yaml new file mode 100644 index 000000000..ad45f0c9b --- /dev/null +++ b/test/transforms/fixtures/insert-text/last-character/output.yaml @@ -0,0 +1,8 @@ + +nodes: + - kind: block + type: paragraph + nodes: + - kind: text + ranges: + - text: worda diff --git a/test/transforms/fixtures/insert-text/last-space/index.js b/test/transforms/fixtures/insert-text/last-space/index.js new file mode 100644 index 000000000..55d147c00 --- /dev/null +++ b/test/transforms/fixtures/insert-text/last-space/index.js @@ -0,0 +1,27 @@ + +import assert from 'assert' + +export default function (state) { + const { document, selection } = state + const texts = document.getTexts() + const first = texts.first() + const range = selection.merge({ + anchorKey: first.key, + anchorOffset: first.length, + focusKey: first.key, + focusOffset: first.length + }) + + const next = state + .transform() + .moveTo(range) + .insertText(' ') + .apply() + + assert.deepEqual( + next.selection.toJS(), + range.moveForward().toJS() + ) + + return next +} diff --git a/test/transforms/fixtures/insert-text/last-space/input.yaml b/test/transforms/fixtures/insert-text/last-space/input.yaml new file mode 100644 index 000000000..b1be31e90 --- /dev/null +++ b/test/transforms/fixtures/insert-text/last-space/input.yaml @@ -0,0 +1,8 @@ + +nodes: + - kind: block + type: paragraph + nodes: + - kind: text + ranges: + - text: word diff --git a/test/transforms/fixtures/insert-text/last-space/output.yaml b/test/transforms/fixtures/insert-text/last-space/output.yaml new file mode 100644 index 000000000..2061412e0 --- /dev/null +++ b/test/transforms/fixtures/insert-text/last-space/output.yaml @@ -0,0 +1,8 @@ + +nodes: + - kind: block + type: paragraph + nodes: + - kind: text + ranges: + - text: "word " diff --git a/test/transforms/fixtures/insert-text/last-words/index.js b/test/transforms/fixtures/insert-text/last-words/index.js new file mode 100644 index 000000000..63fa0ca0f --- /dev/null +++ b/test/transforms/fixtures/insert-text/last-words/index.js @@ -0,0 +1,27 @@ + +import assert from 'assert' + +export default function (state) { + const { document, selection } = state + const texts = document.getTexts() + const first = texts.first() + const range = selection.merge({ + anchorKey: first.key, + anchorOffset: first.length, + focusKey: first.key, + focusOffset: first.length + }) + + const next = state + .transform() + .moveTo(range) + .insertText(' a few words') + .apply() + + assert.deepEqual( + next.selection.toJS(), + range.moveForward(12).toJS() + ) + + return next +} diff --git a/test/transforms/fixtures/insert-text/last-words/input.yaml b/test/transforms/fixtures/insert-text/last-words/input.yaml new file mode 100644 index 000000000..b1be31e90 --- /dev/null +++ b/test/transforms/fixtures/insert-text/last-words/input.yaml @@ -0,0 +1,8 @@ + +nodes: + - kind: block + type: paragraph + nodes: + - kind: text + ranges: + - text: word diff --git a/test/transforms/fixtures/insert-text/last-words/output.yaml b/test/transforms/fixtures/insert-text/last-words/output.yaml new file mode 100644 index 000000000..b95f2bb1a --- /dev/null +++ b/test/transforms/fixtures/insert-text/last-words/output.yaml @@ -0,0 +1,8 @@ + +nodes: + - kind: block + type: paragraph + nodes: + - kind: text + ranges: + - text: word a few words diff --git a/test/transforms/fixtures/insert-text/middle-character/index.js b/test/transforms/fixtures/insert-text/middle-character/index.js new file mode 100644 index 000000000..0ff315b53 --- /dev/null +++ b/test/transforms/fixtures/insert-text/middle-character/index.js @@ -0,0 +1,27 @@ + +import assert from 'assert' + +export default function (state) { + const { document, selection } = state + const texts = document.getTexts() + const first = texts.first() + const range = selection.merge({ + anchorKey: first.key, + anchorOffset: 1, + focusKey: first.key, + focusOffset: 1 + }) + + const next = state + .transform() + .moveTo(range) + .insertText('a') + .apply() + + assert.deepEqual( + next.selection.toJS(), + range.moveForward().toJS() + ) + + return next +} diff --git a/test/transforms/fixtures/insert-text/middle-character/input.yaml b/test/transforms/fixtures/insert-text/middle-character/input.yaml new file mode 100644 index 000000000..b1be31e90 --- /dev/null +++ b/test/transforms/fixtures/insert-text/middle-character/input.yaml @@ -0,0 +1,8 @@ + +nodes: + - kind: block + type: paragraph + nodes: + - kind: text + ranges: + - text: word diff --git a/test/transforms/fixtures/insert-text/middle-character/output.yaml b/test/transforms/fixtures/insert-text/middle-character/output.yaml new file mode 100644 index 000000000..b0873c956 --- /dev/null +++ b/test/transforms/fixtures/insert-text/middle-character/output.yaml @@ -0,0 +1,8 @@ + +nodes: + - kind: block + type: paragraph + nodes: + - kind: text + ranges: + - text: waord diff --git a/test/transforms/fixtures/insert-text/middle-space/index.js b/test/transforms/fixtures/insert-text/middle-space/index.js new file mode 100644 index 000000000..53faa5d41 --- /dev/null +++ b/test/transforms/fixtures/insert-text/middle-space/index.js @@ -0,0 +1,27 @@ + +import assert from 'assert' + +export default function (state) { + const { document, selection } = state + const texts = document.getTexts() + const first = texts.first() + const range = selection.merge({ + anchorKey: first.key, + anchorOffset: 1, + focusKey: first.key, + focusOffset: 1 + }) + + const next = state + .transform() + .moveTo(range) + .insertText(' ') + .apply() + + assert.deepEqual( + next.selection.toJS(), + range.moveForward().toJS() + ) + + return next +} diff --git a/test/transforms/fixtures/insert-text/middle-space/input.yaml b/test/transforms/fixtures/insert-text/middle-space/input.yaml new file mode 100644 index 000000000..b1be31e90 --- /dev/null +++ b/test/transforms/fixtures/insert-text/middle-space/input.yaml @@ -0,0 +1,8 @@ + +nodes: + - kind: block + type: paragraph + nodes: + - kind: text + ranges: + - text: word diff --git a/test/transforms/fixtures/insert-text/middle-space/output.yaml b/test/transforms/fixtures/insert-text/middle-space/output.yaml new file mode 100644 index 000000000..8b72a232f --- /dev/null +++ b/test/transforms/fixtures/insert-text/middle-space/output.yaml @@ -0,0 +1,8 @@ + +nodes: + - kind: block + type: paragraph + nodes: + - kind: text + ranges: + - text: w ord diff --git a/test/transforms/fixtures/insert-text/middle-words/index.js b/test/transforms/fixtures/insert-text/middle-words/index.js new file mode 100644 index 000000000..5aae86038 --- /dev/null +++ b/test/transforms/fixtures/insert-text/middle-words/index.js @@ -0,0 +1,27 @@ + +import assert from 'assert' + +export default function (state) { + const { document, selection } = state + const texts = document.getTexts() + const first = texts.first() + const range = selection.merge({ + anchorKey: first.key, + anchorOffset: 1, + focusKey: first.key, + focusOffset: 1 + }) + + const next = state + .transform() + .moveTo(range) + .insertText(' a few words ') + .apply() + + assert.deepEqual( + next.selection.toJS(), + range.moveForward(13).toJS() + ) + + return next +} diff --git a/test/transforms/fixtures/insert-text/middle-words/input.yaml b/test/transforms/fixtures/insert-text/middle-words/input.yaml new file mode 100644 index 000000000..b1be31e90 --- /dev/null +++ b/test/transforms/fixtures/insert-text/middle-words/input.yaml @@ -0,0 +1,8 @@ + +nodes: + - kind: block + type: paragraph + nodes: + - kind: text + ranges: + - text: word diff --git a/test/transforms/fixtures/insert-text/middle-words/output.yaml b/test/transforms/fixtures/insert-text/middle-words/output.yaml new file mode 100644 index 000000000..f5df73851 --- /dev/null +++ b/test/transforms/fixtures/insert-text/middle-words/output.yaml @@ -0,0 +1,8 @@ + +nodes: + - kind: block + type: paragraph + nodes: + - kind: text + ranges: + - text: w a few words ord