Skip to content

Commit 0403094

Browse files
committed
updated Header component and Header.test to reflect changes
1 parent cd13e57 commit 0403094

File tree

3 files changed

+58
-9
lines changed

3 files changed

+58
-9
lines changed

__tests__/components/Header.test.tsx

Lines changed: 54 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import React from 'react';
44
import { render, fireEvent, screen } from '@testing-library/react';
55
import Header from '../../app/components/Header/Header';
6+
import ServiceDropdown from '../../app/components/Header/ServiceDropdown';
67
import { DashboardContext } from '../../app/context/DashboardContext';
78
import { ApplicationContext } from '../../app/context/ApplicationContext';
89
import { HashRouter as Router } from 'react-router-dom';
@@ -55,13 +56,59 @@ describe('Speed Chart', () => {
5556
});
5657

5758
// trying to test the functionality of component not passed as props
58-
it('Should check/uncheck the checkbox when clicking services', () => {
59-
// const checkBox = screen.getByRole('checkbox');
60-
// fireEvent.click(checkBox);
61-
// expect(checkBox.parentElement).toHaveClass('selected');
62-
// fireEvent.click(checkBox);
63-
// expect(checkBox.parentElement).not.toHaveClass('selected');
64-
});
59+
// it('Should check/uncheck the checkbox when clicking services', () => {
60+
// const checkBox = screen.getByTestId('checkbox');
61+
// fireEvent.click(checkBox);
62+
// expect(checkBox.parentElement).toHaveClass('selected');
63+
// fireEvent.click(checkBox);
64+
// expect(checkBox.parentElement).not.toHaveClass('selected');
65+
// });
6566

6667
it('Should also change selectModal to true or false', () => {});
6768
});
69+
70+
describe('ServiceDropdown test', () => {
71+
it('opens and closes ServiceDropdown component on click', () => {
72+
const servicesData = [
73+
{ microservice: 'inventory' },
74+
{ microservice: 'orders' },
75+
{ microservice: 'auth' }
76+
];
77+
78+
// Define initial selected services state
79+
const selectedServices = [];
80+
81+
// Define a mock toggleDropdown function
82+
const toggleDropdown = jest.fn();
83+
84+
// Render the ServiceDropdown component
85+
render(
86+
<ServiceDropdown
87+
servicesData={servicesData}
88+
selectedServices={selectedServices}
89+
setSelectedServices={jest.fn()} // Mock setSelectedServices function
90+
isOpen={false} // Assuming dropdown is closed initially
91+
toggleDropdown={toggleDropdown}
92+
/>
93+
);
94+
95+
// Assert that dropdown is initially closed
96+
expect(screen.queryByText('inventory')).not.toBeInTheDocument();
97+
98+
// simulate click event on button within ServiceDropdown component
99+
const selectButton = screen.getByTestId('ssButton');
100+
fireEvent.click(selectButton);
101+
102+
// expect the toggleDropdown function to have been called
103+
expect(toggleDropdown).toHaveBeenCalled();
104+
105+
// Assert that dropdown is now open by checking that service is rendered
106+
// expect(screen.getByText('inventory')).toBeInTheDocument();
107+
108+
// // Simulate click event to close the dropdown
109+
// fireEvent.click(selectButton);
110+
111+
// // Assert that dropdown is now closed by checking that service is no longer rendered
112+
// expect(screen.getByText('inventory')).not.toBeInTheDocument();
113+
});
114+
});

app/components/Header/Header.tsx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@ interface HeaderProps {
3838
setSelectedServices={setSelectedServices}
3939
isOpen={selectModal}
4040
toggleDropdown={toggleDropdown}
41+
data-testid="ServiceDropdownToggle"
4142
/>
4243
<LiveToggle live={live} toggleLive={() => setLive && setLive(!live)} />
4344
</div>

app/components/Header/ServiceDropdown.tsx

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import React from 'react';
22

3-
const ServiceDropdown = ({ servicesData, selectedServices, setSelectedServices, isOpen, toggleDropdown }) => {
3+
const ServiceDropdown = ({ servicesData, selectedServices, setSelectedServices, isOpen, toggleDropdown }) => {
44
const handleCheckbox = (e) => {
55
const service = e.target.value;
66
if (e.target.checked) {
@@ -12,7 +12,7 @@ const ServiceDropdown = ({ servicesData, selectedServices, setSelectedServices,
1212

1313
return (
1414
<div className={isOpen ? 'dropdown active' : 'dropdown'}>
15-
<div className={isOpen ? 'select disabled' : 'select'} onClick={toggleDropdown}>
15+
<div className={isOpen ? 'select disabled' : 'select'} onClick={toggleDropdown} data-testid="ssButton">
1616
Select Services
1717
</div>
1818
{isOpen && (
@@ -21,6 +21,7 @@ const ServiceDropdown = ({ servicesData, selectedServices, setSelectedServices,
2121
<label key={service.microservice} className="select">
2222
{service.microservice}
2323
<input
24+
data-testid="checkbox"
2425
type="checkbox"
2526
value={service.microservice}
2627
checked={selectedServices.includes(service.microservice)}

0 commit comments

Comments
 (0)