From c3ca45928ac0f389ea57f37b2f10688f475ec2f5 Mon Sep 17 00:00:00 2001 From: bendtherules Date: Fri, 9 Aug 2019 22:28:02 +0530 Subject: [PATCH] Add testcase - utils.isNodeHtmlLike Tests isNodeHtmlLike and isNodeNotHtmlLike --- test/utils.isNodeHtmlLike.spec.tsx | 72 ++++++++++++++++++++++++++++++ 1 file changed, 72 insertions(+) create mode 100644 test/utils.isNodeHtmlLike.spec.tsx diff --git a/test/utils.isNodeHtmlLike.spec.tsx b/test/utils.isNodeHtmlLike.spec.tsx new file mode 100644 index 0000000..c19e981 --- /dev/null +++ b/test/utils.isNodeHtmlLike.spec.tsx @@ -0,0 +1,72 @@ +import * as React from "react"; + +// Import stuff from src +import { isNodeHtmlLike, isNodeNotHtmlLike } from "../src/utils"; +import { mountAndGetRootNode } from "./utils/mountInEnzyme"; +import { FiberNodeForInstrinsicElement } from "../src/mocked-types"; + +// Import test helpers and sample components + +describe("utils", () => { + let container: HTMLDivElement; + + beforeEach(() => { + container = document.body.appendChild(document.createElement("div")); + }); + + afterEach(() => { + document.body.removeChild(container); + }); + + describe("isNodeHtmlLike", () => { + it("should work for div", () => { + const rootNode = mountAndGetRootNode("div", container); + + const resultPositive = isNodeHtmlLike(rootNode); + const resultNegative = isNodeNotHtmlLike(rootNode); + + expect(resultPositive).not.toBeFalsy(); + expect(resultPositive).toBe(true); + expect(resultNegative).toBeFalsy(); + expect(resultNegative).toBe(false); + }); + + it("should work for svg root element", () => { + const rootNode = mountAndGetRootNode("svg", container); + + const resultPositive = isNodeHtmlLike(rootNode); + const resultNegative = isNodeNotHtmlLike(rootNode); + + expect(resultPositive).not.toBeFalsy(); + expect(resultPositive).toBe(true); + expect(resultNegative).toBeFalsy(); + expect(resultNegative).toBe(false); + }); + + it("should work for svg inner elements", () => { + function SomeSVG() { + return ( + + + + ); + } + const rootNode = mountAndGetRootNode(SomeSVG, container); + + expect(isNodeHtmlLike(rootNode)).toBeFalsy(); + + const circleNode = (rootNode.child as FiberNodeForInstrinsicElement) + .child as FiberNodeForInstrinsicElement; + expect(circleNode).not.toBe(null); + expect(circleNode.type).toBe("circle"); + + const resultPositive = isNodeHtmlLike(circleNode); + const resultNegative = isNodeNotHtmlLike(circleNode); + + expect(resultPositive).not.toBeFalsy(); + expect(resultPositive).toBe(true); + expect(resultNegative).toBeFalsy(); + expect(resultNegative).toBe(false); + }); + }); +});