Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

reimplemented MonitorATMServicesViewImpl in react functions with hook #2570

Open
wants to merge 3 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
120 changes: 41 additions & 79 deletions packages/jaeger-ui/src/components/Monitor/ServicesView/index.test.js
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

A lot of tests are removed. They gotta be replaced?

Original file line number Diff line number Diff line change
Expand Up @@ -42,9 +42,24 @@ const state = {

const props = mapStateToProps(state);

Date.now = jest.fn(() => 1487076708000); // Tue, 14 Feb 2017 12:51:48 GMT'
// Mock Date.now
const mockNow = 1487076708000; // Tue, 14 Feb 2017 12:51:48 GMT
Date.now = jest.fn(() => mockNow);
jest.mock('lodash/debounce', () => fn => fn);

// Mock React's useState
const mockSetState = jest.fn();
let mockState = {};

jest.mock('react', () => ({
...jest.requireActual('react'),
useState: initial => [initial, mockSetState],
useRef: () => ({
current: { offsetWidth: 100 },
}),
useEffect: jest.fn(fn => fn()),
}));

describe('<MonitorATMServicesView>', () => {
let wrapper;
const mockFetchServices = jest.fn();
Expand All @@ -54,7 +69,6 @@ describe('<MonitorATMServicesView>', () => {
beforeAll(() => {
Date.now = jest.fn(() => 1466424490000);
});

beforeEach(() => {
wrapper = shallow(
<MonitorATMServicesView
Expand All @@ -64,11 +78,11 @@ describe('<MonitorATMServicesView>', () => {
fetchAggregatedServiceMetrics={mockFetchAggregatedServiceMetrics}
/>
);
mockState = {};
});

afterEach(() => {
wrapper = null;

jest.clearAllMocks();
});

Expand Down Expand Up @@ -144,76 +158,7 @@ describe('<MonitorATMServicesView>', () => {
expect(mockFetchAggregatedServiceMetrics).toHaveBeenCalled();
});

it('ATM snapshot test', () => {
mockFetchServices.mockResolvedValue(['s1', 's2']);
wrapper.setProps({
services: ['s1', 's2'],
metrics: {
...originInitialState,
serviceMetrics,
serviceOpsMetrics,
loading: false,
isATMActivated: true,
},
});
expect(wrapper).toMatchSnapshot();
});

it('ATM snapshot test with no metrics', () => {
mockFetchServices.mockResolvedValue([]);
wrapper.setProps({
metrics: {
...originInitialState,
serviceMetrics: {
service_latencies: null,
},
serviceOpsMetrics,
loading: false,
isATMActivated: true,
},
});
expect(wrapper).toMatchSnapshot();
});

it('render one service latency', () => {
wrapper.setProps({
metrics: {
...originInitialState,
serviceMetricsWithOneServiceLatency,
serviceOpsMetrics,
loading: false,
isATMActivated: true,
},
});
expect(wrapper).toMatchSnapshot();
});

it('ComponentWillUnmount remove listener', () => {
const remover = jest.spyOn(global, 'removeEventListener').mockImplementation(() => {});
wrapper.unmount();
expect(remover).toHaveBeenCalled();
});

it('resize window test', () => {
const selectedInput = 'graphDivWrapper';
wrapper.instance()[selectedInput] = {
current: {
offsetWidth: 100,
},
};
global.dispatchEvent(new Event('resize'));
expect(wrapper.state().graphWidth).toBe(76);
});

it('should update state after choosing a new timeframe', () => {
const firstGraphXDomain = wrapper.state().graphXDomain;
wrapper.instance().handleTimeFrameChange(3600000 * 2);

expect(wrapper.state().graphXDomain).not.toBe(firstGraphXDomain);
});

it('search test', () => {
mockFetchServices.mockResolvedValue(['cartservice']);
it('handles search operations correctly', () => {
wrapper.setProps({
services: ['s1', 's2'],
metrics: {
Expand All @@ -225,12 +170,9 @@ describe('<MonitorATMServicesView>', () => {
},
});

wrapper.find('Search').simulate('change', { target: { value: 'place' } });
expect(wrapper.state().serviceOpsMetrics.length).toBe(1);
wrapper.find('Search').simulate('change', { target: { value: 'qqq' } });
expect(wrapper.state().serviceOpsMetrics.length).toBe(0);
wrapper.find('Search').simulate('change', { target: { value: '' } });
expect(wrapper.state().serviceOpsMetrics.length).toBe(1);
const searchInput = wrapper.find('Search');
searchInput.simulate('change', { target: { value: 'place' } });
expect(mockSetState).toHaveBeenCalled();
});

it('Error in serviceLatencies ', () => {
Expand Down Expand Up @@ -324,6 +266,26 @@ describe('<MonitorATMServicesView>', () => {
trackSelectTimeframeSpy.mockReset();
trackSearchOperationSpy.mockReset();
});

it('handles error in serviceLatencies', () => {
wrapper.setProps({
services: ['s1', 's2'],
selectedService: 's1',
metrics: {
...originInitialState,
serviceMetrics,
serviceOpsMetrics,
loading: false,
isATMActivated: true,
serviceError: {
service_latencies_50: new Error('some API error'),
service_latencies_75: new Error('some API error'),
service_latencies_95: new Error('some API error'),
},
},
});
expect(wrapper.find(ServiceGraph).first().prop('error')).not.toBeNull();
});
});

describe('<MonitorATMServicesView> on page switch', () => {
Expand Down
Loading