From 87de8ed3f7e6784381f2eab535c3d8399e99c472 Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Sun, 11 Sep 2022 16:57:35 +0200 Subject: [PATCH] core-components: fix usage of invalid elements in DependencyGrape tests Signed-off-by: Patrik Oldsberg --- .../components/DependencyGraph/Edge.test.tsx | 27 ++++++++++++++----- .../components/DependencyGraph/Node.test.tsx | 23 +++++++++++----- 2 files changed, 37 insertions(+), 13 deletions(-) diff --git a/packages/core-components/src/components/DependencyGraph/Edge.test.tsx b/packages/core-components/src/components/DependencyGraph/Edge.test.tsx index 82f0435ebd..db6fbe7552 100644 --- a/packages/core-components/src/components/DependencyGraph/Edge.test.tsx +++ b/packages/core-components/src/components/DependencyGraph/Edge.test.tsx @@ -38,7 +38,7 @@ const id = { const setEdge = jest.fn(); const renderElement = jest.fn((props: RenderLabelProps) => ( - {props.edge.label} +
{props.edge.label}
)); const minProps = { @@ -53,8 +53,7 @@ const edgeWithLabel = { ...edge, label }; describe('', () => { beforeEach(() => { - // jsdom does not support SVG elements so we have to fall back to HTMLUnknownElement - Object.defineProperty(window.HTMLUnknownElement.prototype, 'getBBox', { + Object.defineProperty(window.SVGElement.prototype, 'getBBox', { value: () => ({ width: 100, height: 100 }), configurable: true, }); @@ -63,26 +62,40 @@ describe('', () => { afterEach(jest.clearAllMocks); it('does not render the supplied label element if label is missing', () => { - const { container } = render(); + const { container } = render( + + + , + ); expect(container.getElementsByTagName('g')).toHaveLength(0); }); it('renders the supplied label element if label is present', () => { - const { getByText } = render(); + const { getByText } = render( + + + , + ); expect(getByText(label)).toBeInTheDocument(); }); it('passes down edge properties to the render method if label is present', () => { const edgeWithRandomProp = { ...edge, label, randomProp: true }; render( - , + + + , ); expect(renderElement).toHaveBeenCalledWith({ edge: edgeWithRandomProp }); }); it('calls setEdge with edge ID and actual label size after rendering', () => { - const { getByText } = render(); + const { getByText } = render( + + + , + ); expect(getByText(label)).toBeInTheDocument(); // Updates the edge in the graph diff --git a/packages/core-components/src/components/DependencyGraph/Node.test.tsx b/packages/core-components/src/components/DependencyGraph/Node.test.tsx index aaba09c004..ea69220336 100644 --- a/packages/core-components/src/components/DependencyGraph/Node.test.tsx +++ b/packages/core-components/src/components/DependencyGraph/Node.test.tsx @@ -23,7 +23,7 @@ import { RenderNodeProps } from './types'; const node = { id: 'abc', x: 0, y: 0, width: 0, height: 0 }; const setNode = jest.fn(() => new dagre.graphlib.Graph()); const renderElement = jest.fn((props: RenderNodeProps) => ( - {props.node.id} +
{props.node.id}
)); const minProps = { @@ -34,8 +34,7 @@ const minProps = { describe('', () => { beforeEach(() => { - // jsdom does not support SVG elements so we have to fall back to HTMLUnknownElement - Object.defineProperty(window.HTMLUnknownElement.prototype, 'getBBox', { + Object.defineProperty(window.SVGElement.prototype, 'getBBox', { value: () => ({ width: 100, height: 100 }), configurable: true, }); @@ -44,19 +43,31 @@ describe('', () => { afterEach(jest.clearAllMocks); it('renders the supplied element', () => { - const { getByText } = render(); + const { getByText } = render( + + + , + ); expect(getByText(minProps.node.id)).toBeInTheDocument(); }); it('passes down node properties to the render method', () => { const nodeWithRandomProp = { ...node, randomProp: true }; - render(); + render( + + + , + ); expect(renderElement).toHaveBeenCalledWith({ node: nodeWithRandomProp }); }); it('calls setNode with node ID and actual size after rendering', () => { - const { getByText } = render(); + const { getByText } = render( + + + , + ); expect(getByText(minProps.node.id)).toBeInTheDocument(); // Updates the node in the graph