import {SessionUserCountByStatusByRelease} from 'sentry-fixture/sessions'; import {transformSessionsResponseToTable} from 'sentry/views/dashboards/widgetCard/transformSessionsResponseToTable'; describe('transformSessionsResponseToTable', function () { it('transforms sessions into table', () => { expect( transformSessionsResponseToTable(SessionUserCountByStatusByRelease(), [], []) ).toEqual({ data: [ { 'count_unique(user)': 1, id: '0', release: '1', 'session.status': 'crashed', 'sum(session)': 34, }, { 'count_unique(user)': 1, id: '1', release: '1', 'session.status': 'abnormal', 'sum(session)': 1, }, { 'count_unique(user)': 2, id: '2', release: '1', 'session.status': 'errored', 'sum(session)': 451, }, { 'count_unique(user)': 3, id: '3', release: '1', 'session.status': 'healthy', 'sum(session)': 5058, }, { 'count_unique(user)': 2, id: '4', release: '2', 'session.status': 'crashed', 'sum(session)': 35, }, { 'count_unique(user)': 1, id: '5', release: '2', 'session.status': 'abnormal', 'sum(session)': 1, }, { 'count_unique(user)': 1, id: '6', release: '2', 'session.status': 'errored', 'sum(session)': 452, }, { 'count_unique(user)': 10, id: '7', release: '2', 'session.status': 'healthy', 'sum(session)': 5059, }, ], meta: { 'count_unique(user)': 'integer', release: 'string', 'session.status': 'string', 'sum(session)': 'integer', }, }); }); it('adds derived metric fields', () => { expect( transformSessionsResponseToTable( SessionUserCountByStatusByRelease(), ['count_crashed(session)'], [] ) ).toEqual({ data: [ { 'count_crashed(session)': 34, 'count_unique(user)': 1, id: '0', release: '1', 'session.status': 'crashed', 'sum(session)': 34, }, { 'count_crashed(session)': 0, 'count_unique(user)': 1, id: '1', release: '1', 'session.status': 'abnormal', 'sum(session)': 1, }, { 'count_crashed(session)': 0, 'count_unique(user)': 2, id: '2', release: '1', 'session.status': 'errored', 'sum(session)': 451, }, { 'count_crashed(session)': 0, 'count_unique(user)': 3, id: '3', release: '1', 'session.status': 'healthy', 'sum(session)': 5058, }, { 'count_crashed(session)': 35, 'count_unique(user)': 2, id: '4', release: '2', 'session.status': 'crashed', 'sum(session)': 35, }, { 'count_crashed(session)': 0, 'count_unique(user)': 1, id: '5', release: '2', 'session.status': 'abnormal', 'sum(session)': 1, }, { 'count_crashed(session)': 0, 'count_unique(user)': 1, id: '6', release: '2', 'session.status': 'errored', 'sum(session)': 452, }, { 'count_crashed(session)': 0, 'count_unique(user)': 10, id: '7', release: '2', 'session.status': 'healthy', 'sum(session)': 5059, }, ], meta: { 'count_crashed(session)': 'integer', 'count_unique(user)': 'integer', release: 'string', 'session.status': 'string', 'sum(session)': 'integer', }, }); }); it('strips away injected fields', () => { expect( transformSessionsResponseToTable( SessionUserCountByStatusByRelease(), ['count_crashed(session)'], ['sum(session)'] ) ).toEqual({ data: [ { 'count_crashed(session)': 34, 'count_unique(user)': 1, id: '0', release: '1', 'session.status': 'crashed', }, { 'count_crashed(session)': 0, 'count_unique(user)': 1, id: '1', release: '1', 'session.status': 'abnormal', }, { 'count_crashed(session)': 0, 'count_unique(user)': 2, id: '2', release: '1', 'session.status': 'errored', }, { 'count_crashed(session)': 0, 'count_unique(user)': 3, id: '3', release: '1', 'session.status': 'healthy', }, { 'count_crashed(session)': 35, 'count_unique(user)': 2, id: '4', release: '2', 'session.status': 'crashed', }, { 'count_crashed(session)': 0, 'count_unique(user)': 1, id: '5', release: '2', 'session.status': 'abnormal', }, { 'count_crashed(session)': 0, 'count_unique(user)': 1, id: '6', release: '2', 'session.status': 'errored', }, { 'count_crashed(session)': 0, 'count_unique(user)': 10, id: '7', release: '2', 'session.status': 'healthy', }, ], meta: { 'count_crashed(session)': 'integer', 'count_unique(user)': 'integer', release: 'string', 'session.status': 'string', }, }); }); });