@ -5,44 +5,43 @@ import { createLokiDatasource } from '../mocks';
import { getStats , shouldUpdateStats } from './stats' ;
describe ( 'shouldUpdateStats' , ( ) = > {
const timerange = getDefaultTimeRange ( ) ;
it ( 'should return true if the query has changed' , ( ) = > {
const query = '{job="grafana"}' ;
const prevQuery = '{job="not-grafana"}' ;
const timerange = getDefaultTimeRange ( ) ;
const prevTimerange = timerange ;
expect ( shouldUpdateStats ( query , prevQuery , timerange , prevTimerange ) ) . toBe ( true ) ;
expect ( shouldUpdateStats ( query , prevQuery , timerange , timerange ) ) . toBe ( true ) ;
} ) ;
it ( 'should return true if the timerange has changed' , ( ) = > {
const query = '{job="grafana"}' ;
const prevQuery = '{job="grafana"}' ;
const timerange = getDefaultTimeRange ( ) ;
timerange . raw . from = 'now-14h' ;
const prevTimerange = getDefaultTimeRange ( ) ;
expect ( shouldUpdateStats ( query , prevQuery , timerange , prevTimerange ) ) . toBe ( true ) ;
} ) ;
it ( 'should return false if the query and timerange have not chang ed' , ( ) = > {
it ( 'should return true if the previous query was undefin ed' , ( ) = > {
const query = '{job="grafana"}' ;
const prevQuery = undefined ;
expect ( shouldUpdateStats ( query , prevQuery , timerange , timerange ) ) . toBe ( true ) ;
} ) ;
it ( 'should return true if the query really changed, otherwise false' , ( ) = > {
const prevQuery = '{job="grafana"}' ;
const timerange = getDefaultTimeRange ( ) ;
const prevTimerange = timerange ;
expect ( shouldUpdateStats ( query , prevQuery , timerange , prevTimerange ) ) . toBe ( false ) ;
const query = ` ${ prevQuery } ` ;
expect ( shouldUpdateStats ( query , prevQuery , timerange , timerange ) ) . toBe ( false ) ;
} ) ;
it ( 'should return false if the query and timerange have not changed' , ( ) = > {
const query = '{job="grafana"}' ;
const prevQuery = '{job="grafana"}' ;
const timerange = getDefaultTimeRange ( ) ;
const prevTimerange = getDefaultTimeRange ( ) ;
expect ( shouldUpdateStats ( query , prevQuery , timerange , prevTimerange ) ) . toBe ( false ) ;
expect ( shouldUpdateStats ( query , prevQuery , timerange , timerange ) ) . toBe ( false ) ;
} ) ;
it ( 'should return false if the query and timerange with absolute and relative mixed have not changed' , ( ) = > {
const query = '{job="grafana"}' ;
const prevQuery = '{job="grafana"}' ;
const now = dateTime ( Date . now ( ) ) ;
const timerange = getDefaultTimeRange ( ) ;
timerange . raw . from = now ;
const prevTimerange = getDefaultTimeRange ( ) ;
@ -83,4 +82,21 @@ describe('makeStatsRequest', () => {
entries : 78344 ,
} ) ;
} ) ;
it ( 'should support queries with variables' , ( ) = > {
const query = 'count_over_time({job="grafana"}[$__interval])' ;
datasource . interpolateString = jest
. fn ( )
. mockImplementationOnce ( ( value : string ) = > value . replace ( '$__interval' , '1h' ) ) ;
datasource . getQueryStats = jest
. fn ( )
. mockResolvedValue ( { streams : 1 , chunks : 12611 , bytes : 12913664 , entries : 78344 } ) ;
expect ( getStats ( datasource , query ) ) . resolves . toEqual ( {
streams : 1 ,
chunks : 12611 ,
bytes : 12913664 ,
entries : 78344 ,
} ) ;
} ) ;
} ) ;