| 
									
										
										
										
											2022-08-26 20:29:31 +08:00
										 |  |  | import { render, screen } from '@testing-library/react'; | 
					
						
							| 
									
										
										
										
											2022-04-22 21:33:13 +08:00
										 |  |  | import React from 'react'; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | import { ConfigEditor } from './ConfigEditor'; | 
					
						
							| 
									
										
										
										
											2019-10-25 22:43:20 +08:00
										 |  |  | import { createDefaultConfigOptions } from './mocks'; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | describe('ConfigEditor', () => { | 
					
						
							|  |  |  |   it('should render without error', () => { | 
					
						
							| 
									
										
										
										
											2022-08-26 20:29:31 +08:00
										 |  |  |     expect(() => | 
					
						
							|  |  |  |       render(<ConfigEditor onOptionsChange={() => {}} options={createDefaultConfigOptions()} />) | 
					
						
							|  |  |  |     ).not.toThrow(); | 
					
						
							| 
									
										
										
										
											2019-10-25 22:43:20 +08:00
										 |  |  |   }); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   it('should render all parts of the config', () => { | 
					
						
							| 
									
										
										
										
											2022-08-26 20:29:31 +08:00
										 |  |  |     render(<ConfigEditor onOptionsChange={() => {}} options={createDefaultConfigOptions()} />); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     // Check DataSourceHttpSettings are rendered
 | 
					
						
							|  |  |  |     expect(screen.getByRole('heading', { name: 'HTTP' })).toBeInTheDocument(); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     // Check ElasticDetails are rendered
 | 
					
						
							|  |  |  |     expect(screen.getByText('Elasticsearch details')).toBeInTheDocument(); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     // Check LogsConfig are rendered
 | 
					
						
							|  |  |  |     expect(screen.getByText('Logs')).toBeInTheDocument(); | 
					
						
							| 
									
										
										
										
											2019-10-25 22:43:20 +08:00
										 |  |  |   }); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   it('should set defaults', () => { | 
					
						
							| 
									
										
										
										
											2022-08-26 20:29:31 +08:00
										 |  |  |     const mockOnOptionsChange = jest.fn(); | 
					
						
							| 
									
										
										
										
											2019-10-25 22:43:20 +08:00
										 |  |  |     const options = createDefaultConfigOptions(); | 
					
						
							| 
									
										
										
										
											2020-12-04 22:29:40 +08:00
										 |  |  |     // @ts-ignore
 | 
					
						
							| 
									
										
										
										
											2019-10-25 22:43:20 +08:00
										 |  |  |     delete options.jsonData.esVersion; | 
					
						
							| 
									
										
										
										
											2020-12-04 22:29:40 +08:00
										 |  |  |     // @ts-ignore
 | 
					
						
							| 
									
										
										
										
											2019-10-25 22:43:20 +08:00
										 |  |  |     delete options.jsonData.timeField; | 
					
						
							|  |  |  |     delete options.jsonData.maxConcurrentShardRequests; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-08-26 20:29:31 +08:00
										 |  |  |     render(<ConfigEditor onOptionsChange={mockOnOptionsChange} options={options} />); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     expect(mockOnOptionsChange).toHaveBeenCalledWith( | 
					
						
							|  |  |  |       expect.objectContaining({ | 
					
						
							|  |  |  |         jsonData: expect.objectContaining({ | 
					
						
							| 
									
										
										
										
											2022-09-06 21:42:39 +08:00
										 |  |  |           esVersion: '8.0.0', | 
					
						
							| 
									
										
										
										
											2022-08-26 20:29:31 +08:00
										 |  |  |           timeField: '@timestamp', | 
					
						
							|  |  |  |           maxConcurrentShardRequests: 5, | 
					
						
							|  |  |  |         }), | 
					
						
							|  |  |  |       }) | 
					
						
							| 
									
										
										
										
											2019-10-25 22:43:20 +08:00
										 |  |  |     ); | 
					
						
							|  |  |  |   }); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   it('should not apply default if values are set', () => { | 
					
						
							| 
									
										
										
										
											2022-08-26 20:29:31 +08:00
										 |  |  |     const mockOnOptionsChange = jest.fn(); | 
					
						
							| 
									
										
										
										
											2019-10-25 22:43:20 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-08-26 20:29:31 +08:00
										 |  |  |     render(<ConfigEditor onOptionsChange={mockOnOptionsChange} options={createDefaultConfigOptions()} />); | 
					
						
							| 
									
										
										
										
											2021-05-11 16:44:00 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-08-26 20:29:31 +08:00
										 |  |  |     expect(mockOnOptionsChange).toHaveBeenCalledTimes(0); | 
					
						
							| 
									
										
										
										
											2019-10-25 22:43:20 +08:00
										 |  |  |   }); | 
					
						
							|  |  |  | }); |