1
0
mirror of https://github.com/ianstormtaylor/slate.git synced 2025-09-02 19:52:32 +02:00

fix tests

This commit is contained in:
Ian Storm Taylor
2017-09-18 11:57:26 -07:00
parent ca4075eb47
commit 19307197ed
19 changed files with 58 additions and 48 deletions

View File

@@ -231,45 +231,39 @@ const APPLIERS = {
let { document, selection } = state
const { startKey, endKey } = selection
const node = document.assertPath(path)
// If the selection is set, check to see if it needs to be updated.
if (selection.isSet) {
const hasStartNode = node.hasNode(startKey)
const hasEndNode = node.hasNode(endKey)
let normalize = false
const first = node.kind == 'text' ? node : node.getFirstText() || node
const last = node.kind == 'text' ? node : node.getLastText() || node
const prev = document.getPreviousText(first.key)
const next = document.getNextText(last.key)
// If one of the selection's nodes is being removed, we need to update it.
// If the start point was in this node, update it to be just before/after.
if (hasStartNode) {
const prev = document.getPreviousText(startKey)
const next = document.getNextText(startKey)
if (prev) {
selection = selection.moveStartTo(prev.key, prev.text.length)
normalize = true
} else if (next) {
selection = selection.moveStartTo(next.key, 0)
normalize = true
} else {
selection = selection.deselect()
}
}
if (hasEndNode) {
const prev = document.getPreviousText(endKey)
const next = document.getNextText(endKey)
// If the end point was in this node, update it to be just before/after.
if (selection.isSet && hasEndNode) {
if (prev) {
selection = selection.moveEndTo(prev.key, prev.text.length)
normalize = true
} else if (next) {
selection = selection.moveEndTo(next.key, 0)
normalize = true
} else {
selection = selection.deselect()
}
}
if (normalize) {
// If the selection wasn't deselected, normalize it.
if (selection.isSet) {
selection = selection.normalize(document)
}
}

View File

@@ -243,7 +243,9 @@ const rules = [
normalize: (change, node, invalids) => {
// Reverse the list to handle consecutive merges, since the earlier nodes
// will always exist after each merge.
invalids.reverse().forEach(n => change.mergeNodeByKey(n.key, OPTS))
invalids.reverse().forEach((n) => {
change.mergeNodeByKey(n.key, OPTS)
})
}
},

View File

@@ -19,7 +19,7 @@ export const input = (
<state>
<document key="a">
<paragraph>
word
<cursor />word
</paragraph>
</document>
</state>
@@ -35,7 +35,7 @@ export const output = (
two
</paragraph>
<paragraph>
word
<cursor />word
</paragraph>
</document>
</state>

View File

@@ -11,7 +11,7 @@ export const input = (
<state>
<document key="a">
<paragraph>
one
<cursor />one
</paragraph>
</document>
</state>
@@ -22,7 +22,7 @@ export const output = (
<document>
<paragraph />
<paragraph>
one
<cursor />one
</paragraph>
</document>
</state>

View File

@@ -11,7 +11,7 @@ export const input = (
<state>
<document key="a">
<paragraph>
one
<cursor />one
</paragraph>
</document>
</state>
@@ -24,7 +24,7 @@ export const output = (
one
</paragraph>
<paragraph>
one
<cursor />one
</paragraph>
</document>
</state>

View File

@@ -14,7 +14,7 @@ export const input = (
<state>
<document>
<paragraph key="a">
one
<cursor />one
</paragraph>
<paragraph>
two
@@ -27,7 +27,7 @@ export const output = (
<state>
<document>
<paragraph>
<emoji />one
<emoji /><cursor />one
</paragraph>
<paragraph>
two

View File

@@ -10,7 +10,7 @@ export const input = (
<state>
<document key="b">
<paragraph key="a">
one
<cursor />one
</paragraph>
<paragraph>
two
@@ -22,8 +22,12 @@ export const input = (
export const output = (
<state>
<document>
<paragraph>two</paragraph>
<paragraph>one</paragraph>
<paragraph>
two
</paragraph>
<paragraph>
<cursor />one
</paragraph>
</document>
</state>
)

View File

@@ -10,7 +10,7 @@ export const input = (
<state>
<document>
<paragraph key="b">
<link key="a">one</link>
<link key="a"><cursor />one</link>
<link>two</link>
</paragraph>
</document>
@@ -22,7 +22,7 @@ export const output = (
<document>
<paragraph>
<link>two</link>
<link>one</link>
<link><cursor />one</link>
</paragraph>
</document>
</state>

View File

@@ -10,7 +10,7 @@ export const input = (
<state>
<document>
<paragraph key="a">
one
<cursor />one
</paragraph>
<quote key="b">
<paragraph>
@@ -29,7 +29,7 @@ export const output = (
two
</paragraph>
<paragraph>
one
<cursor />one
</paragraph>
</quote>
</document>

View File

@@ -10,7 +10,7 @@ export const input = (
<state>
<document>
<paragraph>
<text key="a">one</text>
<text key="a"><cursor />one</text>
</paragraph>
<paragraph>
two
@@ -24,7 +24,7 @@ export const output = (
<document>
<paragraph />
<paragraph>
two
<cursor />two
</paragraph>
</document>
</state>

View File

@@ -10,7 +10,7 @@ export const input = (
<state>
<document>
<paragraph>
<link><hashtag><text key="a">a</text></hashtag></link>
<link><hashtag><text key="a"><cursor />a</text></hashtag></link>
</paragraph>
</document>
</state>
@@ -19,7 +19,9 @@ export const input = (
export const output = (
<state>
<document>
<paragraph />
<paragraph>
<cursor />
</paragraph>
</document>
</state>
)

View File

@@ -11,7 +11,7 @@ export const input = (
<document>
<paragraph>
<emoji>
<text key="a">{' '}</text>
<text key="a"><cursor />{' '}</text>
</emoji>
</paragraph>
</document>
@@ -22,7 +22,7 @@ export const output = (
<state>
<document>
<paragraph>
<emoji />
<cursor /><emoji />
</paragraph>
</document>
</state>

View File

@@ -13,7 +13,7 @@ export const input = (
<state>
<document>
<paragraph>
<link key="a">word</link>
<link key="a"><cursor />word</link>
</paragraph>
</document>
</state>
@@ -23,7 +23,7 @@ export const output = (
<state>
<document>
<paragraph>
<emoji />
<cursor /><emoji />
</paragraph>
</document>
</state>

View File

@@ -30,7 +30,7 @@ export const output = (
<state>
<document>
<image>
<cursor />{' '}
{' '}<cursor />
</image>
<paragraph>
one

View File

@@ -30,7 +30,7 @@ export const output = (
<state>
<document>
<image>
<cursor />{' '}
{' '}<cursor />
</image>
<paragraph>
one

View File

@@ -17,10 +17,12 @@ describe('history', async () => {
const tests = fs.readdirSync(testDir).filter(f => f[0] != '.' && !!~f.indexOf('.js')).map(f => basename(f, extname(f)))
for (const test of tests) {
it(test, async () => {
const module = require(resolve(testDir, test))
const { input, output } = module
const fn = module.default
const module = require(resolve(testDir, test))
const { input, output, skip } = module
const fn = module.default
const t = skip ? it.skip : it
t(test, async () => {
const next = fn(input)
const opts = { preserveSelection: true, preserveStateData: true }
const actual = next.toJSON(opts)

View File

@@ -31,7 +31,7 @@ export const input = (
export const output = (
<state>
<document>
<paragraph>one<cursor />wt</paragraph>
<paragraph>onew<cursor />t</paragraph>
</document>
</state>
)

View File

@@ -15,8 +15,12 @@ export default function (state) {
export const input = (
<state>
<document key="a">
<paragraph key="b">one</paragraph>
<paragraph key="c">two</paragraph>
<paragraph key="b">
one
</paragraph>
<paragraph key="c">
two
</paragraph>
</document>
</state>
)

View File

@@ -23,3 +23,5 @@ export const input = (
)
export const output = input
export const skip = true