Skip to content

Commit

Permalink
feat(HelloWorld): add hello world component
Browse files Browse the repository at this point in the history
  • Loading branch information
eddywashere committed Sep 25, 2016
1 parent 567a20e commit a2da070
Show file tree
Hide file tree
Showing 3 changed files with 82 additions and 0 deletions.
45 changes: 45 additions & 0 deletions src/components/HelloWorld.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
import React, { Component, PropTypes } from 'react';
import {
Jumbotron,
Button,
Container,
Col,
Row
} from 'reactstrap';

const propTypes = {
name: PropTypes.string,
message: PropTypes.string
};

const defaultProps = {
name: 'World',
message: 'This is a simple component.'
};

class HelloWorld extends Component {
render() {
const { name, message, children } = this.props;

return (
<Jumbotron className="text-xs-center">
<Container fluid>
<Row>
<Col>
<h1 className="display-4">Hello {name}!</h1>
<p className="lead">
{message}
</p>
{children}
</Col>
</Row>
</Container>
</Jumbotron>
);
}
}

HelloWorld.propTypes = propTypes;
HelloWorld.defaultProps = defaultProps;

export default HelloWorld;
35 changes: 35 additions & 0 deletions src/components/HelloWorld.test.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
import React from 'react';
import { mount } from 'enzyme';
import HelloWorld from './HelloWorld';

describe('HelloWorld', () => {
it('renders without crashing', () => {
mount(<HelloWorld />);
});

it('renders default prop values', () => {
const wrapper = mount(<HelloWorld />);

expect(wrapper.find('h1').text()).toEqual('Hello World!');
expect(wrapper.find('p.lead').text()).toEqual('This is a simple component.');
});

it('renders with custom prop values', () => {
const name = "Ground Control";
const message = "I'm stepping through the door"
const wrapper = mount(<HelloWorld name={name} message={message} />);

expect(wrapper.find('h1').text()).toEqual(`Hello ${name}!`);
expect(wrapper.find('p.lead').text()).toEqual(message);
});

it('renders children', () => {
const wrapper = mount(
<HelloWorld>
<p className="test">Testing</p>
</HelloWorld>
);

expect(wrapper.find('p.test').text()).toEqual('Testing');
});
});
2 changes: 2 additions & 0 deletions src/components/index.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
// export individual components
export HelloWorld from './HelloWorld';

0 comments on commit a2da070

Please sign in to comment.