import { render, screen } from '@testing-library/react'; import React from 'react'; import selectEvent from 'react-select-event'; import { ElasticDetails } from './ElasticDetails'; import { createDefaultConfigOptions } from './mocks'; describe('ElasticDetails', () => { describe('Max concurrent Shard Requests', () => { it('should render "Max concurrent Shard Requests" if version >= 5.6.0', () => { render( {}} value={createDefaultConfigOptions({ esVersion: '5.6.0' })} />); expect(screen.getByLabelText('Max concurrent Shard Requests')).toBeInTheDocument(); }); it('should not render "Max concurrent Shard Requests" if version < 5.6.0', () => { render( {}} value={createDefaultConfigOptions({ esVersion: '5.0.0' })} />); expect(screen.queryByLabelText('Max concurrent Shard Requests')).not.toBeInTheDocument(); }); }); it('should change database on interval change when not set explicitly', async () => { const onChangeMock = jest.fn(); render(); const selectEl = screen.getByLabelText('Pattern'); await selectEvent.select(selectEl, 'Daily', { container: document.body }); expect(onChangeMock).toHaveBeenLastCalledWith( expect.objectContaining({ database: '[logstash-]YYYY.MM.DD', jsonData: expect.objectContaining({ interval: 'Daily' }), }) ); }); it('should change database on interval change if pattern is from example', async () => { const onChangeMock = jest.fn(); const options = createDefaultConfigOptions(); options.database = '[logstash-]YYYY.MM.DD.HH'; render(); const selectEl = screen.getByLabelText('Pattern'); await selectEvent.select(selectEl, 'Monthly', { container: document.body }); expect(onChangeMock).toHaveBeenLastCalledWith( expect.objectContaining({ database: '[logstash-]YYYY.MM', jsonData: expect.objectContaining({ interval: 'Monthly' }), }) ); }); describe('version change', () => { const testCases = [{ version: '7.10+', maxConcurrentShardRequests: 6, expectedMaxConcurrentShardRequests: 6 }]; testCases.forEach((tc) => { const onChangeMock = jest.fn(); it(`sets maxConcurrentShardRequests=${tc.expectedMaxConcurrentShardRequests} if version=${tc.version},`, async () => { render( ); const selectEl = screen.getByLabelText('ElasticSearch version'); await selectEvent.select(selectEl, tc.version, { container: document.body }); expect(onChangeMock).toHaveBeenCalledWith( expect.objectContaining({ jsonData: expect.objectContaining({ maxConcurrentShardRequests: tc.expectedMaxConcurrentShardRequests }), }) ); }); }); }); });