|
@@ -1,12 +1,16 @@
|
|
|
import React from 'react';
|
|
|
import { mount } from 'enzyme';
|
|
|
import { StaticRouter } from 'react-router-dom';
|
|
|
+import { screen } from '@testing-library/react';
|
|
|
+import userEvent from '@testing-library/user-event';
|
|
|
import ClusterContext from 'components/contexts/ClusterContext';
|
|
|
import Details from 'components/Topics/Topic/Details/Details';
|
|
|
import { internalTopicPayload } from 'redux/reducers/topics/__test__/fixtures';
|
|
|
import { Provider } from 'react-redux';
|
|
|
import { store } from 'redux/store';
|
|
|
import { ThemeProvider } from 'styled-components';
|
|
|
+import { render } from 'lib/testHelpers';
|
|
|
+import { clusterTopicPath } from 'lib/paths';
|
|
|
import theme from 'theme/theme';
|
|
|
|
|
|
describe('Details', () => {
|
|
@@ -15,6 +19,30 @@ describe('Details', () => {
|
|
|
const mockClearTopicMessages = jest.fn();
|
|
|
const mockInternalTopicPayload = internalTopicPayload.internal;
|
|
|
|
|
|
+ const setupComponent = (pathname: string) =>
|
|
|
+ render(
|
|
|
+ <StaticRouter location={{ pathname }}>
|
|
|
+ <ClusterContext.Provider
|
|
|
+ value={{
|
|
|
+ isReadOnly: false,
|
|
|
+ hasKafkaConnectConfigured: true,
|
|
|
+ hasSchemaRegistryConfigured: true,
|
|
|
+ isTopicDeletionAllowed: true,
|
|
|
+ }}
|
|
|
+ >
|
|
|
+ <Details
|
|
|
+ clusterName={mockClusterName}
|
|
|
+ topicName={internalTopicPayload.name}
|
|
|
+ name={internalTopicPayload.name}
|
|
|
+ isInternal={false}
|
|
|
+ deleteTopic={mockDelete}
|
|
|
+ clearTopicMessages={mockClearTopicMessages}
|
|
|
+ isDeleted={false}
|
|
|
+ />
|
|
|
+ </ClusterContext.Provider>
|
|
|
+ </StaticRouter>
|
|
|
+ );
|
|
|
+
|
|
|
describe('when it has readonly flag', () => {
|
|
|
it('does not render the Action button a Topic', () => {
|
|
|
const component = mount(
|
|
@@ -48,4 +76,17 @@ describe('Details', () => {
|
|
|
expect(component).toMatchSnapshot();
|
|
|
});
|
|
|
});
|
|
|
+
|
|
|
+ it('shows a confirmation popup on deleting topic messages', () => {
|
|
|
+ setupComponent(
|
|
|
+ clusterTopicPath(mockClusterName, internalTopicPayload.name)
|
|
|
+ );
|
|
|
+ const { getByText } = screen;
|
|
|
+ const clearMessagesButton = getByText(/Clear messages/i);
|
|
|
+ userEvent.click(clearMessagesButton);
|
|
|
+
|
|
|
+ expect(
|
|
|
+ getByText(/Are you sure want to clear topic messages?/i)
|
|
|
+ ).toBeInTheDocument();
|
|
|
+ });
|
|
|
});
|