Skip to content

Commit d22a6df

Browse files
committed
migration
1 parent 7311dd5 commit d22a6df

File tree

5 files changed

+92
-189
lines changed

5 files changed

+92
-189
lines changed

front/src/components/navigation/NavigationBar.js

Lines changed: 0 additions & 126 deletions
This file was deleted.
Lines changed: 84 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,84 @@
1+
import React, { useState } from 'react';
2+
import {
3+
Collapse,
4+
Navbar,
5+
NavbarToggler,
6+
NavbarBrand,
7+
Nav,
8+
NavItem,
9+
NavLink,
10+
} from 'reactstrap';
11+
import { RouteComponentProps } from 'react-router';
12+
import { OwnProps, MappedDispatchToProps, MappedStateToProps } from './index';
13+
14+
// #region types
15+
type Props = {} & RouteComponentProps &
16+
OwnProps &
17+
MappedStateToProps &
18+
MappedDispatchToProps;
19+
// #endregion
20+
21+
function NavigationBar({
22+
brand,
23+
navModel: { rightLinks },
24+
leftNavItemClick,
25+
rightNavItemClick,
26+
isAuthenticated,
27+
history,
28+
disconnectUser,
29+
}: Props) {
30+
const [isOpen, setIsOpen] = useState(false);
31+
32+
// #region navigation bar toggle
33+
const toggle = (event: React.MouseEvent<HTMLAnchorElement, MouseEvent>) => {
34+
event && event.preventDefault();
35+
setIsOpen(!isOpen);
36+
};
37+
// #endregion
38+
39+
// #region handlesNavItemClick event
40+
const handlesNavItemClick = (link: string = '/') => (
41+
event: React.MouseEvent<HTMLButtonElement>,
42+
) => {
43+
event && event.preventDefault();
44+
history.push(link);
45+
};
46+
// #endregion
47+
48+
// #region disconnect
49+
const handlesDisconnect = (event: React.MouseEvent<HTMLButtonElement>) => {
50+
event && event.preventDefault();
51+
disconnectUser();
52+
history.push('/');
53+
};
54+
// #endregion
55+
56+
return (
57+
<Navbar color="light" light expand="md">
58+
<NavbarBrand href="/">{brand}</NavbarBrand>
59+
<NavbarToggler onClick={toggle} />
60+
<Collapse isOpen={isOpen} navbar>
61+
<Nav className="ml-auto" navbar>
62+
{rightLinks.map(({ label, link }, index) => (
63+
<NavItem key={`${index}`}>
64+
<NavLink href="#" onClick={handlesNavItemClick(link)}>
65+
{label}
66+
</NavLink>
67+
</NavItem>
68+
))}
69+
{isAuthenticated && (
70+
<NavItem>
71+
<NavLink href="#" onClick={handlesDisconnect}>
72+
Disconnect
73+
</NavLink>
74+
</NavItem>
75+
)}
76+
</Nav>
77+
</Collapse>
78+
</Navbar>
79+
);
80+
}
81+
82+
NavigationBar.displayName = 'NavigationBar';
83+
84+
export default NavigationBar;

front/src/components/navigation/__tests__/NavigationBar.test.js renamed to front/src/components/navigation/__tests__/NavigationBar.test.tsx

Lines changed: 8 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,7 @@
1-
// @flow
2-
3-
// #region imports
41
import React from 'react';
5-
import renderer from 'react-test-renderer'; // needed both for snpashot testing but also to prevent errors from enzyme
2+
import { shallow } from 'enzyme';
63
import { MemoryRouter } from 'react-router';
74
import NavigationBar from '../NavigationBar';
8-
// #endregion
95

106
describe('NavigationBar component', () => {
117
it('renders as expected', () => {
@@ -33,15 +29,13 @@ describe('NavigationBar component', () => {
3329
},
3430
};
3531

36-
const component = renderer
37-
.create(
38-
<div>
39-
<MemoryRouter>
40-
<NavigationBar {...props} />
41-
</MemoryRouter>
42-
</div>,
43-
)
44-
.toJSON();
32+
const component = shallow(
33+
<div>
34+
<MemoryRouter>
35+
<NavigationBar {...props} />
36+
</MemoryRouter>
37+
</div>,
38+
);
4539
expect(component).toMatchSnapshot();
4640
});
4741
});

front/src/components/navigation/__tests__/__snapshots__/NavigationBar.test.js.snap

Lines changed: 0 additions & 45 deletions
This file was deleted.
Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,5 @@
1-
// @flow
2-
3-
// #region imports
41
import { compose } from 'redux';
52
import withAuth from '../../contexts/auth/consumerHOC';
63
import NavigationBar from './NavigationBar';
7-
// #endregion
84

95
export default compose(withAuth())(NavigationBar);

0 commit comments

Comments
 (0)