123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189 |
- import {
- canIncludePreviousPeriod,
- getDiffInMinutes,
- getInterval,
- getSeriesApiInterval,
- lightenHexToRgb,
- processTableResults,
- } from 'sentry/components/charts/utils';
- describe('Chart Utils', function () {
- describe('getInterval()', function () {
- describe('with high fidelity', function () {
- it('greater than 24 hours', function () {
- expect(getInterval({period: '25h'}, 'high')).toBe('30m');
- });
- it('less than 30 minutes', function () {
- expect(getInterval({period: '20m'}, 'high')).toBe('1m');
- });
- it('between 30 minutes and 24 hours', function () {
- expect(getInterval({period: '12h'}, 'high')).toBe('5m');
- });
- it('more than 14 days', function () {
- expect(getInterval({period: '14d'}, 'high')).toBe('30m');
- });
- it('more than 30 days', function () {
- expect(getInterval({period: '30d'}, 'high')).toBe('1h');
- });
- it('more than 60 days', function () {
- expect(getInterval({period: '90d'}, 'high')).toBe('4h');
- });
- });
- describe('with medium fidelity', function () {
- it('greater than 24 hours', function () {
- expect(getInterval({period: '25h'})).toBe('1h');
- expect(getInterval({period: '25h'}, 'medium')).toBe('1h');
- });
- it('less than 30 minutes', function () {
- expect(getInterval({period: '20m'})).toBe('5m');
- expect(getInterval({period: '20m'}, 'medium')).toBe('5m');
- });
- it('between 30 minutes and 24 hours', function () {
- expect(getInterval({period: '12h'})).toBe('15m');
- expect(getInterval({period: '12h'}, 'medium')).toBe('15m');
- });
- it('more than 14 days', function () {
- expect(getInterval({period: '14d'})).toBe('1h');
- expect(getInterval({period: '14d'}, 'medium')).toBe('1h');
- });
- it('more than 30 days', function () {
- expect(getInterval({period: '30d'})).toBe('4h');
- expect(getInterval({period: '30d'}, 'medium')).toBe('4h');
- });
- it('more than 90 days', function () {
- expect(getInterval({period: '90d'})).toBe('1d');
- expect(getInterval({period: '90d'}, 'medium')).toBe('1d');
- });
- });
- describe('with low fidelity', function () {
- it('greater than 24 hours', function () {
- expect(getInterval({period: '25h'}, 'low')).toBe('6h');
- });
- it('less than 30 minutes', function () {
- expect(getInterval({period: '20m'}, 'low')).toBe('10m');
- });
- it('between 30 minutes and 24 hours', function () {
- expect(getInterval({period: '12h'}, 'low')).toBe('1h');
- });
- it('more than 14 days', function () {
- expect(getInterval({period: '14d'}, 'low')).toBe('12h');
- });
- it('more than 30 days', function () {
- expect(getInterval({period: '30d'}, 'low')).toBe('1d');
- });
- it('more than 90 days', function () {
- expect(getInterval({period: '90d'}, 'low')).toBe('2d');
- });
- });
- });
- describe('getUsageInterval', function () {
- it('calculates intervals for a period', function () {
- expect(getSeriesApiInterval({period: '90d'})).toBe('1d');
- expect(getSeriesApiInterval({period: '60d'})).toBe('1d');
- expect(getSeriesApiInterval({period: '59d'})).toBe('4h');
- expect(getSeriesApiInterval({period: '30d'})).toBe('4h');
- expect(getSeriesApiInterval({period: '29d'})).toBe('1h');
- expect(getSeriesApiInterval({period: '7h'})).toBe('1h');
- expect(getSeriesApiInterval({period: '6h'})).toBe('1h');
- expect(getSeriesApiInterval({period: '1h'})).toBe('1h');
- });
- });
- describe('getDiffInMinutes()', function () {
- describe('with period string', function () {
- it('can parse a period string in seconds', function () {
- expect(getDiffInMinutes({period: '30s'})).toBe(0.5);
- });
- it('can parse a period string in minutes', function () {
- expect(getDiffInMinutes({period: '15m'})).toBe(15);
- });
- it('can parse a period string in hours', function () {
- expect(getDiffInMinutes({period: '1h'})).toBe(60);
- });
- it('can parse a period string in days', function () {
- expect(getDiffInMinutes({period: '5d'})).toBe(7200);
- });
- it('can parse a period string in weeks', function () {
- expect(getDiffInMinutes({period: '1w'})).toBe(10080);
- });
- });
- // This uses moment so we probably don't need to test it too extensively
- describe('with absolute dates', function () {});
- });
- describe('canIncludePreviousPeriod()', function () {
- it('does not include if `includePrevious` is false', function () {
- expect(canIncludePreviousPeriod(false, '7d')).toBe(false);
- });
- it('is true if period is less than or equal to 45 days', function () {
- expect(canIncludePreviousPeriod(true, '45d')).toBe(true);
- });
- it('is false if period is greater than 45d', function () {
- expect(canIncludePreviousPeriod(true, '46d')).toBe(false);
- });
- it('returns value of `includePrevious` if no period', function () {
- expect(canIncludePreviousPeriod(true)).toBe(true);
- expect(canIncludePreviousPeriod(false)).toBe(false);
- });
- });
- describe('lightenHexToRgb', function () {
- it('converts hex to rgb and lightens values', function () {
- expect(lightenHexToRgb(['#2f2936', '#f0f0f0'])).toEqual([
- 'rgb(77, 71, 84)',
- 'rgb(255, 255, 255)',
- ]);
- });
- });
- describe('processTableResults', function () {
- it('transforms TableDataWithTitle array to chartable data', function () {
- const tableData = [
- {
- data: [
- {
- 'geo.country_code': 'PE',
- count: 9215,
- },
- {
- 'geo.country_code': 'VI',
- count: 1,
- },
- ],
- meta: {
- 'geo.country_code': 'string',
- count: 'integer',
- },
- title: 'Country',
- },
- ];
- const result = {
- title: 'Country',
- data: [
- {
- name: 'PE',
- value: 9215,
- },
- {
- name: 'VI',
- value: 1,
- },
- ],
- };
- expect(processTableResults(tableData)).toEqual(result);
- });
- });
- });
|