diff --git a/jest/setup.js b/jest/setup.js index ea1c273..6c6f32f 100644 --- a/jest/setup.js +++ b/jest/setup.js @@ -6,3 +6,5 @@ Enzyme.configure({ adapter: new Adapter() }); global.___loader = { enqueue: jest.fn() }; + +global.Element.prototype.getBBox = jest.fn(); diff --git a/src/rendering/Text/__snapshots__/test.js.snap b/src/rendering/Text/__snapshots__/test.js.snap new file mode 100644 index 0000000..0543be4 --- /dev/null +++ b/src/rendering/Text/__snapshots__/test.js.snap @@ -0,0 +1,92 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`Text layout 1`] = ` +Object { + "box": Object { + "height": 20, + "width": 100, + }, + "children": Array [ + "Example content", + ], + "props": Object { + "property": "example", + "transform": "translate(0 -18)", + }, + "type": "Text", +} +`; + +exports[`Text positioning text 1`] = ` + + Example + +`; + +exports[`Text rendering 1`] = ` + + Example + +`; + +exports[`Text rendering quoted text 1`] = ` + + + “ + + + Example + + + ” + + +`; + +exports[`Text rendering with a theme 1`] = ` + + Example + +`; diff --git a/src/rendering/Text/test.js b/src/rendering/Text/test.js new file mode 100644 index 0000000..068b59e --- /dev/null +++ b/src/rendering/Text/test.js @@ -0,0 +1,53 @@ +import React from 'react'; +import { shallow } from 'enzyme'; + +import Text, { layout } from 'rendering/Text'; + +describe('Text', () => { + test('rendering', () => { + const component = shallow( + Example + ); + expect(component).toMatchSnapshot(); + }); + + test('positioning text', () => { + const component = shallow( + Example + ); + expect(component).toMatchSnapshot(); + }); + + test('rendering with a theme', () => { + const component = shallow( + Example + ); + expect(component).toMatchSnapshot(); + }); + + test('rendering quoted text', () => { + const component = shallow( + Example + ); + expect(component).toMatchSnapshot(); + }); + + test('layout', () => { + global.Element.prototype.getBBox.mockReturnValue({ + width: 100, + height: 20, + y: 18 + }); + + const processed = layout({ + type: 'Text', + props: { + property: 'example' + }, + children: [ + 'Example content' + ] + }); + expect(processed).toMatchSnapshot(); + }); +});