From ff5c8f64cc7fcc2c0ab04dd7206ffc960c6b79ac Mon Sep 17 00:00:00 2001 From: Nicolas Gallagher Date: Tue, 1 Sep 2015 16:45:11 -0700 Subject: [PATCH] Text tests --- src/modules/Text/TextStylePropTypes.js | 2 +- src/modules/Text/index.js | 2 +- src/modules/Text/index.spec.js | 67 ++++++++++++++++++++++++++ 3 files changed, 69 insertions(+), 2 deletions(-) create mode 100644 src/modules/Text/index.spec.js diff --git a/src/modules/Text/TextStylePropTypes.js b/src/modules/Text/TextStylePropTypes.js index 3d9695c9..bc3407c9 100644 --- a/src/modules/Text/TextStylePropTypes.js +++ b/src/modules/Text/TextStylePropTypes.js @@ -6,6 +6,6 @@ export default { ...StylePropTypes.TypographicPropTypes }; -export const TextDefaultStyles = { +export const TextDefaultStyle = { display: 'inline' } diff --git a/src/modules/Text/index.js b/src/modules/Text/index.js index c26bbaeb..06a897e1 100644 --- a/src/modules/Text/index.js +++ b/src/modules/Text/index.js @@ -16,7 +16,7 @@ class Text extends React.Component { static defaultProps = { className: '', - component: 'div' + component: 'span' } render() { diff --git a/src/modules/Text/index.spec.js b/src/modules/Text/index.spec.js new file mode 100644 index 00000000..aab1c9f7 --- /dev/null +++ b/src/modules/Text/index.spec.js @@ -0,0 +1,67 @@ +import assert from 'assert'; +import React from 'react/addons'; + +import { TextDefaultStyle } from './TextStylePropTypes'; +import Text from '.'; + +const ReactTestUtils = React.addons.TestUtils; + +function shallowRender(component, context = {}) { + const shallowRenderer = React.addons.TestUtils.createRenderer(); + shallowRenderer.render(component, context); + return shallowRenderer.getRenderOutput(); +} + +suite('Text', () => { + test('defaults', () => { + const result = ReactTestUtils.renderIntoDocument(); + const root = React.findDOMNode(result); + + assert.equal((root.tagName).toLowerCase(), 'span'); + }); + + test('prop "children"', () => { + const children = 'children'; + const result = shallowRender({children}); + + assert.equal(result.props.children, children); + }); + + test('prop "className"', () => { + const className = 'className'; + const result = shallowRender(); + + assert.ok( + (result.props.className).indexOf(className) > -1, + '"className" was not transferred' + ); + }); + + test('prop "component"', () => { + const type = 'a'; + const result = ReactTestUtils.renderIntoDocument(); + const root = React.findDOMNode(result); + + assert.equal( + (root.tagName).toLowerCase(), + type, + '"component" did not produce the correct DOM node type' + ); + }); + + test('prop "style"', () => { + const initial = shallowRender(); + assert.deepEqual( + initial.props.style, + TextDefaultStyle, + 'default "style" is incorrect' + ); + + const unsupported = shallowRender(); + assert.deepEqual( + unsupported.props.style.unsupported, + null, + 'unsupported "style" properties must not be transferred' + ); + }); +});