Skip to content

Commit

Permalink
Timefilter should return strings instead of moments (#25625)
Browse files Browse the repository at this point in the history
* fix timefilter to return strings instead of moment objects

* add functional test

* remove unused functions
  • Loading branch information
lukasolson authored Nov 16, 2018
1 parent 707a035 commit 9325e94
Show file tree
Hide file tree
Showing 6 changed files with 55 additions and 24 deletions.
25 changes: 12 additions & 13 deletions src/ui/public/filter_bar/lib/__tests__/change_time_filter.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -36,31 +36,30 @@ jest.mock('ui/chrome',
},
}), { virtual: true });

import moment from 'moment';
import expect from 'expect.js';
import { changeTimeFilter } from '../change_time_filter';
import { timefilter } from 'ui/timefilter';

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

test('should change the timefilter to match the range gt/lt', function () {
const filter = { range: { '@timestamp': { gt: 1388559600000, lt: 1388646000000 } } };
const filter = { range: { '@timestamp': { gt, lt } } };
changeTimeFilter(filter);
expect(timefilter.getTime().mode).to.be('absolute');
expect(moment.isMoment(timefilter.getTime().to)).to.be(true);
expect(timefilter.getTime().to.isSame('2014-01-02'));
expect(moment.isMoment(timefilter.getTime().from)).to.be(true);
expect(timefilter.getTime().from.isSame('2014-01-01'));
const { mode, to, from } = timefilter.getTime();
expect(mode).to.be('absolute');
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 () {
const filter = { range: { '@timestamp': { gte: 1388559600000, lte: 1388646000000 } } };
const filter = { range: { '@timestamp': { gte: gt, lte: lt } } };
changeTimeFilter(filter);
expect(timefilter.getTime().mode).to.be('absolute');
expect(moment.isMoment(timefilter.getTime().to)).to.be(true);
expect(timefilter.getTime().to.isSame('2014-01-02'));
expect(moment.isMoment(timefilter.getTime().from)).to.be(true);
expect(timefilter.getTime().from.isSame('2014-01-01'));
const { mode, to, from } = timefilter.getTime();
expect(mode).to.be('absolute');
expect(to).to.be(new Date(lt).toISOString());
expect(from).to.be(new Date(gt).toISOString());
});

});
7 changes: 6 additions & 1 deletion src/ui/public/timefilter/timefilter.js
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,12 @@ class Timefilter extends SimpleEmitter {
}

getTime = () => {
return _.clone(this._time);
const { from, to } = this._time;
return {
...this._time,
from: moment.isMoment(from) ? from.toISOString() : from,
to: moment.isMoment(to) ? to.toISOString() : to
};
}

/**
Expand Down
12 changes: 12 additions & 0 deletions src/ui/public/timefilter/timefilter.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,7 @@ jest.mock('ui/timefilter/lib/parse_querystring',

import sinon from 'sinon';
import expect from 'expect.js';
import moment from 'moment';
import { timefilter } from './timefilter';

function stubNowTime(nowTime) {
Expand Down Expand Up @@ -101,6 +102,17 @@ describe('setTime', () => {
expect(update.called).to.be(true);
expect(fetch.called).to.be(true);
});

test('should return strings and not moment objects', () => {
const from = moment().subtract(15, 'minutes');
const to = moment();
timefilter.setTime({ to, from, mode: 'absolute' });
expect(timefilter.getTime()).to.eql({
from: from.toISOString(),
to: to.toISOString(),
mode: 'absolute'
});
});
});

describe('setRefreshInterval', () => {
Expand Down
14 changes: 4 additions & 10 deletions src/ui/public/utils/__tests__/brush_event.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,6 @@ jest.mock('ui/chrome',

import _ from 'lodash';
import expect from 'expect.js';
import moment from 'moment';
import { onBrushEvent } from '../brush_event';
import { timefilter } from 'ui/timefilter';

Expand Down Expand Up @@ -102,17 +101,12 @@ describe('brushEvent', () => {
const event = _.cloneDeep(dateEvent);
event.range = [JAN_01_2014, JAN_01_2014 + DAY_IN_MS];
onBrushEvent(event, $state);
expect(timefilter.getTime().mode).to.be('absolute');
expect(moment.isMoment(timefilter.getTime().from))
.to.be(true);
const { mode, from, to } = timefilter.getTime();
expect(mode).to.be('absolute');
// Set to a baseline timezone for comparison.
expect(timefilter.getTime().from.utcOffset(0).format('YYYY-MM-DD'))
.to.equal('2014-01-01');
expect(moment.isMoment(timefilter.getTime().to))
.to.be(true);
expect(from).to.be(new Date(JAN_01_2014).toISOString());
// Set to a baseline timezone for comparison.
expect(timefilter.getTime().to.utcOffset(0).format('YYYY-MM-DD'))
.to.equal('2014-01-02');
expect(to).to.be(new Date(JAN_01_2014 + DAY_IN_MS).toISOString());
});
});

Expand Down
15 changes: 15 additions & 0 deletions test/functional/apps/discover/_discover.js
Original file line number Diff line number Diff line change
Expand Up @@ -125,6 +125,11 @@ export default function ({ getService, getPageObjects }) {
expect(actualTimeString).to.be(expectedTimeString);
});

it('should show bars in the correct time zone', async function () {
const ticks = await PageObjects.discover.getBarChartXTicks();
expect(ticks).to.eql(['2015-09-20 00:00', '2015-09-21 00:00', '2015-09-22 00:00', '2015-09-23 00:00']);
});

it('should show correct initial chart interval of Auto', async function () {
const actualInterval = await PageObjects.discover.getChartInterval();

Expand Down Expand Up @@ -404,5 +409,15 @@ export default function ({ getService, getPageObjects }) {
});
});
});

describe('time zone switch', () => {
it('should show bars in the correct time zone after switching', async function () {
await kibanaServer.uiSettings.replace({ 'dateFormat:tz': 'America/Phoenix' });
await remote.refresh();
await PageObjects.header.setAbsoluteRange(fromTime, toTime);
const ticks = await PageObjects.discover.getBarChartXTicks();
expect(ticks).to.eql(['2015-09-19 17:00', '2015-09-20 17:00', '2015-09-21 17:00', '2015-09-22 17:00']);
});
});
});
}
6 changes: 6 additions & 0 deletions test/functional/page_objects/discover_page.js
Original file line number Diff line number Diff line change
Expand Up @@ -125,6 +125,12 @@ export function DiscoverPageProvider({ getService, getPageObjects }) {
return await testSubjects.getVisibleText('discoverCurrentQuery');
}

async getBarChartXTicks() {
return getRemote()
.findAllByCssSelector('.x.axis.CategoryAxis-1 > .tick > text')
.getVisibleText();
}

getBarChartData() {
let yAxisLabel = 0;
let yAxisHeight;
Expand Down

0 comments on commit 9325e94

Please sign in to comment.