123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118 |
- import moment from 'moment';
- import {
- getDateFromMoment,
- getXAxisDates,
- } from 'sentry/views/organizationStats/usageChart/utils';
- const TS_START = 1531094400000; // 2018 July 9, 12am UTC
- const TS_END = 1531180800000; // 2018 July 10, 12am UTC
- describe('getDateFromMoment', () => {
- const start = moment.unix(TS_START / 1000);
- // Ensure date remains in UTC
- it('shows the date if interval is >= 24h', () => {
- expect(getDateFromMoment(start)).toBe('Jul 9');
- expect(getDateFromMoment(start, '7d')).toBe('Jul 9');
- expect(getDateFromMoment(moment('2021-10-31'))).toBe('Oct 31');
- });
- // Ensure datetime is shifted to localtime
- it('shows the date and time if interval is <24h', () => {
- expect(getDateFromMoment(start, '6h')).toBe('Jul 8 8:00 PM - 2:00 AM (-04:00)');
- expect(getDateFromMoment(start, '1h')).toBe('Jul 8 8:00 PM - 9:00 PM (-04:00)');
- expect(getDateFromMoment(start, '5m')).toBe('Jul 8 8:00 PM - 8:05 PM (-04:00)');
- });
- // Ensure datetime is shifted to localtime
- it('coerces date and time into UTC', () => {
- expect(getDateFromMoment(start, '6h', true)).toBe(
- 'Jul 9 12:00 AM - 6:00 AM (+00:00)'
- );
- expect(getDateFromMoment(start, '1h', true)).toBe(
- 'Jul 9 12:00 AM - 1:00 AM (+00:00)'
- );
- expect(getDateFromMoment(start, '5m', true)).toBe(
- 'Jul 9 12:00 AM - 12:05 AM (+00:00)'
- );
- });
- });
- describe('getXAxisDates', () => {
- // Ensure date remains in UTC
- it('calculates 1d intervals', () => {
- let dates = getXAxisDates(TS_START, TS_END);
- expect(dates).toEqual(['Jul 9', 'Jul 10']);
- dates = getXAxisDates('2021-10-29', '2021-10-31');
- expect(dates).toEqual(['Oct 29', 'Oct 30', 'Oct 31']);
- });
- // Datetime remains in UTC
- it('calculates 4h intervals in UTC', () => {
- const dates = getXAxisDates(TS_START, TS_END, true, '4h');
- expect(dates).toEqual([
- 'Jul 9 12:00 AM - 4:00 AM (+00:00)',
- 'Jul 9 4:00 AM - 8:00 AM (+00:00)',
- 'Jul 9 8:00 AM - 12:00 PM (+00:00)',
- 'Jul 9 12:00 PM - 4:00 PM (+00:00)',
- 'Jul 9 4:00 PM - 8:00 PM (+00:00)',
- 'Jul 9 8:00 PM - 12:00 AM (+00:00)',
- 'Jul 10 12:00 AM - 4:00 AM (+00:00)',
- ]);
- });
- // Datetime is shifted to localtime
- it('calculates 4h intervals', () => {
- const dates = getXAxisDates(TS_START, TS_END, false, '4h');
- expect(dates).toEqual([
- 'Jul 8 8:00 PM - 12:00 AM (-04:00)',
- 'Jul 9 12:00 AM - 4:00 AM (-04:00)',
- 'Jul 9 4:00 AM - 8:00 AM (-04:00)',
- 'Jul 9 8:00 AM - 12:00 PM (-04:00)',
- 'Jul 9 12:00 PM - 4:00 PM (-04:00)',
- 'Jul 9 4:00 PM - 8:00 PM (-04:00)',
- 'Jul 9 8:00 PM - 12:00 AM (-04:00)',
- ]);
- });
- // Datetime is shifted to localtime
- it('calculates 1h intervals', () => {
- const dates = getXAxisDates(TS_START, TS_END, false, '1h');
- expect(dates).toEqual([
- 'Jul 8 8:00 PM - 9:00 PM (-04:00)',
- 'Jul 8 9:00 PM - 10:00 PM (-04:00)',
- 'Jul 8 10:00 PM - 11:00 PM (-04:00)',
- 'Jul 8 11:00 PM - 12:00 AM (-04:00)',
- 'Jul 9 12:00 AM - 1:00 AM (-04:00)',
- 'Jul 9 1:00 AM - 2:00 AM (-04:00)',
- 'Jul 9 2:00 AM - 3:00 AM (-04:00)',
- 'Jul 9 3:00 AM - 4:00 AM (-04:00)',
- 'Jul 9 4:00 AM - 5:00 AM (-04:00)',
- 'Jul 9 5:00 AM - 6:00 AM (-04:00)',
- 'Jul 9 6:00 AM - 7:00 AM (-04:00)',
- 'Jul 9 7:00 AM - 8:00 AM (-04:00)',
- 'Jul 9 8:00 AM - 9:00 AM (-04:00)',
- 'Jul 9 9:00 AM - 10:00 AM (-04:00)',
- 'Jul 9 10:00 AM - 11:00 AM (-04:00)',
- 'Jul 9 11:00 AM - 12:00 PM (-04:00)',
- 'Jul 9 12:00 PM - 1:00 PM (-04:00)',
- 'Jul 9 1:00 PM - 2:00 PM (-04:00)',
- 'Jul 9 2:00 PM - 3:00 PM (-04:00)',
- 'Jul 9 3:00 PM - 4:00 PM (-04:00)',
- 'Jul 9 4:00 PM - 5:00 PM (-04:00)',
- 'Jul 9 5:00 PM - 6:00 PM (-04:00)',
- 'Jul 9 6:00 PM - 7:00 PM (-04:00)',
- 'Jul 9 7:00 PM - 8:00 PM (-04:00)',
- 'Jul 9 8:00 PM - 9:00 PM (-04:00)',
- ]);
- });
- it('handles invalid date strings', () => {
- const dates1 = getXAxisDates('', '');
- expect(dates1).toEqual([]);
- const dates2 = getXAxisDates('sentry', '2021-01-01');
- expect(dates2).toEqual([]);
- });
- });
|