diff --git a/src/legacy/core_plugins/data/public/filter/filter_manager/filter_manager.test.ts b/src/legacy/core_plugins/data/public/filter/filter_manager/filter_manager.test.ts index 2bb12de316417e7..55e66fdb14d96cf 100644 --- a/src/legacy/core_plugins/data/public/filter/filter_manager/filter_manager.test.ts +++ b/src/legacy/core_plugins/data/public/filter/filter_manager/filter_manager.test.ts @@ -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; @@ -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. diff --git a/src/legacy/core_plugins/data/public/filter/filter_manager/filter_manager.ts b/src/legacy/core_plugins/data/public/filter/filter_manager/filter_manager.ts index a981103e3a5adea..1605c647a2672da 100644 --- a/src/legacy/core_plugins/data/public/filter/filter_manager/filter_manager.ts +++ b/src/legacy/core_plugins/data/public/filter/filter_manager/filter_manager.ts @@ -35,7 +35,7 @@ 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; @@ -43,12 +43,12 @@ export class FilterManager { private updated$: Subject = new Subject(); private fetch$: Subject = 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; diff --git a/src/legacy/core_plugins/data/public/filter/filter_manager/filter_state_manager.test.ts b/src/legacy/core_plugins/data/public/filter/filter_manager/filter_state_manager.test.ts index 4232d08549ddceb..6305eb319452f30 100644 --- a/src/legacy/core_plugins/data/public/filter/filter_manager/filter_state_manager.test.ts +++ b/src/legacy/core_plugins/data/public/filter/filter_manager/filter_state_manager.test.ts @@ -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; @@ -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', () => { diff --git a/src/legacy/core_plugins/data/public/filter/filter_manager/lib/__tests__/change_time_filter.test.js b/src/legacy/core_plugins/data/public/filter/filter_manager/lib/__tests__/change_time_filter.test.ts similarity index 67% rename from src/legacy/core_plugins/data/public/filter/filter_manager/lib/__tests__/change_time_filter.test.js rename to src/legacy/core_plugins/data/public/filter/filter_manager/lib/__tests__/change_time_filter.test.ts index 3a3cc176308c694..d3d05d20e9fbaa9 100644 --- a/src/legacy/core_plugins/data/public/filter/filter_manager/lib/__tests__/change_time_filter.test.js +++ b/src/legacy/core_plugins/data/public/filter/filter_manager/lib/__tests__/change_time_filter.test.ts @@ -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()); }); - }); diff --git a/src/legacy/core_plugins/data/public/filter/filter_manager/lib/change_time_filter.ts b/src/legacy/core_plugins/data/public/filter/filter_manager/lib/change_time_filter.ts index 7cf64c737fdacc0..6c6ed775951c87a 100644 --- a/src/legacy/core_plugins/data/public/filter/filter_manager/lib/change_time_filter.ts +++ b/src/legacy/core_plugins/data/public/filter/filter_manager/lib/change_time_filter.ts @@ -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({ diff --git a/src/legacy/core_plugins/data/public/filter/filter_service.ts b/src/legacy/core_plugins/data/public/filter/filter_service.ts index c36b122edca19a2..8853fae455c1d08 100644 --- a/src/legacy/core_plugins/data/public/filter/filter_service.ts +++ b/src/legacy/core_plugins/data/public/filter/filter_service.ts @@ -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 @@ -30,7 +30,7 @@ import { Timefilter } from '../timefilter'; export interface FilterServiceDependencies { indexPatterns: IndexPatterns; uiSettings: UiSettingsClientContract; - timefilter: Timefilter; + timefilter: TimefilterContract; } export class FilterService { diff --git a/src/legacy/core_plugins/data/public/index.ts b/src/legacy/core_plugins/data/public/index.ts index d2b32d78759fffd..a85a24252eee5b2 100644 --- a/src/legacy/core_plugins/data/public/index.ts +++ b/src/legacy/core_plugins/data/public/index.ts @@ -69,4 +69,4 @@ export { mockIndexPattern, } from './index_patterns'; -export { Timefilter, TimeHistory, getTime } from './timefilter'; +export { TimeHistoryContract, TimefilterContract, getTime, InputTimeRange } from './timefilter'; diff --git a/src/legacy/core_plugins/data/public/mocks.ts b/src/legacy/core_plugins/data/public/mocks.ts index 0ca0b4947d538a9..2a82927bb3ebfba 100644 --- a/src/legacy/core_plugins/data/public/mocks.ts +++ b/src/legacy/core_plugins/data/public/mocks.ts @@ -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> = { + return { filter: filterServiceMock.createSetupContract(), indexPatterns: indexPatternsServiceMock.createSetupContract(), query: queryServiceMock.createSetupContract(), + timefilter: timefilterServiceMock.createSetupContract(), }; - - return mock; } function createDataStartMock() { diff --git a/src/legacy/core_plugins/data/public/query/query_bar/components/query_bar.test.tsx b/src/legacy/core_plugins/data/public/query/query_bar/components/query_bar.test.tsx index 18733737c6c5479..01c3e26976d2194 100644 --- a/src/legacy/core_plugins/data/public/query/query_bar/components/query_bar.test.tsx +++ b/src/legacy/core_plugins/data/public/query/query_bar/components/query_bar.test.tsx @@ -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': @@ -100,6 +107,7 @@ describe('QueryBar', () => { { { { { { { { { return { FilterBar: () =>
, @@ -92,6 +95,7 @@ describe('SearchBar', () => { { { { { { { it('Should render query bar and filter bar', () => { const component = mountWithIntl( void; - timeHistory: TimeHistory; + timeHistory: TimeHistoryContract; // Filter bar showFilterBar?: boolean; filters?: Filter[]; diff --git a/src/legacy/core_plugins/data/public/timefilter/index.ts b/src/legacy/core_plugins/data/public/timefilter/index.ts index 5582d91dceae323..17564801cf14816 100644 --- a/src/legacy/core_plugins/data/public/timefilter/index.ts +++ b/src/legacy/core_plugins/data/public/timefilter/index.ts @@ -19,6 +19,7 @@ export { TimefilterService, TimefilterSetup } from './timefilter_service'; -export { Timefilter } from './timefilter'; -export { TimeHistory } from './time_history'; +export * from './types'; +export { Timefilter, TimefilterContract } from './timefilter'; +export { TimeHistory, TimeHistoryContract } from './time_history'; export { getTime } from './get_time'; diff --git a/src/legacy/core_plugins/data/public/timefilter/lib/diff_time_picker_vals.ts b/src/legacy/core_plugins/data/public/timefilter/lib/diff_time_picker_vals.ts index 23a05bc29a15b39..27da80661dbce4c 100644 --- a/src/legacy/core_plugins/data/public/timefilter/lib/diff_time_picker_vals.ts +++ b/src/legacy/core_plugins/data/public/timefilter/lib/diff_time_picker_vals.ts @@ -20,7 +20,7 @@ import _ from 'lodash'; import { RefreshInterval } from 'src/plugins/data/public'; -import { InputTimeRange } from '../timefilter'; +import { InputTimeRange } from '../types'; const valueOf = function(o: any) { if (o) return o.valueOf(); diff --git a/src/legacy/core_plugins/data/public/timefilter/time_history.ts b/src/legacy/core_plugins/data/public/timefilter/time_history.ts index 98e759fb27a9d82..ebbf561b815e11e 100644 --- a/src/legacy/core_plugins/data/public/timefilter/time_history.ts +++ b/src/legacy/core_plugins/data/public/timefilter/time_history.ts @@ -52,3 +52,5 @@ export class TimeHistory { return this.history.get(); } } + +export type TimeHistoryContract = PublicMethodsOf; diff --git a/src/legacy/core_plugins/data/public/timefilter/timefilter.test.ts b/src/legacy/core_plugins/data/public/timefilter/timefilter.test.ts index 47896189aa08012..bb0047ecafe7c6f 100644 --- a/src/legacy/core_plugins/data/public/timefilter/timefilter.test.ts +++ b/src/legacy/core_plugins/data/public/timefilter/timefilter.test.ts @@ -17,26 +17,6 @@ * under the License. */ -import './timefilter.test.mocks'; - -jest.mock('ui/chrome', () => ({ - getBasePath: () => `/some/base/path`, - getUiSettingsClient: () => { - return { - get: (key: string) => { - 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}`); - } - }, - }; - }, -})); - jest.mock('./lib/parse_querystring', () => ({ parseQueryString: () => { return { @@ -50,10 +30,19 @@ jest.mock('./lib/parse_querystring', () => ({ import sinon from 'sinon'; import expect from '@kbn/expect'; import moment from 'moment'; -import { timefilter } from 'ui/timefilter'; +import { Timefilter } from './timefilter'; import { Subscription } from 'rxjs'; import { TimeRange, RefreshInterval } from 'src/plugins/data/public'; +import { timefilterServiceMock } from './timefilter_service.mock'; +const timefilterSetupMock = timefilterServiceMock.createSetupContract(); + +const timefilterConfig = { + timeDefaults: { from: 'now-15m', to: 'now' }, + refreshIntervalDefaults: { pause: false, value: 0 }, +}; +const timefilter = new Timefilter(timefilterConfig, timefilterSetupMock.history); + function stubNowTime(nowTime: any) { // @ts-ignore global.nowTime = nowTime; @@ -242,13 +231,13 @@ describe('isTimeRangeSelectorEnabled', () => { test('should emit updated when disabled', () => { timefilter.disableTimeRangeSelector(); - expect(timefilter.isTimeRangeSelectorEnabled).to.be(false); + expect(timefilter.getIsTimeRangeSelectorEnabled()).to.be(false); expect(update.called).to.be(true); }); test('should emit updated when enabled', () => { timefilter.enableTimeRangeSelector(); - expect(timefilter.isTimeRangeSelectorEnabled).to.be(true); + expect(timefilter.getIsTimeRangeSelectorEnabled()).to.be(true); expect(update.called).to.be(true); }); }); @@ -268,13 +257,13 @@ describe('isAutoRefreshSelectorEnabled', () => { test('should emit updated when disabled', () => { timefilter.disableAutoRefreshSelector(); - expect(timefilter.isAutoRefreshSelectorEnabled).to.be(false); + expect(timefilter.getIsAutoRefreshSelectorEnabled()).to.be(false); expect(update.called).to.be(true); }); test('should emit updated when enabled', () => { timefilter.enableAutoRefreshSelector(); - expect(timefilter.isAutoRefreshSelectorEnabled).to.be(true); + expect(timefilter.getIsAutoRefreshSelectorEnabled()).to.be(true); expect(update.called).to.be(true); }); }); diff --git a/src/legacy/core_plugins/data/public/timefilter/timefilter.ts b/src/legacy/core_plugins/data/public/timefilter/timefilter.ts index b07060018f9d755..753161909f8ac65 100644 --- a/src/legacy/core_plugins/data/public/timefilter/timefilter.ts +++ b/src/legacy/core_plugins/data/public/timefilter/timefilter.ts @@ -19,26 +19,13 @@ import _ from 'lodash'; import { Subject, BehaviorSubject } from 'rxjs'; -import moment, { Moment } from 'moment'; +import moment from 'moment'; import { RefreshInterval, TimeRange } from 'src/plugins/data/public'; -import { IndexPattern } from 'src/legacy/core_plugins/data/public'; -import { TimeHistory } from './time_history'; +import { IndexPattern, TimeHistoryContract } from '../index'; import { areRefreshIntervalsDifferent, areTimeRangesDifferent } from './lib/diff_time_picker_vals'; import { parseQueryString } from './lib/parse_querystring'; import { calculateBounds, getTime } from './get_time'; - -export interface TimefilterConfig { - timeDefaults: TimeRange; - refreshIntervalDefaults: RefreshInterval; -} - -// Timefilter accepts moment input but always returns string output -export type InputTimeRange = - | TimeRange - | { - from: Moment; - to: Moment; - }; +import { TimefilterConfig, InputTimeRange } from './types'; export class Timefilter { // Fired when isTimeRangeSelectorEnabled \ isAutoRefreshSelectorEnabled are toggled @@ -53,38 +40,46 @@ export class Timefilter { private _time: TimeRange; private _refreshInterval!: RefreshInterval; - private _history: TimeHistory; + private _history: TimeHistoryContract; - public isTimeRangeSelectorEnabled: boolean = false; - public isAutoRefreshSelectorEnabled: boolean = false; + private isTimeRangeSelectorEnabled: boolean = false; + private isAutoRefreshSelectorEnabled: boolean = false; - constructor(config: TimefilterConfig, timeHistory: TimeHistory) { + constructor(config: TimefilterConfig, timeHistory: TimeHistoryContract) { this._history = timeHistory; this._time = config.timeDefaults; this.setRefreshInterval(config.refreshIntervalDefaults); } - getEnabledUpdated$ = () => { + public getIsTimeRangeSelectorEnabled() { + return this.isTimeRangeSelectorEnabled; + } + + public getIsAutoRefreshSelectorEnabled() { + return this.isAutoRefreshSelectorEnabled; + } + + public getEnabledUpdated$ = () => { return this.enabledUpdated$.asObservable(); }; - getTimeUpdate$ = () => { + public getTimeUpdate$ = () => { return this.timeUpdate$.asObservable(); }; - getRefreshIntervalUpdate$ = () => { + public getRefreshIntervalUpdate$ = () => { return this.refreshIntervalUpdate$.asObservable(); }; - getAutoRefreshFetch$ = () => { + public getAutoRefreshFetch$ = () => { return this.autoRefreshFetch$.asObservable(); }; - getFetch$ = () => { + public getFetch$ = () => { return this.fetch$.asObservable(); }; - getTime = (): TimeRange => { + public getTime = (): TimeRange => { const { from, to } = this._time; return { ...this._time, @@ -100,7 +95,7 @@ export class Timefilter { * @property {string|moment} time.from * @property {string|moment} time.to */ - setTime = (time: InputTimeRange) => { + public setTime = (time: InputTimeRange) => { // Object.assign used for partially composed updates const newTime = Object.assign(this.getTime(), time); if (areTimeRangesDifferent(this.getTime(), newTime)) { @@ -114,7 +109,7 @@ export class Timefilter { } }; - getRefreshInterval = () => { + public getRefreshInterval = () => { return _.clone(this._refreshInterval); }; @@ -124,7 +119,7 @@ export class Timefilter { * @property {number} time.value Refresh interval in milliseconds. Positive integer * @property {boolean} time.pause */ - setRefreshInterval = (refreshInterval: Partial) => { + public setRefreshInterval = (refreshInterval: Partial) => { const prevRefreshInterval = this.getRefreshInterval(); const newRefreshInterval = { ...prevRefreshInterval, ...refreshInterval }; // If the refresh interval is <= 0 handle that as a paused refresh @@ -149,39 +144,19 @@ export class Timefilter { } }; - toggleRefresh = () => { - this.setRefreshInterval({ - pause: !this._refreshInterval.pause, - value: this._refreshInterval.value, - }); - }; - - createFilter = (indexPattern: IndexPattern, timeRange: TimeRange) => { + public createFilter = (indexPattern: IndexPattern, timeRange: TimeRange) => { return getTime(indexPattern, timeRange ? timeRange : this._time, this.getForceNow()); }; - getBounds = () => { + public getBounds = () => { return this.calculateBounds(this._time); }; - getForceNow = () => { - const forceNow = parseQueryString().forceNow as string; - if (!forceNow) { - return; - } - - const ticks = Date.parse(forceNow); - if (isNaN(ticks)) { - throw new Error(`forceNow query parameter, ${forceNow}, can't be parsed by Date.parse`); - } - return new Date(ticks); - }; - - calculateBounds = (timeRange: TimeRange) => { + public calculateBounds = (timeRange: TimeRange) => { return calculateBounds(timeRange, { forceNow: this.getForceNow() }); }; - getActiveBounds = () => { + public getActiveBounds = () => { if (this.isTimeRangeSelectorEnabled) { return this.getBounds(); } @@ -190,7 +165,7 @@ export class Timefilter { /** * Show the time bounds selector part of the time filter */ - enableTimeRangeSelector = () => { + public enableTimeRangeSelector = () => { this.isTimeRangeSelectorEnabled = true; this.enabledUpdated$.next(true); }; @@ -198,7 +173,7 @@ export class Timefilter { /** * Hide the time bounds selector part of the time filter */ - disableTimeRangeSelector = () => { + public disableTimeRangeSelector = () => { this.isTimeRangeSelectorEnabled = false; this.enabledUpdated$.next(false); }; @@ -206,7 +181,7 @@ export class Timefilter { /** * Show the auto refresh part of the time filter */ - enableAutoRefreshSelector = () => { + public enableAutoRefreshSelector = () => { this.isAutoRefreshSelectorEnabled = true; this.enabledUpdated$.next(true); }; @@ -214,12 +189,31 @@ export class Timefilter { /** * Hide the auto refresh part of the time filter */ - disableAutoRefreshSelector = () => { + public disableAutoRefreshSelector = () => { this.isAutoRefreshSelectorEnabled = false; this.enabledUpdated$.next(false); }; - notifyShouldFetch = () => { + /** + * Added to allow search_poll to trigger an auto refresh event. + * Before this change, search_poll used to access a now private member of this instance. + */ + public notifyShouldFetch = () => { this.autoRefreshFetch$.next(); }; + + private getForceNow = () => { + const forceNow = parseQueryString().forceNow as string; + if (!forceNow) { + return; + } + + const ticks = Date.parse(forceNow); + if (isNaN(ticks)) { + throw new Error(`forceNow query parameter, ${forceNow}, can't be parsed by Date.parse`); + } + return new Date(ticks); + }; } + +export type TimefilterContract = PublicMethodsOf; diff --git a/src/legacy/core_plugins/data/public/timefilter/timefilter_service.mock.ts b/src/legacy/core_plugins/data/public/timefilter/timefilter_service.mock.ts new file mode 100644 index 000000000000000..f777b0415b4b738 --- /dev/null +++ b/src/legacy/core_plugins/data/public/timefilter/timefilter_service.mock.ts @@ -0,0 +1,76 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import { TimefilterService, TimeHistoryContract, TimefilterContract } from '.'; + +export type TimefilterServiceClientContract = PublicMethodsOf; + +const createSetupContractMock = () => { + const timefilterMock: jest.Mocked = { + getIsAutoRefreshSelectorEnabled: jest.fn(), + getIsTimeRangeSelectorEnabled: jest.fn(), + getEnabledUpdated$: jest.fn(), + getTimeUpdate$: jest.fn(), + getRefreshIntervalUpdate$: jest.fn(), + getAutoRefreshFetch$: jest.fn(), + getFetch$: jest.fn(), + getTime: jest.fn(), + setTime: jest.fn(), + setRefreshInterval: jest.fn(), + getRefreshInterval: jest.fn(), + getActiveBounds: jest.fn(), + disableAutoRefreshSelector: jest.fn(), + disableTimeRangeSelector: jest.fn(), + enableAutoRefreshSelector: jest.fn(), + enableTimeRangeSelector: jest.fn(), + getBounds: jest.fn(), + calculateBounds: jest.fn(), + notifyShouldFetch: jest.fn(), + createFilter: jest.fn(), + }; + + const historyMock: jest.Mocked = { + add: jest.fn(), + get: jest.fn(), + }; + + const setupContract = { + timefilter: timefilterMock, + history: historyMock, + }; + + return setupContract; +}; + +const createMock = () => { + const mocked: jest.Mocked = { + setup: jest.fn(), + start: jest.fn(), + stop: jest.fn(), + }; + + mocked.setup.mockReturnValue(createSetupContractMock()); + return mocked; +}; + +export const timefilterServiceMock = { + create: createMock, + createSetupContract: createSetupContractMock, + createStartContract: createSetupContractMock, +}; diff --git a/src/legacy/core_plugins/data/public/timefilter/timefilter_service.ts b/src/legacy/core_plugins/data/public/timefilter/timefilter_service.ts index a799aa904ef2a4f..96c490a195d3ddb 100644 --- a/src/legacy/core_plugins/data/public/timefilter/timefilter_service.ts +++ b/src/legacy/core_plugins/data/public/timefilter/timefilter_service.ts @@ -18,8 +18,7 @@ */ import { UiSettingsClientContract } from 'src/core/public'; -import { Timefilter } from './timefilter'; -import { TimeHistory } from './index'; +import { TimeHistory, Timefilter, TimeHistoryContract, TimefilterContract } from './index'; /** * Filter Service @@ -31,7 +30,7 @@ export interface TimeFilterServiceDependencies { } export class TimefilterService { - public setup({ uiSettings }: TimeFilterServiceDependencies) { + public setup({ uiSettings }: TimeFilterServiceDependencies): TimefilterSetup { const timefilterConfig = { timeDefaults: uiSettings.get('timepicker:timeDefaults'), refreshIntervalDefaults: uiSettings.get('timepicker:refreshIntervalDefaults'), @@ -55,4 +54,7 @@ export class TimefilterService { } /** @public */ -export type TimefilterSetup = ReturnType; +export interface TimefilterSetup { + timefilter: TimefilterContract; + history: TimeHistoryContract; +} diff --git a/src/legacy/core_plugins/data/public/filter/filter_manager/lib/__tests__/change_time_filter.test.mocks.ts b/src/legacy/core_plugins/data/public/timefilter/types.ts similarity index 63% rename from src/legacy/core_plugins/data/public/filter/filter_manager/lib/__tests__/change_time_filter.test.mocks.ts rename to src/legacy/core_plugins/data/public/timefilter/types.ts index add054c4925108d..879776cee178e76 100644 --- a/src/legacy/core_plugins/data/public/filter/filter_manager/lib/__tests__/change_time_filter.test.mocks.ts +++ b/src/legacy/core_plugins/data/public/timefilter/types.ts @@ -16,13 +16,23 @@ * specific language governing permissions and limitations * under the License. */ +import { Moment } from 'moment'; +import { RefreshInterval, TimeRange } from 'src/plugins/data/public'; -import { chromeServiceMock } from '../../../../../../../../core/public/mocks'; +export interface TimefilterConfig { + timeDefaults: TimeRange; + refreshIntervalDefaults: RefreshInterval; +} -jest.doMock('ui/new_platform', () => ({ - npStart: { - core: { - chrome: chromeServiceMock.createStartContract(), - }, - }, -})); +// Timefilter accepts moment input but always returns string output +export type InputTimeRange = + | TimeRange + | { + from: Moment; + to: Moment; + }; + +export interface TimeRangeBounds { + min: Moment | undefined; + max: Moment | undefined; +} diff --git a/src/legacy/core_plugins/kibana/public/dashboard/dashboard_state.test.ts b/src/legacy/core_plugins/kibana/public/dashboard/dashboard_state.test.ts index be76f498c891150..d7ea9766749e1a2 100644 --- a/src/legacy/core_plugins/kibana/public/dashboard/dashboard_state.test.ts +++ b/src/legacy/core_plugins/kibana/public/dashboard/dashboard_state.test.ts @@ -24,36 +24,27 @@ import { getAppStateMock, getSavedDashboardMock } from './__tests__'; import { AppStateClass } from 'ui/state_management/app_state'; import { DashboardAppState } from './types'; import { TimeRange } from 'src/plugins/data/public'; -import { Timefilter } from 'ui/timefilter'; import { ViewMode } from '../../../embeddable_api/public/np_ready/public'; +import { dataPluginMock } from '../../../../core_plugins/data/public/mocks'; +const dataSetupMock = dataPluginMock.createSetup(); + describe('DashboardState', function() { let dashboardState: DashboardStateManager; const savedDashboard = getSavedDashboardMock(); let mockTime: TimeRange = { to: 'now', from: 'now-15m' }; - const mockTimefilter: Partial = { - setTime(time) { - mockTime = time as TimeRange; - }, - getTime() { - return mockTime; - }, - disableAutoRefreshSelector: jest.fn(), - setRefreshInterval: jest.fn(), - getRefreshInterval: jest.fn(), - disableTimeRangeSelector: jest.fn(), - enableAutoRefreshSelector: jest.fn(), - getActiveBounds: jest.fn(), - enableTimeRangeSelector: () => {}, - isAutoRefreshSelectorEnabled: true, - isTimeRangeSelectorEnabled: true, - getAutoRefreshFetch$: jest.fn(), - getEnabledUpdated$: jest.fn(), - getRefreshIntervalUpdate$: jest.fn(), - getFetch$: jest.fn(), - getTimeUpdate$: jest.fn(), - }; + const mockTimefilter = dataSetupMock.timefilter!.timefilter; + + mockTimefilter.setTime.mockImplementation((time: any) => { + mockTime = { + from: time.from.toISOString(), + to: time.to.toISOString(), + }; + }); + mockTimefilter.getTime.mockImplementation(() => { + return mockTime; + }); function initDashboardState() { dashboardState = new DashboardStateManager({ @@ -73,7 +64,7 @@ describe('DashboardState', function() { mockTime.to = '2015-09-29 06:31:44.000'; initDashboardState(); - dashboardState.syncTimefilterWithDashboard(mockTimefilter as Timefilter); + dashboardState.syncTimefilterWithDashboard(mockTimefilter); expect(mockTime.to).toBe('now/w'); expect(mockTime.from).toBe('now/w'); @@ -88,7 +79,7 @@ describe('DashboardState', function() { mockTime.to = '2015-09-29 06:31:44.000'; initDashboardState(); - dashboardState.syncTimefilterWithDashboard(mockTimefilter as Timefilter); + dashboardState.syncTimefilterWithDashboard(mockTimefilter); expect(mockTime.to).toBe('now'); expect(mockTime.from).toBe('now-13d'); @@ -103,7 +94,7 @@ describe('DashboardState', function() { mockTime.to = 'now/w'; initDashboardState(); - dashboardState.syncTimefilterWithDashboard(mockTimefilter as Timefilter); + dashboardState.syncTimefilterWithDashboard(mockTimefilter); expect(mockTime.to).toBe(savedDashboard.timeTo); expect(mockTime.from).toBe(savedDashboard.timeFrom); diff --git a/src/legacy/core_plugins/kibana/public/doc/__tests__/doc.js b/src/legacy/core_plugins/kibana/public/doc/__tests__/doc.js index fff8b800337eb63..14106f5379211e5 100644 --- a/src/legacy/core_plugins/kibana/public/doc/__tests__/doc.js +++ b/src/legacy/core_plugins/kibana/public/doc/__tests__/doc.js @@ -139,8 +139,8 @@ describe('Doc app controller', function () { it('should disable the time filter', function (done) { init(); - expect(timefilter.isAutoRefreshSelectorEnabled).to.be(false); - expect(timefilter.isTimeRangeSelectorEnabled).to.be(false); + expect(timefilter.getIsAutoRefreshSelectorEnabled()).to.be(false); + expect(timefilter.getIsTimeRangeSelectorEnabled()).to.be(false); done(); }); diff --git a/src/legacy/core_plugins/kibana_react/public/top_nav_menu/top_nav_menu.test.tsx b/src/legacy/core_plugins/kibana_react/public/top_nav_menu/top_nav_menu.test.tsx index 91c8cf55f05e7ba..325571a4216bcef 100644 --- a/src/legacy/core_plugins/kibana_react/public/top_nav_menu/top_nav_menu.test.tsx +++ b/src/legacy/core_plugins/kibana_react/public/top_nav_menu/top_nav_menu.test.tsx @@ -25,6 +25,9 @@ import { shallowWithIntl } from 'test_utils/enzyme_helpers'; import { coreMock } from '../../../../../core/public/mocks'; const startMock = coreMock.createStart(); +import { timefilterServiceMock } from '../../../../core_plugins/data/public/timefilter/timefilter_service.mock'; +const timefilterSetupMock = timefilterServiceMock.createSetupContract(); + jest.mock('../../../../core_plugins/data/public', () => { return { SearchBar: () =>
, @@ -57,6 +60,7 @@ describe('TopNavMenu', () => { const component = shallowWithIntl( @@ -69,6 +73,7 @@ describe('TopNavMenu', () => { const component = shallowWithIntl( { const component = shallowWithIntl( { const component = shallowWithIntl( & { name: string; uiSettings: UiSettingsClientContract; savedObjectsClient: SavedObjectsClientContract; - timeHistory: TimeHistory; + timeHistory: TimeHistoryContract; config?: TopNavMenuData[]; showSearchBar?: boolean; }; diff --git a/src/legacy/ui/public/kbn_top_nav/kbn_top_nav.js b/src/legacy/ui/public/kbn_top_nav/kbn_top_nav.js index 32b323905ae71f8..f2230bf3a5538a5 100644 --- a/src/legacy/ui/public/kbn_top_nav/kbn_top_nav.js +++ b/src/legacy/ui/public/kbn_top_nav/kbn_top_nav.js @@ -47,7 +47,7 @@ module.directive('kbnTopNav', () => { // Pass in storage const localStorage = new Storage(window.localStorage); child.setAttribute('store', 'store'); - child.setAttribute('history', 'history'); + child.setAttribute('time-history', 'timeHistory'); child.setAttribute('ui-settings', 'uiSettings'); child.setAttribute('saved-objects-client', 'savedObjectsClient'); @@ -56,7 +56,7 @@ module.directive('kbnTopNav', () => { const linkFn = ($scope, _, $attr) => { $scope.store = localStorage; - $scope.history = data.timefilter.history; + $scope.timeHistory = data.timefilter.history; $scope.uiSettings = chrome.getUiSettingsClient(); $scope.savedObjectsClient = chrome.getSavedObjectsClient(); @@ -102,7 +102,7 @@ module.directive('kbnTopNavHelper', (reactDirective) => { ['uiSettings', { watchDepth: 'reference' }], ['savedObjectsClient', { watchDepth: 'reference' }], ['intl', { watchDepth: 'reference' }], - ['history', { watchDepth: 'reference' }], + ['timeHistory', { watchDepth: 'reference' }], ['store', { watchDepth: 'reference' }], ['onQuerySubmit', { watchDepth: 'reference' }], diff --git a/src/legacy/ui/public/timefilter/index.ts b/src/legacy/ui/public/timefilter/index.ts index e40c9799a28e6ff..f9c19d1f067fc01 100644 --- a/src/legacy/ui/public/timefilter/index.ts +++ b/src/legacy/ui/public/timefilter/index.ts @@ -18,11 +18,18 @@ */ import uiRoutes from 'ui/routes'; +import { TimefilterContract, TimeHistoryContract } from 'src/legacy/core_plugins/data/public'; import { registerTimefilterWithGlobalState } from './setup_router'; - import { setup as data } from '../../../core_plugins/data/public/legacy'; -export { getTime } from '../../../core_plugins/data/public'; +export { + getTime, + InputTimeRange, + TimeHistoryContract, + TimefilterContract, +} from '../../../core_plugins/data/public'; +export type Timefilter = TimefilterContract; +export type TimeHistory = TimeHistoryContract; export const timeHistory = data.timefilter.history; export const timefilter = data.timefilter.timefilter; diff --git a/src/legacy/ui/public/timefilter/setup_router.ts b/src/legacy/ui/public/timefilter/setup_router.ts index cbd03df455da3fc..3c81fde89149b1c 100644 --- a/src/legacy/ui/public/timefilter/setup_router.ts +++ b/src/legacy/ui/public/timefilter/setup_router.ts @@ -23,7 +23,7 @@ import moment from 'moment'; import { subscribeWithScope } from 'ui/utils/subscribe_with_scope'; import chrome from 'ui/chrome'; import { RefreshInterval, TimeRange } from 'src/plugins/data/public'; -import { Timefilter } from '../../../core_plugins/data/public/timefilter'; +import { TimefilterContract } from '../../../core_plugins/data/public/timefilter'; // TODO // remove everything underneath once globalState is no longer an angular service @@ -46,7 +46,7 @@ export function getTimefilterConfig() { // This function is exposed for applications that do not use uiRoutes like APM // Kibana issue https://github.com/elastic/kibana/issues/19110 tracks the removal of this dependency on uiRouter export const registerTimefilterWithGlobalState = _.once( - (timefilter: Timefilter, globalState: any, $rootScope: IScope) => { + (timefilter: TimefilterContract, globalState: any, $rootScope: IScope) => { // settings have to be re-fetched here, to make sure that settings changed by overrideLocalDefault are taken into account. const config = getTimefilterConfig(); timefilter.setTime(_.defaults(globalState.time || {}, config.timeDefaults)); diff --git a/src/legacy/ui/public/vis/vis_filters/brush_event.test.js b/src/legacy/ui/public/vis/vis_filters/brush_event.test.js index b064022819f569e..b3d5d0f94364dcc 100644 --- a/src/legacy/ui/public/vis/vis_filters/brush_event.test.js +++ b/src/legacy/ui/public/vis/vis_filters/brush_event.test.js @@ -17,32 +17,27 @@ * under the License. */ -import './brush_event.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 _ from 'lodash'; import moment from 'moment'; import expect from '@kbn/expect'; import { onBrushEvent } from './brush_event'; -import { timefilter } from 'ui/timefilter'; + +import { dataPluginMock } from '../../../../core_plugins/data/public/mocks'; +const dataSetupMock = dataPluginMock.createSetup(); +const { timefilter } = dataSetupMock.timefilter; + +let _time = undefined; +timefilter.setTime.mockImplementation((time) => { + _time = { + from: time.from.toISOString(), + to: time.to.toISOString(), + }; +}); +timefilter.getTime.mockImplementation(() => { + return _time; +}); + describe('brushEvent', () => { const DAY_IN_MS = 24 * 60 * 60 * 1000; @@ -98,7 +93,7 @@ describe('brushEvent', () => { test('ignores event when data.xAxisField not provided', () => { const event = _.cloneDeep(baseEvent); - onBrushEvent(event, $state); + onBrushEvent(timefilter, event, $state); expect($state) .not.have.property('$newFilters'); }); @@ -120,7 +115,7 @@ describe('brushEvent', () => { test('by ignoring the event when range spans zero time', () => { const event = _.cloneDeep(dateEvent); event.range = [JAN_01_2014, JAN_01_2014]; - onBrushEvent(event, $state); + onBrushEvent(timefilter, event, $state); expect($state) .not.have.property('$newFilters'); }); @@ -128,7 +123,7 @@ describe('brushEvent', () => { test('by updating the timefilter', () => { const event = _.cloneDeep(dateEvent); event.range = [JAN_01_2014, JAN_01_2014 + DAY_IN_MS]; - onBrushEvent(event, $state); + onBrushEvent(timefilter, event, $state); const { from, to } = timefilter.getTime(); // Set to a baseline timezone for comparison. expect(from).to.be(new Date(JAN_01_2014).toISOString()); @@ -155,7 +150,7 @@ describe('brushEvent', () => { const rangeBegin = JAN_01_2014; const rangeEnd = rangeBegin + DAY_IN_MS; event.range = [rangeBegin, rangeEnd]; - onBrushEvent(event, $state); + onBrushEvent(timefilter, event, $state); expect($state) .to.have.property('$newFilters'); expect($state.filters.length) @@ -189,14 +184,14 @@ describe('brushEvent', () => { test('by ignoring the event when range does not span at least 2 values', () => { const event = _.cloneDeep(numberEvent); event.range = [1]; - onBrushEvent(event, $state); + onBrushEvent(timefilter, event, $state); expect($state).not.have.property('$newFilters'); }); test('by creating a new filter', () => { const event = _.cloneDeep(numberEvent); event.range = [1, 2, 3, 4]; - onBrushEvent(event, $state); + onBrushEvent(timefilter, event, $state); expect($state) .to.have.property('$newFilters'); expect($state.filters.length) @@ -219,7 +214,7 @@ describe('brushEvent', () => { }, range: { gte: 1, lt: 4 } }); - onBrushEvent(event, $state); + onBrushEvent(timefilter, event, $state); expect($state) .not.have.property('$newFilters'); expect($state.filters.length) @@ -247,7 +242,7 @@ describe('brushEvent', () => { } } }); - onBrushEvent(event, $state); + onBrushEvent(timefilter, event, $state); expect($state) .not.have.property('$newFilters'); expect($state.filters.length) diff --git a/src/legacy/ui/public/visualize/loader/embedded_visualize_handler.test.ts b/src/legacy/ui/public/visualize/loader/embedded_visualize_handler.test.ts index bfb945be1a59d21..9e971f8466a71c7 100644 --- a/src/legacy/ui/public/visualize/loader/embedded_visualize_handler.test.ts +++ b/src/legacy/ui/public/visualize/loader/embedded_visualize_handler.test.ts @@ -16,6 +16,8 @@ * specific language governing permissions and limitations * under the License. */ +jest.mock('ui/new_platform'); + import { mockDataLoaderFetch, timefilter } from './embedded_visualize_handler.test.mocks'; import _ from 'lodash'; @@ -27,7 +29,11 @@ import { Inspector } from '../../inspector'; import { EmbeddedVisualizeHandler } from './embedded_visualize_handler'; import { AggConfigs } from 'ui/vis/agg_configs'; -jest.mock('ui/new_platform'); +jest.mock('plugins/interpreter/interpreter', () => ({ + getInterpreter: () => { + return Promise.resolve(); + }, +})); describe('EmbeddedVisualizeHandler', () => { let handler: any; diff --git a/x-pack/legacy/plugins/ml/public/components/navigation_menu/top_nav/top_nav.tsx b/x-pack/legacy/plugins/ml/public/components/navigation_menu/top_nav/top_nav.tsx index 0596df80fa44998..0a458f5b362b5e3 100644 --- a/x-pack/legacy/plugins/ml/public/components/navigation_menu/top_nav/top_nav.tsx +++ b/x-pack/legacy/plugins/ml/public/components/navigation_menu/top_nav/top_nav.tsx @@ -37,10 +37,10 @@ export const TopNav: FC = () => { const [time, setTime] = useState(timefilter.getTime()); const [recentlyUsedRanges, setRecentlyUsedRanges] = useState(getRecentlyUsedRanges()); const [isAutoRefreshSelectorEnabled, setIsAutoRefreshSelectorEnabled] = useState( - timefilter.isAutoRefreshSelectorEnabled + timefilter.getIsAutoRefreshSelectorEnabled() ); const [isTimeRangeSelectorEnabled, setIsTimeRangeSelectorEnabled] = useState( - timefilter.isTimeRangeSelectorEnabled + timefilter.getIsTimeRangeSelectorEnabled() ); const dateFormat = chrome.getUiSettingsClient().get('dateFormat'); @@ -64,8 +64,8 @@ export const TopNav: FC = () => { function timefilterUpdateListener() { setTime(timefilter.getTime()); setRefreshInterval(timefilter.getRefreshInterval()); - setIsAutoRefreshSelectorEnabled(timefilter.isAutoRefreshSelectorEnabled); - setIsTimeRangeSelectorEnabled(timefilter.isTimeRangeSelectorEnabled); + setIsAutoRefreshSelectorEnabled(timefilter.getIsAutoRefreshSelectorEnabled()); + setIsTimeRangeSelectorEnabled(timefilter.getIsTimeRangeSelectorEnabled()); } function updateFilter({ start, end }: Duration) { diff --git a/x-pack/legacy/plugins/monitoring/public/views/__tests__/base_controller.js b/x-pack/legacy/plugins/monitoring/public/views/__tests__/base_controller.js index 22949286f50e3d2..e1f7095b4628742 100644 --- a/x-pack/legacy/plugins/monitoring/public/views/__tests__/base_controller.js +++ b/x-pack/legacy/plugins/monitoring/public/views/__tests__/base_controller.js @@ -124,8 +124,8 @@ describe('MonitoringViewBaseController', function () { describe('time filter', () => { it('enables timepicker and auto refresh #1', () => { - expect(timefilter.isTimeRangeSelectorEnabled).to.be(true); - expect(timefilter.isAutoRefreshSelectorEnabled).to.be(true); + expect(timefilter.getIsTimeRangeSelectorEnabled()).to.be(true); + expect(timefilter.getIsAutoRefreshSelectorEnabled()).to.be(true); }); it('enables timepicker and auto refresh #2', () => { @@ -135,8 +135,8 @@ describe('MonitoringViewBaseController', function () { }; ctrl = new MonitoringViewBaseController(opts); - expect(timefilter.isTimeRangeSelectorEnabled).to.be(true); - expect(timefilter.isAutoRefreshSelectorEnabled).to.be(true); + expect(timefilter.getIsTimeRangeSelectorEnabled()).to.be(true); + expect(timefilter.getIsAutoRefreshSelectorEnabled()).to.be(true); }); it('disables timepicker and enables auto refresh', () => { @@ -146,8 +146,8 @@ describe('MonitoringViewBaseController', function () { }; ctrl = new MonitoringViewBaseController(opts); - expect(timefilter.isTimeRangeSelectorEnabled).to.be(false); - expect(timefilter.isAutoRefreshSelectorEnabled).to.be(true); + expect(timefilter.getIsTimeRangeSelectorEnabled()).to.be(false); + expect(timefilter.getIsAutoRefreshSelectorEnabled()).to.be(true); }); it('enables timepicker and disables auto refresh', () => { @@ -157,8 +157,8 @@ describe('MonitoringViewBaseController', function () { }; ctrl = new MonitoringViewBaseController(opts); - expect(timefilter.isTimeRangeSelectorEnabled).to.be(true); - expect(timefilter.isAutoRefreshSelectorEnabled).to.be(false); + expect(timefilter.getIsTimeRangeSelectorEnabled()).to.be(true); + expect(timefilter.getIsAutoRefreshSelectorEnabled()).to.be(false); }); it('disables timepicker and auto refresh', () => { @@ -171,8 +171,8 @@ describe('MonitoringViewBaseController', function () { }; ctrl = new MonitoringViewBaseController(opts); - expect(timefilter.isTimeRangeSelectorEnabled).to.be(false); - expect(timefilter.isAutoRefreshSelectorEnabled).to.be(false); + expect(timefilter.getIsTimeRangeSelectorEnabled()).to.be(false); + expect(timefilter.getIsAutoRefreshSelectorEnabled()).to.be(false); }); it('disables timepicker and auto refresh', (done) => { diff --git a/x-pack/legacy/plugins/monitoring/public/views/__tests__/base_table_controller.js b/x-pack/legacy/plugins/monitoring/public/views/__tests__/base_table_controller.js index 5c2791d781f4d7a..7fc36f67370add8 100644 --- a/x-pack/legacy/plugins/monitoring/public/views/__tests__/base_table_controller.js +++ b/x-pack/legacy/plugins/monitoring/public/views/__tests__/base_table_controller.js @@ -76,8 +76,8 @@ describe('MonitoringViewBaseTableController', function () { }); it('enables timepicker', () => { - expect(timefilter.isTimeRangeSelectorEnabled).to.be(true); - expect(timefilter.isAutoRefreshSelectorEnabled).to.be(true); + expect(timefilter.getIsTimeRangeSelectorEnabled()).to.be(true); + expect(timefilter.getIsAutoRefreshSelectorEnabled()).to.be(true); }); it('sets page title', () => {