diff options
author | Sebastian <sebasjm@gmail.com> | 2021-08-23 16:46:06 -0300 |
---|---|---|
committer | Sebastian <sebasjm@gmail.com> | 2021-08-23 16:48:30 -0300 |
commit | 38acabfa6089ab8ac469c12b5f55022fb96935e5 (patch) | |
tree | 453dbf70000cc5e338b06201af1eaca8343f8f73 /preact/debug/test/browser/serializeVNode.test.js | |
parent | f26125e039143b92dc0d84e7775f508ab0cdcaa8 (diff) | |
download | node-vendor-38acabfa6089ab8ac469c12b5f55022fb96935e5.tar.gz node-vendor-38acabfa6089ab8ac469c12b5f55022fb96935e5.tar.bz2 node-vendor-38acabfa6089ab8ac469c12b5f55022fb96935e5.zip |
Diffstat (limited to 'preact/debug/test/browser/serializeVNode.test.js')
-rw-r--r-- | preact/debug/test/browser/serializeVNode.test.js | 66 |
1 files changed, 66 insertions, 0 deletions
diff --git a/preact/debug/test/browser/serializeVNode.test.js b/preact/debug/test/browser/serializeVNode.test.js new file mode 100644 index 0000000..f8c8515 --- /dev/null +++ b/preact/debug/test/browser/serializeVNode.test.js @@ -0,0 +1,66 @@ +import { createElement, Component } from 'preact'; +import { serializeVNode } from '../../src/debug'; + +/** @jsx createElement */ + +describe('serializeVNode', () => { + it("should prefer a function component's displayName", () => { + function Foo() { + return <div />; + } + Foo.displayName = 'Bar'; + + expect(serializeVNode(<Foo />)).to.equal('<Bar />'); + }); + + it("should prefer a class component's displayName", () => { + class Bar extends Component { + render() { + return <div />; + } + } + Bar.displayName = 'Foo'; + + expect(serializeVNode(<Bar />)).to.equal('<Foo />'); + }); + + it('should serialize vnodes without children', () => { + expect(serializeVNode(<br />)).to.equal('<br />'); + }); + + it('should serialize vnodes with children', () => { + expect(serializeVNode(<div>Hello World</div>)).to.equal('<div>..</div>'); + }); + + it('should serialize components', () => { + function Foo() { + return <div />; + } + expect(serializeVNode(<Foo />)).to.equal('<Foo />'); + }); + + it('should serialize props', () => { + expect(serializeVNode(<div class="foo" />)).to.equal('<div class="foo" />'); + + // Ensure that we have a predictable function name. Our test runner + // creates an all inclusive bundle per file and the identifier + // "noop" may have already been used. + // eslint-disable-next-line func-style + let noop = function noopFn() {}; + expect(serializeVNode(<div onClick={noop} />)).to.equal( + '<div onClick="function noopFn() {}" />' + ); + + function Foo(props) { + return props.foo; + } + + expect(serializeVNode(<Foo foo={[1, 2, 3]} />)).to.equal( + '<Foo foo="1,2,3" />' + ); + + expect(serializeVNode(<div prop={Object.create(null)} />)).to.equal( + '<div prop="[object Object]" />' + ); + }); +}); |