Skip to content

Commit 0d695cd

Browse files
committed
fix frontend tests
1 parent 7b289c3 commit 0d695cd

File tree

3 files changed

+71
-14
lines changed

3 files changed

+71
-14
lines changed

frontend/src/components/Connect/Details/Actions/__tests__/Actions.spec.tsx

Lines changed: 21 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -87,23 +87,25 @@ describe('Actions', () => {
8787
expect(screen.getByText('Resume')).toBeInTheDocument();
8888
expect(screen.queryByText('Pause')).not.toBeInTheDocument();
8989
expect(screen.queryByText('Stop')).not.toBeInTheDocument();
90-
expect(screen.queryByText('Reset Offsets')).toBeInTheDocument();
91-
expect(screen.getByText('Reset Offsets')).toBeDisabled();
90+
await afterClickDropDownButton();
91+
expect(screen.getByText('Reset Offsets')).toBeInTheDocument();
92+
expect(screen.getByRole('menuitem', { name: 'Reset Offsets' })).toHaveAttribute('aria-disabled');
9293
expectActionButtonsExists();
9394
});
9495

9596
it('renders buttons when stopped', async () => {
9697
(useConnector as jest.Mock).mockImplementation(() => ({
97-
data: setConnectorStatus(connector, ConnectorState.PAUSED),
98+
data: setConnectorStatus(connector, ConnectorState.STOPPED),
9899
}));
99100
renderComponent();
100101
await afterClickRestartButton();
101102
expect(screen.getAllByRole('menuitem').length).toEqual(4);
102103
expect(screen.getByText('Resume')).toBeInTheDocument();
103104
expect(screen.queryByText('Pause')).not.toBeInTheDocument();
104105
expect(screen.queryByText('Stop')).not.toBeInTheDocument();
105-
expect(screen.queryByText('Reset Offsets')).toBeInTheDocument();
106-
expect(screen.getByText('Reset Offsets')).toBeEnabled();
106+
await afterClickDropDownButton();
107+
expect(screen.getByText('Reset Offsets')).toBeInTheDocument();
108+
expect(screen.getByRole('menuitem', { name: 'Reset Offsets' })).not.toHaveAttribute('aria-disabled');
107109
expectActionButtonsExists();
108110
});
109111

@@ -117,8 +119,9 @@ describe('Actions', () => {
117119
expect(screen.queryByText('Resume')).not.toBeInTheDocument();
118120
expect(screen.queryByText('Pause')).not.toBeInTheDocument();
119121
expect(screen.queryByText('Stop')).not.toBeInTheDocument();
120-
expect(screen.queryByText('Reset Offsets')).toBeInTheDocument();
121-
expect(screen.getByText('Reset Offsets')).toBeDisabled();
122+
await afterClickDropDownButton();
123+
expect(screen.getByText('Reset Offsets')).toBeInTheDocument();
124+
expect(screen.getByRole('menuitem', { name: 'Reset Offsets' })).toHaveAttribute('aria-disabled');
122125
expectActionButtonsExists();
123126
});
124127

@@ -132,8 +135,9 @@ describe('Actions', () => {
132135
expect(screen.queryByText('Resume')).not.toBeInTheDocument();
133136
expect(screen.queryByText('Pause')).not.toBeInTheDocument();
134137
expect(screen.queryByText('Stop')).not.toBeInTheDocument();
135-
expect(screen.queryByText('Reset Offsets')).toBeInTheDocument();
136-
expect(screen.getByText('Reset Offsets')).toBeDisabled();
138+
await afterClickDropDownButton();
139+
expect(screen.getByText('Reset Offsets')).toBeInTheDocument();
140+
expect(screen.getByRole('menuitem', { name: 'Reset Offsets' })).toHaveAttribute('aria-disabled');
137141
expectActionButtonsExists();
138142
});
139143

@@ -143,12 +147,13 @@ describe('Actions', () => {
143147
}));
144148
renderComponent();
145149
await afterClickRestartButton();
146-
expect(screen.getAllByRole('menuitem').length).toEqual(4);
150+
expect(screen.getAllByRole('menuitem').length).toEqual(5);
147151
expect(screen.queryByText('Resume')).not.toBeInTheDocument();
148152
expect(screen.getByText('Pause')).toBeInTheDocument();
149153
expect(screen.getByText('Stop')).toBeInTheDocument();
150-
expect(screen.queryByText('Reset Offsets')).toBeInTheDocument();
151-
expect(screen.getByText('Reset Offsets')).toBeDisabled();
154+
await afterClickDropDownButton();
155+
expect(screen.getByText('Reset Offsets')).toBeInTheDocument();
156+
expect(screen.getByRole('menuitem', { name: 'Reset Offsets' })).toHaveAttribute('aria-disabled');
152157
expectActionButtonsExists();
153158
});
154159

