diff --git a/__tests__/components/TowerLogo.test.jsx b/__tests__/components/TowerLogo.test.jsx
new file mode 100644
index 0000000000..5a6561ff42
--- /dev/null
+++ b/__tests__/components/TowerLogo.test.jsx
@@ -0,0 +1,58 @@
+import React from 'react';
+import { MemoryRouter } from 'react-router-dom';
+import { mount } from 'enzyme';
+import TowerLogo from '../../src/components/TowerLogo';
+
+let logoWrapper;
+let towerLogoElem;
+let brandElem;
+
+const findChildren = () => {
+ towerLogoElem = logoWrapper.find('TowerLogo');
+ brandElem = logoWrapper.find('Brand');
+};
+
+describe('', () => {
+ test('initially renders without crashing', () => {
+ logoWrapper = mount();
+ findChildren();
+ expect(logoWrapper.length).toBe(1);
+ expect(towerLogoElem.length).toBe(1);
+ expect(brandElem.length).toBe(1);
+ });
+
+ test('adds navigation to route history on click', () => {
+ const onLogoClick = jest.fn();
+ logoWrapper = mount();
+ findChildren();
+ expect(towerLogoElem.props().history.length).toBe(1);
+ logoWrapper.simulate('click');
+ expect(towerLogoElem.props().history.length).toBe(2);
+ });
+
+ test('gracefully handles not being passed click handler', () => {
+ logoWrapper = mount();
+ findChildren();
+ expect(towerLogoElem.props().history.length).toBe(1);
+ logoWrapper.simulate('click');
+ expect(towerLogoElem.props().history.length).toBe(1);
+ });
+
+ test('handles mouse over and out state.hover changes', () => {
+ const onLogoClick = jest.fn();
+ logoWrapper = mount();
+ findChildren();
+ findChildren();
+ expect(brandElem.props().src).toBe('tower-logo-header.svg');
+ brandElem.props().onMouseOver();
+ expect(towerLogoElem.state().hover).toBe(true);
+ logoWrapper.update();
+ findChildren();
+ expect(brandElem.props().src).toBe('tower-logo-header-hover.svg');
+ brandElem.props().onMouseOut();
+ expect(towerLogoElem.state().hover).toBe(false);
+ logoWrapper.update();
+ findChildren();
+ expect(brandElem.props().src).toBe('tower-logo-header.svg');
+ });
+});
diff --git a/src/components/TowerLogo/TowerLogo.jsx b/src/components/TowerLogo/TowerLogo.jsx
index 242e77864c..113e405453 100644
--- a/src/components/TowerLogo/TowerLogo.jsx
+++ b/src/components/TowerLogo/TowerLogo.jsx
@@ -13,13 +13,13 @@ class TowerLogo extends Component {
}
onClick = () => {
- if (!this.props.onClick) return;
+ const { history, onClick: handleClick } = this.props;
- const { history } = this.props;
+ if (!handleClick) return;
history.push('/');
- this.props.onClick();
+ handleClick();
};
onHover = () => {
@@ -30,10 +30,11 @@ class TowerLogo extends Component {
render () {
const { hover } = this.state;
+ const { onClick: handleClick } = this.props;
let src = TowerLogoHeader;
- if (hover && this.props.onClick) {
+ if (hover && handleClick) {
src = TowerLogoHeaderHover;
}