From d524860ad764cc90d66ba82816f35be73230cf98 Mon Sep 17 00:00:00 2001 From: Shahar Dawn Or Date: Mon, 3 Feb 2020 22:47:24 +0700 Subject: [PATCH] test: compare deep instead of JSON in assertions (#531) --- src/test/jsx.tsx | 206 ++++++++++++++++++++++++++++++++++++++++------- 1 file changed, 175 insertions(+), 31 deletions(-) diff --git a/src/test/jsx.tsx b/src/test/jsx.tsx index b856a6f..9bd50f3 100644 --- a/src/test/jsx.tsx +++ b/src/test/jsx.tsx @@ -6,34 +6,57 @@ describe('snabbdom', function () { it('can be used as a jsxFactory method', function () { const vnode =
Hello World
; - assert.strictEqual(JSON.stringify(vnode), JSON.stringify({ + assert.deepStrictEqual(vnode, { sel: 'div', data: { title: 'Hello World' }, + children: undefined, + elm: undefined, text: 'Hello World', - })); + key: undefined + }); }); it('creates text property for text only child', function () { const vnode =
foo bar
; - assert.strictEqual(JSON.stringify(vnode), JSON.stringify({ + assert.deepStrictEqual(vnode, { sel: 'div', data: {}, + children: undefined, + elm: undefined, text: 'foo bar', - })); + key: undefined + }); }); it('creates an array of children for multiple children', function () { const vnode =
{'foo'}{'bar'}
; - assert.strictEqual(JSON.stringify(vnode), JSON.stringify({ + assert.deepStrictEqual(vnode, { sel: 'div', data: {}, children: [ - { text: 'foo' }, - { text: 'bar' }, - ] - })); + { + sel: undefined, + data: undefined, + children: undefined, + elm: undefined, + text: 'foo', + key: undefined + }, + { + sel: undefined, + data: undefined, + children: undefined, + elm: undefined, + text: 'bar', + key: undefined + }, + ], + elm: undefined, + text: undefined, + key: undefined + }); }); it('flattens children', function () { @@ -45,16 +68,47 @@ describe('snabbdom', function () { ); - assert.strictEqual(JSON.stringify(vnode), JSON.stringify({ + assert.deepStrictEqual(vnode, { sel: 'section', data: {}, children: [ - { sel: 'h1', data: {}, text: 'A Heading' }, - { text: 'some description' }, - { sel: 'span', data: {}, text: 'part1' }, - { sel: 'span', data: {}, text: 'part2' }, + { + sel: 'h1', + data: {}, + children: undefined, + elm: undefined, + text: 'A Heading', + key: undefined + }, + { + sel: undefined, + data: undefined, + children: undefined, + elm: undefined, + text: 'some description', + key: undefined + }, + { + sel: 'span', + data: {}, + children: undefined, + elm: undefined, + text: 'part1', + key: undefined + }, + { + sel: 'span', + data: {}, + children: undefined, + elm: undefined, + text: 'part2', + key: undefined + }, ], - })); + elm: undefined, + text: undefined, + key: undefined + }); }); it('removes falsey children', function () { @@ -76,17 +130,55 @@ describe('snabbdom', function () { ); - assert.strictEqual(JSON.stringify(vnode), JSON.stringify({ + assert.deepStrictEqual(vnode, { sel: 'div', data: {}, children: [ - { text: 'Login Form' }, - { text: 'Login Attempts: ' }, - { text: '0' }, - { text: 'Logged In: ' }, - { text: 'true' }, + { + sel: undefined, + data: undefined, + children: undefined, + elm: undefined, + text: 'Login Form', + key: undefined + }, + { + sel: undefined, + data: undefined, + children: undefined, + elm: undefined, + text: 'Login Attempts: ', + key: undefined + }, + { + sel: undefined, + data: undefined, + children: undefined, + elm: undefined, + text: '0', + key: undefined + }, + { + sel: undefined, + data: undefined, + children: undefined, + elm: undefined, + text: 'Logged In: ', + key: undefined + }, + { + sel: undefined, + data: undefined, + children: undefined, + elm: undefined, + text: 'true', + key: undefined + }, ], - })); + elm: undefined, + text: undefined, + key: undefined + }); }); it('works with a function component', function () { @@ -100,19 +192,71 @@ describe('snabbdom', function () { ); - assert.strictEqual(JSON.stringify(vnode), JSON.stringify({ + assert.deepStrictEqual(vnode, { sel: 'div', data: {}, children: [ - { sel: 'a', data: { attrs: { href: 'https://github.com/snabbdom/snabbdom' } }, text: 'Snabbdom' }, - { text: 'and tsx' }, - { sel: 'span', data: {}, text: 'work' }, - { sel: 'span', data: {}, text: 'like' }, - { sel: 'span', data: {}, text: 'a' }, - { sel: 'span', data: {}, text: 'charm!' }, - { text: 'πŸ’ƒπŸ•ΊπŸŽ‰' }, + { + sel: 'a', + data: { attrs: { href: 'https://github.com/snabbdom/snabbdom' } }, + children: undefined, + elm: undefined, + text: 'Snabbdom', + key: undefined + }, + { + sel: undefined, + data: undefined, + children: undefined, + elm: undefined, + text: 'and tsx', + key: undefined + }, + { + sel: 'span', + data: {}, + children: undefined, + elm: undefined, + text: 'work', + key: undefined + }, + { + sel: 'span', + data: {}, + children: undefined, + elm: undefined, + text: 'like', + key: undefined + }, + { + sel: 'span', + data: {}, + children: undefined, + elm: undefined, + text: 'a', + key: undefined + }, + { + sel: 'span', + data: {}, + children: undefined, + elm: undefined, + text: 'charm!', + key: undefined + }, + { + sel: undefined, + data: undefined, + children: undefined, + elm: undefined, + text: 'πŸ’ƒπŸ•ΊπŸŽ‰', + key: undefined + }, ], - })); + elm: undefined, + text: undefined, + key: undefined + }); }) }); });