let NewD3 = function () { function returnThis() { return this; } return { append: function () { return NewD3(); }, lower: returnThis, attr: returnThis, style: returnThis, text: returnThis, 0: { 0: { getBBox: function () { return { height: 10, width: 20, }; }, }, }, }; }; export const select = function () { return new NewD3(); }; export const selectAll = function () { return new NewD3(); }; export const curveBasis = 'basis'; export const curveLinear = 'linear'; export const curveCardinal = 'cardinal'; export const MockD3 = (name, parent) => { const children = []; const elem = { get __children() { return children; }, get __name() { return name; }, get __parent() { return parent; }, }; elem.append = (name) => { const mockElem = MockD3(name, elem); children.push(mockElem); return mockElem; }; elem.lower = jest.fn(() => elem); elem.attr = jest.fn(() => elem); elem.text = jest.fn(() => elem); elem.style = jest.fn(() => elem); return elem; };