mirror of
https://github.com/grafana/grafana.git
synced 2025-02-25 18:55:37 -06:00
* Refactor: Removes replaceUrl from actions * Refactor: Moves saveState thunk to epic * Refactor: Moves thunks to epics * Wip: removes resulttype and queries once * Refactor: LiveTailing uses observer in query * Refactor: Creates epics folder for epics and move back actioncreators * Tests: Adds tests for epics and reducer * Fix: Checks for undefined as well * Refactor: Cleans up previous live tailing implementation * Chore: merge with master * Fix: Fixes url issuses and prom graph in Panels * Refactor: Removes supportsStreaming and adds sockets to DataSourcePluginMeta instead * Refactor: Changes the way we create TimeSeries * Refactor: Renames sockets to streaming * Refactor: Changes the way Explore does incremental updates * Refactor: Removes unused method * Refactor: Adds back Loading indication
72 lines
2.9 KiB
TypeScript
72 lines
2.9 KiB
TypeScript
import { mockExploreState } from 'test/mocks/mockExploreState';
|
|
import { epicTester } from 'test/core/redux/epicTester';
|
|
import { runQueriesAction, stateSaveAction, runQueriesBatchAction, clearQueriesAction } from '../actionTypes';
|
|
import { runQueriesEpic } from './runQueriesEpic';
|
|
|
|
describe('runQueriesEpic', () => {
|
|
describe('when runQueriesAction is dispatched', () => {
|
|
describe('and there is no datasourceError', () => {
|
|
describe('and we have non empty queries', () => {
|
|
describe('and explore is not live', () => {
|
|
it('then runQueriesBatchAction and stateSaveAction are dispatched', () => {
|
|
const queries = [{ refId: 'A', key: '123456', expr: '{__filename__="some.log"}' }];
|
|
const { exploreId, state, datasourceInterval, containerWidth } = mockExploreState({ queries });
|
|
|
|
epicTester(runQueriesEpic, state)
|
|
.whenActionIsDispatched(runQueriesAction({ exploreId, range: null }))
|
|
.thenResultingActionsEqual(
|
|
runQueriesBatchAction({
|
|
exploreId,
|
|
queryOptions: { interval: datasourceInterval, maxDataPoints: containerWidth, live: false },
|
|
})
|
|
);
|
|
});
|
|
});
|
|
|
|
describe('and explore is live', () => {
|
|
it('then runQueriesBatchAction and stateSaveAction are dispatched', () => {
|
|
const queries = [{ refId: 'A', key: '123456', expr: '{__filename__="some.log"}' }];
|
|
const { exploreId, state, datasourceInterval, containerWidth } = mockExploreState({
|
|
queries,
|
|
isLive: true,
|
|
streaming: true,
|
|
});
|
|
|
|
epicTester(runQueriesEpic, state)
|
|
.whenActionIsDispatched(runQueriesAction({ exploreId, range: null }))
|
|
.thenResultingActionsEqual(
|
|
runQueriesBatchAction({
|
|
exploreId,
|
|
queryOptions: { interval: datasourceInterval, maxDataPoints: containerWidth, live: true },
|
|
})
|
|
);
|
|
});
|
|
});
|
|
});
|
|
|
|
describe('and we have no queries', () => {
|
|
it('then clearQueriesAction and stateSaveAction are dispatched', () => {
|
|
const queries = [];
|
|
const { exploreId, state } = mockExploreState({ queries });
|
|
|
|
epicTester(runQueriesEpic, state)
|
|
.whenActionIsDispatched(runQueriesAction({ exploreId, range: null }))
|
|
.thenResultingActionsEqual(clearQueriesAction({ exploreId }), stateSaveAction());
|
|
});
|
|
});
|
|
});
|
|
|
|
describe('and there is a datasourceError', () => {
|
|
it('then no actions are dispatched', () => {
|
|
const { exploreId, state } = mockExploreState({
|
|
datasourceError: { message: 'Some error' },
|
|
});
|
|
|
|
epicTester(runQueriesEpic, state)
|
|
.whenActionIsDispatched(runQueriesAction({ exploreId, range: null }))
|
|
.thenNoActionsWhereDispatched();
|
|
});
|
|
});
|
|
});
|
|
});
|