aboutsummaryrefslogtreecommitdiffstats
path: root/src/components/organisms/navbar/navbar.test.tsx
diff options
context:
space:
mode:
authorArmand Philippot <git@armandphilippot.com>2023-11-21 16:10:20 +0100
committerArmand Philippot <git@armandphilippot.com>2023-11-21 18:17:47 +0100
commitc6212f927daf3c928f479afa052e4772216a2d8a (patch)
tree6bb71d9cea03e110d10120ba4bf24e3a6f4ff7d0 /src/components/organisms/navbar/navbar.test.tsx
parent70b4f633a6fbedb58c8b9134ac64ede854d489de (diff)
refactor(components): replace items prop in Navbar component
* replace `items` prop with `children` prop: it is more readable this way, * handle navbar item state inside NavbarItem component: it avoid using three differents states and their methods to do exactly the same thing * remove useAutofocus hook since we can't use it anymore * add `onActivation` and `activationHandlerDelay` prop to NavbarItem component to be able to focus the search input only when the item is activated (it replicates the functioning of useAutofocus hook) * replace `ref` type in SearchForm component: it does not make sense to use an input ref for a form. Instead I use useImperativeHandle to provide different a focus method to the given ref.
Diffstat (limited to 'src/components/organisms/navbar/navbar.test.tsx')
-rw-r--r--src/components/organisms/navbar/navbar.test.tsx47
1 files changed, 13 insertions, 34 deletions
diff --git a/src/components/organisms/navbar/navbar.test.tsx b/src/components/organisms/navbar/navbar.test.tsx
index 35b33f2..6578672 100644
--- a/src/components/organisms/navbar/navbar.test.tsx
+++ b/src/components/organisms/navbar/navbar.test.tsx
@@ -1,42 +1,21 @@
import { describe, expect, it } from '@jest/globals';
import { render, screen as rtlScreen } from '@testing-library/react';
-import { Navbar, type NavbarItems } from './navbar';
-
-const doNothing = () => {
- // do nothing;
-};
-
-const items: NavbarItems = [
- {
- icon: 'hamburger',
- id: 'main-nav',
- isActive: false,
- label: 'Nav',
- contents: 'Main nav contents',
- onToggle: doNothing,
- },
- {
- icon: 'magnifying-glass',
- id: 'search',
- isActive: false,
- label: 'Search',
- contents: 'Search contents',
- onToggle: doNothing,
- },
- {
- icon: 'cog',
- id: 'settings',
- isActive: false,
- label: 'Settings',
- contents: 'Settings contents',
- onToggle: doNothing,
- },
-];
+import { Navbar } from './navbar';
+import { NavbarItem } from './navbar-item';
describe('Navbar', () => {
it('renders the given items', () => {
- render(<Navbar items={items} />);
+ render(
+ <Navbar>
+ <NavbarItem icon="hamburger" id="main-nav" label="Main nav">
+ Main nav
+ </NavbarItem>
+ <NavbarItem icon="magnifying-glass" id="search" label="Search">
+ Search form
+ </NavbarItem>
+ </Navbar>
+ );
- expect(rtlScreen.getAllByRole('listitem')).toHaveLength(items.length);
+ expect(rtlScreen.getAllByRole('listitem')).toHaveLength(2);
});
});