summaryrefslogtreecommitdiff
path: root/preact/debug/test/browser/serializeVNode.test.js
diff options
context:
space:
mode:
authorSebastian <sebasjm@gmail.com>2021-08-23 16:46:06 -0300
committerSebastian <sebasjm@gmail.com>2021-08-23 16:48:30 -0300
commit38acabfa6089ab8ac469c12b5f55022fb96935e5 (patch)
tree453dbf70000cc5e338b06201af1eaca8343f8f73 /preact/debug/test/browser/serializeVNode.test.js
parentf26125e039143b92dc0d84e7775f508ab0cdcaa8 (diff)
downloadnode-vendor-38acabfa6089ab8ac469c12b5f55022fb96935e5.tar.gz
node-vendor-38acabfa6089ab8ac469c12b5f55022fb96935e5.tar.bz2
node-vendor-38acabfa6089ab8ac469c12b5f55022fb96935e5.zip
added web vendorsHEADmaster
Diffstat (limited to 'preact/debug/test/browser/serializeVNode.test.js')
-rw-r--r--preact/debug/test/browser/serializeVNode.test.js66
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]" />'
+ );
+ });
+});