@@ -168,7 +173,10 @@ describe('Actions', () => {
168173
expect(screen.getByRole('dialog')).toBeInTheDocument();
169174
});
170175

171-
it('opens confirmation modal when reset offsets button clicked', async () => {
176+
it('opens confirmation modal when reset offsets button clicked on a STOPPED connector', async () => {
177+
(useConnector as jest.Mock).mockImplementation(() => ({
178+
data: setConnectorStatus(connector, ConnectorState.STOPPED),
179+
}));
172180
renderComponent();
173181
await afterClickDropDownButton();
174182
await waitFor(async () =>

frontend/src/components/Connect/List/__tests__/List.spec.tsx

Lines changed: 38 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,11 +12,13 @@ import { clusterConnectConnectorPath, clusterConnectorsPath } from 'lib/paths';
1212
import {
1313
useConnectors,
1414
useDeleteConnector,
15+
useResetConnectorOffsets,
1516
useUpdateConnectorState,
1617
} from 'lib/hooks/api/kafkaConnect';
1718

1819
const mockedUsedNavigate = jest.fn();
1920
const mockDelete = jest.fn();
21+
const mockResetOffsets = jest.fn();
2022

2123
jest.mock('react-router-dom', () => ({
2224
...jest.requireActual('react-router-dom'),
@@ -57,7 +59,7 @@ describe('Connectors List', () => {
5759
it('renders', async () => {
5860
renderComponent();
5961
expect(screen.getByRole('table')).toBeInTheDocument();
60-
expect(screen.getAllByRole('row').length).toEqual(3);
62+
expect(screen.getAllByRole('row').length).toEqual(4);
6163
});
6264

6365
it('opens broker when row clicked', async () => {
@@ -129,4 +131,39 @@ describe('Connectors List', () => {
129131
expect(cancelButton).not.toBeInTheDocument();
130132
});
131133
});
134+
135+
describe('when reset connector offsets modal is open', () => {
136+
beforeEach(() => {
137+
(useConnectors as jest.Mock).mockImplementation(() => ({
138+
data: connectors,
139+
}));
140+
(useResetConnectorOffsets as jest.Mock).mockImplementation(() => ({
141+
mutateAsync: mockResetOffsets,
142+
}));
143+
});
144+
145+
it('calls resetConnectorOffsets on confirm', async () => {
146+
renderComponent();
147+
const resetButton = screen.getAllByText('Reset Offsets')[2];
148+
await waitFor(() => userEvent.click(resetButton));
149+
150+
const submitButton = screen.getAllByRole('button', {
151+
name: 'Confirm',
152+
})[0];
153+
await userEvent.click(submitButton);
154+
expect(mockResetOffsets).toHaveBeenCalledWith();
155+
});
156+
157+
it('closes the modal when cancel button is clicked', async () => {
158+
renderComponent();
159+
const resetButton = screen.getAllByText('Reset Offsets')[2];
160+
await waitFor(() => userEvent.click(resetButton));
161+
162+
const cancelButton = screen.getAllByRole('button', {
163+
name: 'Cancel',
164+
})[0];
165+
await waitFor(() => userEvent.click(cancelButton));
166+
expect(cancelButton).not.toBeInTheDocument();
167+
});
168+
});
132169
});

frontend/src/lib/fixtures/kafkaConnect.ts

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,18 @@ export const connectors: FullConnectorInfo[] = [
3838
tasksCount: 3,
3939
failedTasksCount: 1,
4040
},
41+
{
42+
connect: 'third',
43+
name: 'hdfs3-source-connector',
44+
connectorClass: 'FileStreamSource',
45+
type: ConnectorType.SINK,
46+
topics: ['test-topic'],
47+
status: {
48+
state: ConnectorState.STOPPED,
49+
},
50+
tasksCount: 0,
51+
failedTasksCount: 0,
52+
},
4153
];
4254

4355
export const connector: Connector = {

0 commit comments

Comments
 (0)