Skip to content

Commit

Permalink
Updated timefilter tests and mocks
Browse files Browse the repository at this point in the history
  • Loading branch information
Liza K committed Sep 4, 2019
1 parent 1387412 commit 3968a12
Show file tree
Hide file tree
Showing 32 changed files with 343 additions and 244 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -35,18 +35,13 @@ import { getFiltersArray } from './test_helpers/get_filters_array';
import { coreMock } from '../../../../../../core/public/mocks';
const setupMock = coreMock.createSetup();

import { timefilterServiceMock } from '../../timefilter/timefilter_service.mock';
const timefilterSetupMock = timefilterServiceMock.createSetupContract();

setupMock.uiSettings.get.mockImplementation((key: string) => {
return true;
});

jest.mock('ui/timefilter', () => {
return {
timefilter: {
setTime: jest.fn(),
},
};
});

describe('filter_manager', () => {
let appStateStub: StubState;
let globalStateStub: StubState;
Expand All @@ -64,7 +59,11 @@ describe('filter_manager', () => {
appStateStub = new StubState();
globalStateStub = new StubState();
indexPatterns = new StubIndexPatterns();
filterManager = new FilterManager(indexPatterns as IndexPatterns, setupMock.uiSettings);
filterManager = new FilterManager(
indexPatterns as IndexPatterns,
setupMock.uiSettings,
timefilterSetupMock.timefilter
);
readyFilters = getFiltersArray();

// FilterStateManager is tested indirectly.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -35,20 +35,20 @@ import { changeTimeFilter } from './lib/change_time_filter';
import { onlyDisabledFiltersChanged } from './lib/only_disabled';
import { PartitionedFilters } from './partitioned_filters';
import { IndexPatterns } from '../../index_patterns';
import { Timefilter } from '../../timefilter';
import { TimefilterContract } from '../../timefilter';

export class FilterManager {
private indexPatterns: IndexPatterns;
private filters: Filter[] = [];
private updated$: Subject<void> = new Subject();
private fetch$: Subject<void> = new Subject();
private uiSettings: UiSettingsClientContract;
private timefilter: Timefilter;
private timefilter: TimefilterContract;

constructor(
indexPatterns: IndexPatterns,
uiSettings: UiSettingsClientContract,
timefilter: Timefilter
timefilter: TimefilterContract
) {
this.indexPatterns = indexPatterns;
this.uiSettings = uiSettings;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,18 +31,13 @@ import { StubIndexPatterns } from './test_helpers/stub_index_pattern';
import { coreMock } from '../../../../../../core/public/mocks';
const setupMock = coreMock.createSetup();

import { timefilterServiceMock } from '../../timefilter/timefilter_service.mock';
const timefilterSetupMock = timefilterServiceMock.createSetupContract();

setupMock.uiSettings.get.mockImplementation((key: string) => {
return true;
});

jest.mock('ui/timefilter', () => {
return {
timefilter: {
setTime: jest.fn(),
},
};
});

describe('filter_state_manager', () => {
let appStateStub: StubState;
let globalStateStub: StubState;
Expand All @@ -53,7 +48,11 @@ describe('filter_state_manager', () => {
appStateStub = new StubState();
globalStateStub = new StubState();
const indexPatterns = new StubIndexPatterns();
filterManager = new FilterManager(indexPatterns as IndexPatterns, setupMock.uiSettings);
filterManager = new FilterManager(
indexPatterns as IndexPatterns,
setupMock.uiSettings,
timefilterSetupMock.timefilter
);
});

describe('app_state_undefined', () => {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,50 +16,42 @@
* specific language governing permissions and limitations
* under the License.
*/

import './change_time_filter.test.mocks';

jest.mock('ui/chrome',
() => ({
getBasePath: () => `/some/base/path`,
getUiSettingsClient: () => {
return {
get: (key) => {
switch(key) {
case 'timepicker:timeDefaults':
return { from: 'now-15m', to: 'now' };
case 'timepicker:refreshIntervalDefaults':
return { pause: false, value: 0 };
default:
throw new Error(`Unexpected config key: ${key}`);
}
}
};
},
}), { virtual: true });

import expect from '@kbn/expect';
import { changeTimeFilter } from '../change_time_filter';
import { timefilter } from 'ui/timefilter';
import { TimeRange } from 'src/plugins/data/public';

import { timefilterServiceMock } from '../../../../timefilter/timefilter_service.mock';
const timefilterMock = timefilterServiceMock.createSetupContract();
const timefilter = timefilterMock.timefilter;

describe('changeTimeFilter()', function () {
let _time: TimeRange | undefined;
timefilter.setTime.mockImplementation((time: any) => {
_time = {
from: time.from.toISOString(),
to: time.to.toISOString(),
};
});
timefilter.getTime.mockImplementation(() => {
return _time!;
});

describe('changeTimeFilter()', function() {
const gt = 1388559600000;
const lt = 1388646000000;

test('should change the timefilter to match the range gt/lt', function () {
test('should change the timefilter to match the range gt/lt', function() {
const filter = { range: { '@timestamp': { gt, lt } } };
changeTimeFilter(filter);
changeTimeFilter(timefilter, filter);
const { to, from } = timefilter.getTime();
expect(to).to.be(new Date(lt).toISOString());
expect(from).to.be(new Date(gt).toISOString());
});

test('should change the timefilter to match the range gte/lte', function () {
test('should change the timefilter to match the range gte/lte', function() {
const filter = { range: { '@timestamp': { gte: gt, lte: lt } } };
changeTimeFilter(filter);
changeTimeFilter(timefilter, filter);
const { to, from } = timefilter.getTime();
expect(to).to.be(new Date(lt).toISOString());
expect(from).to.be(new Date(gt).toISOString());
});

});
Original file line number Diff line number Diff line change
Expand Up @@ -19,9 +19,9 @@

import moment from 'moment';
import _ from 'lodash';
import { Timefilter } from '../../../timefilter';
import { TimefilterContract } from '../../../timefilter';

export function changeTimeFilter(timefilter: Timefilter, filter: any) {
export function changeTimeFilter(timefilter: TimefilterContract, filter: any) {
const key = _.keys(filter.range)[0];
const values = filter.range[key];
timefilter.setTime({
Expand Down
4 changes: 2 additions & 2 deletions src/legacy/core_plugins/data/public/filter/filter_service.ts
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@
import { UiSettingsClientContract } from 'src/core/public';
import { IndexPatterns } from '../index_patterns';
import { FilterManager } from './filter_manager';
import { Timefilter } from '../timefilter';
import { TimefilterContract } from '../timefilter';

/**
* Filter Service
Expand All @@ -30,7 +30,7 @@ import { Timefilter } from '../timefilter';
export interface FilterServiceDependencies {
indexPatterns: IndexPatterns;
uiSettings: UiSettingsClientContract;
timefilter: Timefilter;
timefilter: TimefilterContract;
}

export class FilterService {
Expand Down
2 changes: 1 addition & 1 deletion src/legacy/core_plugins/data/public/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -69,4 +69,4 @@ export {
mockIndexPattern,
} from './index_patterns';

export { Timefilter, TimeHistory, getTime } from './timefilter';
export { TimeHistoryContract, TimefilterContract, getTime, InputTimeRange } from './timefilter';
7 changes: 3 additions & 4 deletions src/legacy/core_plugins/data/public/mocks.ts
Original file line number Diff line number Diff line change
Expand Up @@ -17,19 +17,18 @@
* under the License.
*/

import { DataSetup } from '.';
import { filterServiceMock } from './filter/filter_service.mock';
import { indexPatternsServiceMock } from './index_patterns/index_patterns_service.mock';
import { queryServiceMock } from './query/query_service.mock';
import { timefilterServiceMock } from './timefilter/timefilter_service.mock';

function createDataSetupMock() {
const mock: MockedKeys<Partial<DataSetup>> = {
return {
filter: filterServiceMock.createSetupContract(),
indexPatterns: indexPatternsServiceMock.createSetupContract(),
query: queryServiceMock.createSetupContract(),
timefilter: timefilterServiceMock.createSetupContract(),
};

return mock;
}

function createDataStartMock() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,13 @@ import { IndexPattern } from '../../../index';
import { coreMock } from '../../../../../../../core/public/mocks';
const startMock = coreMock.createStart();

import { timefilterServiceMock } from '../../../timefilter/timefilter_service.mock';
const timefilterSetupMock = timefilterServiceMock.createSetupContract();

timefilterSetupMock.history.get.mockImplementation(() => {
return [];
});

startMock.uiSettings.get.mockImplementation((key: string) => {
switch (key) {
case 'timepicker:quickRanges':
Expand Down Expand Up @@ -100,6 +107,7 @@ describe('QueryBar', () => {
<QueryBar.WrappedComponent
uiSettings={startMock.uiSettings}
savedObjectsClient={startMock.savedObjects.client}
timeHistory={timefilterSetupMock.history}
query={kqlQuery}
onSubmit={noop}
appName={'discover'}
Expand All @@ -121,6 +129,7 @@ describe('QueryBar', () => {
<QueryBar.WrappedComponent
uiSettings={startMock.uiSettings}
savedObjectsClient={startMock.savedObjects.client}
timeHistory={timefilterSetupMock.history}
query={kqlQuery}
onSubmit={noop}
appName={'discover'}
Expand All @@ -142,6 +151,7 @@ describe('QueryBar', () => {
<QueryBar.WrappedComponent
uiSettings={startMock.uiSettings}
savedObjectsClient={startMock.savedObjects.client}
timeHistory={timefilterSetupMock.history}
onSubmit={noop}
onChange={noop}
isDirty={false}
Expand All @@ -160,6 +170,7 @@ describe('QueryBar', () => {
<QueryBar.WrappedComponent
uiSettings={startMock.uiSettings}
savedObjectsClient={startMock.savedObjects.client}
timeHistory={timefilterSetupMock.history}
onSubmit={noop}
onChange={noop}
isDirty={false}
Expand All @@ -179,6 +190,7 @@ describe('QueryBar', () => {
<QueryBar.WrappedComponent
uiSettings={startMock.uiSettings}
savedObjectsClient={startMock.savedObjects.client}
timeHistory={timefilterSetupMock.history}
onSubmit={noop}
onChange={noop}
isDirty={false}
Expand All @@ -201,6 +213,7 @@ describe('QueryBar', () => {
<QueryBar.WrappedComponent
uiSettings={startMock.uiSettings}
savedObjectsClient={startMock.savedObjects.client}
timeHistory={timefilterSetupMock.history}
query={kqlQuery}
onSubmit={noop}
onChange={noop}
Expand All @@ -223,6 +236,7 @@ describe('QueryBar', () => {
<QueryBar.WrappedComponent
uiSettings={startMock.uiSettings}
savedObjectsClient={startMock.savedObjects.client}
timeHistory={timefilterSetupMock.history}
query={kqlQuery}
onSubmit={noop}
onChange={noop}
Expand All @@ -246,6 +260,7 @@ describe('QueryBar', () => {
<QueryBar.WrappedComponent
uiSettings={startMock.uiSettings}
savedObjectsClient={startMock.savedObjects.client}
timeHistory={timefilterSetupMock.history}
onSubmit={noop}
onChange={noop}
isDirty={false}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ import { IndexPattern } from '../../../index_patterns';
import { QueryBarInput } from './query_bar_input';
import { getQueryLog } from '../lib/get_query_log';
import { Query } from '../index';
import { TimeHistory } from '../../../timefilter';
import { TimeHistoryContract } from '../../../timefilter';

interface DateRange {
from: string;
Expand Down Expand Up @@ -66,7 +66,7 @@ interface Props {
isDirty: boolean;
uiSettings: UiSettingsClientContract;
savedObjectsClient: SavedObjectsClientContract;
timeHistory: TimeHistory;
timeHistory: TimeHistoryContract;
}

interface State {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,9 @@ import { IndexPattern } from '../../../index_patterns';
import { coreMock } from '../../../../../../../../src/core/public/mocks';
const startMock = coreMock.createStart();

import { timefilterServiceMock } from '../../../timefilter/timefilter_service.mock';
const timefilterSetupMock = timefilterServiceMock.createSetupContract();

jest.mock('../../../../../data/public', () => {
return {
FilterBar: () => <div className="filterBar"></div>,
Expand Down Expand Up @@ -92,6 +95,7 @@ describe('SearchBar', () => {
<SearchBar.WrappedComponent
savedObjectsClient={startMock.savedObjects.client}
uiSettings={startMock.uiSettings}
timeHistory={timefilterSetupMock.history}
appName={'test'}
indexPatterns={[mockIndexPattern]}
intl={null as any}
Expand All @@ -108,6 +112,7 @@ describe('SearchBar', () => {
<SearchBar.WrappedComponent
savedObjectsClient={startMock.savedObjects.client}
uiSettings={startMock.uiSettings}
timeHistory={timefilterSetupMock.history}
appName={'test'}
indexPatterns={[mockIndexPattern]}
intl={null as any}
Expand All @@ -125,6 +130,7 @@ describe('SearchBar', () => {
<SearchBar.WrappedComponent
savedObjectsClient={startMock.savedObjects.client}
uiSettings={startMock.uiSettings}
timeHistory={timefilterSetupMock.history}
appName={'test'}
indexPatterns={[mockIndexPattern]}
intl={null as any}
Expand All @@ -144,6 +150,7 @@ describe('SearchBar', () => {
<SearchBar.WrappedComponent
savedObjectsClient={startMock.savedObjects.client}
uiSettings={startMock.uiSettings}
timeHistory={timefilterSetupMock.history}
appName={'test'}
indexPatterns={[mockIndexPattern]}
intl={null as any}
Expand All @@ -164,6 +171,7 @@ describe('SearchBar', () => {
<SearchBar.WrappedComponent
savedObjectsClient={startMock.savedObjects.client}
uiSettings={startMock.uiSettings}
timeHistory={timefilterSetupMock.history}
appName={'test'}
indexPatterns={[mockIndexPattern]}
intl={null as any}
Expand All @@ -184,6 +192,7 @@ describe('SearchBar', () => {
<SearchBar.WrappedComponent
uiSettings={startMock.uiSettings}
savedObjectsClient={startMock.savedObjects.client}
timeHistory={timefilterSetupMock.history}
appName={'test'}
indexPatterns={[mockIndexPattern]}
intl={null as any}
Expand All @@ -203,6 +212,7 @@ describe('SearchBar', () => {
it('Should render query bar and filter bar', () => {
const component = mountWithIntl(
<SearchBar.WrappedComponent
timeHistory={timefilterSetupMock.history}
uiSettings={startMock.uiSettings}
savedObjectsClient={startMock.savedObjects.client}
appName={'test'}
Expand Down
Loading

0 comments on commit 3968a12

Please sign in to comment.