From ecc165740d4e9da122c8a240c942eaac85d245cd Mon Sep 17 00:00:00 2001 From: Jinxuan Zhu Date: Wed, 21 Mar 2018 18:26:56 -0400 Subject: [PATCH] Fix skip this in getFurtherstLonelyAncestor (#1628) * Fix skip this in getFurtherstLonelyAncestor * export runTest in models/ * Change the path of test getOnlyChildAncestor * Update index.js * Update get-furthest-only-child.js * Fix for linting --- packages/slate/src/models/node.js | 20 +++++++++--------- packages/slate/test/models/index.js | 17 +++++++++++++++ .../models/node/get-furthest-only-child.js | 21 +++++++++++++++++++ 3 files changed, 48 insertions(+), 10 deletions(-) create mode 100644 packages/slate/test/models/node/get-furthest-only-child.js diff --git a/packages/slate/src/models/node.js b/packages/slate/src/models/node.js index be670172e..ddae92e7f 100644 --- a/packages/slate/src/models/node.js +++ b/packages/slate/src/models/node.js @@ -845,16 +845,16 @@ class Node { throw new Error(`Could not find a descendant node with key "${key}".`) } - return ( - ancestors - // Skip this node... - .skipLast() - // Take parents until there are more than one child... - .reverse() - .takeUntil(p => p.nodes.size > 1) - // And pick the highest. - .last() - ) + const result = ancestors + // Skip this node... + .shift() + // Take parents until there are more than one child... + .reverse() + .takeUntil(p => p.nodes.size > 1) + // And pick the highest. + .last() + if (!result) return null + return result } /** diff --git a/packages/slate/test/models/index.js b/packages/slate/test/models/index.js index 788a4bd5c..47a535c9e 100644 --- a/packages/slate/test/models/index.js +++ b/packages/slate/test/models/index.js @@ -33,4 +33,21 @@ describe('models', () => { } }) }) + + describe('node', () => { + describe('node', () => { + const testsDir = resolve(__dirname, 'node') + const tests = fs + .readdirSync(testsDir) + .filter(t => t[0] != '.') + .map(t => basename(t, extname(t))) + + for (const test of tests) { + it(test, async () => { + const run = require(resolve(testsDir, test)).default + run() + }) + } + }) + }) }) diff --git a/packages/slate/test/models/node/get-furthest-only-child.js b/packages/slate/test/models/node/get-furthest-only-child.js new file mode 100644 index 000000000..462a20b62 --- /dev/null +++ b/packages/slate/test/models/node/get-furthest-only-child.js @@ -0,0 +1,21 @@ +/** @jsx h */ + +import h from '../../helpers/h' +import assert from 'assert' + +export default function() { + const { document } = ( + + + Some Text + + + ) + + const paragraph = document.nodes.first() + const text = paragraph.getFirstText() + + assert.equal(document.getFurthestOnlyChildAncestor(paragraph.key), null) + assert.equal(paragraph.getFurthestOnlyChildAncestor(text.key), null) + assert.equal(document.getFurthestOnlyChildAncestor(text.key), paragraph) +}