1
0
mirror of https://github.com/ianstormtaylor/slate.git synced 2025-08-22 06:53:25 +02:00

Refactor tests (#2021)

* add slate-dev-test-utils, refactor tests to use fixtures util

* cleanup top-level test files

* tweaks
This commit is contained in:
Ian Storm Taylor
2018-08-01 09:16:02 -07:00
committed by GitHub
parent f7fd0b7a4e
commit 1748a4b0c1
39 changed files with 465 additions and 812 deletions

View File

@@ -1,56 +1,29 @@
import assert from 'assert'
import fs from 'fs'
import { Value, KeyUtils } from 'slate'
import { basename, extname, resolve } from 'path'
beforeEach(KeyUtils.resetGenerator)
import { Value } from 'slate'
import { fixtures } from 'slate-dev-test-utils'
describe('slate-hyperscript', () => {
const dir = resolve(__dirname, './fixtures')
const tests = fs
.readdirSync(dir)
.filter(t => t[0] != '.')
.map(t => basename(t, extname(t)))
fixtures(__dirname, 'fixtures', ({ module }) => {
const { input, output, options } = module
const actual = input.toJSON(options)
const expected = Value.isValue(output) ? output.toJSON() : output
assert.deepEqual(actual, expected)
})
for (const test of tests) {
it(test, async () => {
const module = require(resolve(dir, test))
const { input, output, options } = module
const actual = input.toJSON(options)
const expected = Value.isValue(output) ? output.toJSON() : output
assert.deepEqual(actual, expected)
})
}
fixtures.skip(__dirname, 'decorations', ({ module }) => {
const { input, output, expectDecorations } = module
const actual = input.toJSON()
const expected = Value.isValue(output) ? output.toJSON() : output
assert.deepEqual(actual, expected)
describe.skip('decorations', () => {
const decDir = resolve(__dirname, './decorations')
const decTests = fs
.readdirSync(decDir)
.filter(t => t[0] != '.')
.map(t => basename(t, extname(t)))
for (const test of decTests) {
it(test, async () => {
const module = require(resolve(decDir, test))
const { input, output, expectDecorations } = module
// ensure deserialization was okay
const actual = input.toJSON()
const expected = Value.isValue(output) ? output.toJSON() : output
assert.deepEqual(actual, expected)
// ensure expected properties of decorations match
// note: they are expected to match order in test result
expectDecorations.forEach((decoration, i) => {
Object.keys(decoration).forEach(prop => {
assert.deepEqual(
decoration[prop],
input.decorations.toJS()[i][prop],
`decoration ${i} had incorrect prop: ${prop}`
)
})
})
expectDecorations.forEach((decoration, i) => {
Object.keys(decoration).forEach(prop => {
assert.deepEqual(
decoration[prop],
input.decorations.toJS()[i][prop],
`decoration ${i} had incorrect prop: ${prop}`
)
})
}
})
})
})