import { createVNode as h, render, nodeOps, NodeTypes, TestElement, TestText // dumpOps, // NodeOpTypes, // nextTick, // state, // resetOps, // serialize, // triggerEvent } from '../src' describe('test renderer', () => { it('should work', async () => { const root = nodeOps.createElement('div') render( h( 'div', { id: 'test' }, 'hello' ), root ) expect(root.children.length).toBe(1) const el = root.children[0] as TestElement expect(el.type).toBe(NodeTypes.ELEMENT) expect(el.props.id).toBe('test') expect(el.children.length).toBe(1) const text = el.children[0] as TestText expect(text.type).toBe(NodeTypes.TEXT) expect(text.text).toBe('hello') }) // it('should record ops', async () => { // const store = state({ // id: 'test', // text: 'hello' // }) // class App extends Component { // render() { // return h( // 'div', // { // id: store.id // }, // store.text // ) // } // } // const root = nodeOps.createElement('div') // resetOps() // await render(h(App), root) // const ops = dumpOps() // expect(ops.length).toBe(5) // expect(ops[0]).toEqual({ // type: NodeOpTypes.CREATE, // nodeType: NodeTypes.ELEMENT, // tag: 'div', // targetNode: root.children[0] // }) // expect(ops[1]).toEqual({ // type: NodeOpTypes.PATCH, // targetNode: root.children[0], // propKey: 'id', // propPrevValue: null, // propNextValue: 'test' // }) // expect(ops[2]).toEqual({ // type: NodeOpTypes.CREATE, // nodeType: NodeTypes.TEXT, // text: 'hello', // targetNode: (root.children[0] as TestElement).children[0] // }) // expect(ops[3]).toEqual({ // type: NodeOpTypes.APPEND, // targetNode: (root.children[0] as TestElement).children[0], // parentNode: root.children[0] // }) // expect(ops[4]).toEqual({ // type: NodeOpTypes.APPEND, // targetNode: root.children[0], // parentNode: root // }) // // test update ops // store.id = 'foo' // store.text = 'bar' // await nextTick() // const updateOps = dumpOps() // expect(updateOps.length).toBe(2) // expect(updateOps[0]).toEqual({ // type: NodeOpTypes.PATCH, // targetNode: root.children[0], // propKey: 'id', // propPrevValue: 'test', // propNextValue: 'foo' // }) // expect(updateOps[1]).toEqual({ // type: NodeOpTypes.SET_TEXT, // targetNode: (root.children[0] as TestElement).children[0], // text: 'bar' // }) // }) // it('should be able to serialize nodes', async () => { // class App extends Component { // render() { // return h( // 'div', // { // id: 'test' // }, // [h('span', 'foo'), 'hello'] // ) // } // } // const root = nodeOps.createElement('div') // await render(h(App), root) // expect(serialize(root)).toEqual( // `