The open and composable observability and data visualization platform. Visualize metrics, logs, and traces from multiple sources like Prometheus, Loki, Elasticsearch, InfluxDB, Postgres and many more.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 
grafana/public/app/plugins/datasource/elasticsearch/components/QueryEditor/state.test.ts

64 lines
2.4 KiB

import { reducerTester } from 'test/core/redux/reducerTester';
import { ElasticsearchQuery } from '../../types';
import { aliasPatternReducer, changeAliasPattern, changeQuery, initQuery, queryReducer } from './state';
describe('Query Reducer', () => {
describe('On Init', () => {
it('Should maintain the previous `query` if present', () => {
const initialQuery: ElasticsearchQuery['query'] = 'Some lucene query';
reducerTester<ElasticsearchQuery['query']>()
.givenReducer(queryReducer, initialQuery)
.whenActionIsDispatched(initQuery())
.thenStateShouldEqual(initialQuery);
});
it('Should set an empty `query` if it is not already set', () => {
const initialQuery: ElasticsearchQuery['query'] = undefined;
const expectedQuery = '';
reducerTester<ElasticsearchQuery['query']>()
.givenReducer(queryReducer, initialQuery)
.whenActionIsDispatched(initQuery())
.thenStateShouldEqual(expectedQuery);
});
});
it('Should correctly set `query`', () => {
const expectedQuery: ElasticsearchQuery['query'] = 'Some lucene query';
reducerTester<ElasticsearchQuery['query']>()
.givenReducer(queryReducer, '')
.whenActionIsDispatched(changeQuery(expectedQuery))
.thenStateShouldEqual(expectedQuery);
});
it('Should not change state with other action types', () => {
const initialState: ElasticsearchQuery['query'] = 'Some lucene query';
reducerTester<ElasticsearchQuery['query']>()
.givenReducer(queryReducer, initialState)
.whenActionIsDispatched({ type: 'THIS ACTION SHOULD NOT HAVE ANY EFFECT IN THIS REDUCER' })
.thenStateShouldEqual(initialState);
});
});
describe('Alias Pattern Reducer', () => {
it('Should correctly set `alias`', () => {
const expectedAlias: ElasticsearchQuery['alias'] = 'Some alias pattern';
reducerTester<ElasticsearchQuery['query']>()
.givenReducer(aliasPatternReducer, '')
.whenActionIsDispatched(changeAliasPattern(expectedAlias))
.thenStateShouldEqual(expectedAlias);
});
it('Should not change state with other action types', () => {
const initialState: ElasticsearchQuery['alias'] = 'Some alias pattern';
reducerTester<ElasticsearchQuery['query']>()
.givenReducer(aliasPatternReducer, initialState)
.whenActionIsDispatched({ type: 'THIS ACTION SHOULD NOT HAVE ANY EFFECT IN THIS REDUCER' })
.thenStateShouldEqual(initialState);
});
});