|
@@ -1,3 +1,6 @@
|
|
|
+import type {TagValue} from 'sentry/types';
|
|
|
+import {mergeAndSortTagValues} from 'sentry/views/issueDetails/utils';
|
|
|
+
|
|
|
import {getTabs} from './utils';
|
|
|
|
|
|
describe('getTabs', () => {
|
|
@@ -17,4 +20,139 @@ describe('getTabs', () => {
|
|
|
['is:reprocessing', expect.objectContaining({name: 'Reprocessing'})],
|
|
|
]);
|
|
|
});
|
|
|
+
|
|
|
+ it('merges and sorts tagValues by count correctly', () => {
|
|
|
+ const defaultTagValueFields = {
|
|
|
+ email: '',
|
|
|
+ id: '',
|
|
|
+ name: '',
|
|
|
+ username: '',
|
|
|
+ ip_address: '',
|
|
|
+ };
|
|
|
+ const tagValues1: TagValue[] = [
|
|
|
+ {
|
|
|
+ value: 'a',
|
|
|
+ count: 1,
|
|
|
+ lastSeen: '2021-01-01T00:00:00',
|
|
|
+ firstSeen: '2021-01-01T00:00:00',
|
|
|
+ ...defaultTagValueFields,
|
|
|
+ },
|
|
|
+ {
|
|
|
+ value: 'b',
|
|
|
+ count: 1,
|
|
|
+ lastSeen: '2021-01-02T00:00:00',
|
|
|
+ firstSeen: '2021-01-02T00:00:00',
|
|
|
+ ...defaultTagValueFields,
|
|
|
+ },
|
|
|
+ ];
|
|
|
+
|
|
|
+ const tagValues2: TagValue[] = [
|
|
|
+ {
|
|
|
+ value: 'a',
|
|
|
+ count: 1,
|
|
|
+ lastSeen: '2021-01-01T00:00:00',
|
|
|
+ firstSeen: '2021-01-01T00:00:00',
|
|
|
+ ...defaultTagValueFields,
|
|
|
+ },
|
|
|
+ {
|
|
|
+ value: 'c',
|
|
|
+ count: 3,
|
|
|
+ lastSeen: '2021-01-03T00:00:00',
|
|
|
+ firstSeen: '2021-01-03T00:00:00',
|
|
|
+ ...defaultTagValueFields,
|
|
|
+ },
|
|
|
+ ];
|
|
|
+ const sortByCount = mergeAndSortTagValues(tagValues1, tagValues2, 'count');
|
|
|
+ expect(sortByCount).toEqual([
|
|
|
+ {
|
|
|
+ value: 'c',
|
|
|
+ count: 3,
|
|
|
+ lastSeen: '2021-01-03T00:00:00',
|
|
|
+ firstSeen: '2021-01-03T00:00:00',
|
|
|
+ ...defaultTagValueFields,
|
|
|
+ },
|
|
|
+ {
|
|
|
+ value: 'a',
|
|
|
+ count: 2,
|
|
|
+ lastSeen: '2021-01-01T00:00:00',
|
|
|
+ firstSeen: '2021-01-01T00:00:00',
|
|
|
+ ...defaultTagValueFields,
|
|
|
+ },
|
|
|
+ {
|
|
|
+ value: 'b',
|
|
|
+ count: 1,
|
|
|
+ lastSeen: '2021-01-02T00:00:00',
|
|
|
+ firstSeen: '2021-01-02T00:00:00',
|
|
|
+ ...defaultTagValueFields,
|
|
|
+ },
|
|
|
+ ]);
|
|
|
+ });
|
|
|
+
|
|
|
+ it('merges and sorts tagValues by lastSeen correctly', () => {
|
|
|
+ const defaultTagValueFields = {
|
|
|
+ email: '',
|
|
|
+ id: '',
|
|
|
+ name: '',
|
|
|
+ username: '',
|
|
|
+ ip_address: '',
|
|
|
+ };
|
|
|
+ const tagValues1: TagValue[] = [
|
|
|
+ {
|
|
|
+ value: 'a',
|
|
|
+ count: 1,
|
|
|
+ lastSeen: '2021-01-01T00:00:00',
|
|
|
+ firstSeen: '2021-01-01T00:00:00',
|
|
|
+ ...defaultTagValueFields,
|
|
|
+ },
|
|
|
+ {
|
|
|
+ value: 'b',
|
|
|
+ count: 1,
|
|
|
+ lastSeen: '2021-01-02T00:00:00',
|
|
|
+ firstSeen: '2021-01-02T00:00:00',
|
|
|
+ ...defaultTagValueFields,
|
|
|
+ },
|
|
|
+ ];
|
|
|
+
|
|
|
+ const tagValues2: TagValue[] = [
|
|
|
+ {
|
|
|
+ value: 'a',
|
|
|
+ count: 1,
|
|
|
+ lastSeen: '2021-01-01T00:00:00',
|
|
|
+ firstSeen: '2021-01-01T00:00:00',
|
|
|
+ ...defaultTagValueFields,
|
|
|
+ },
|
|
|
+ {
|
|
|
+ value: 'c',
|
|
|
+ count: 3,
|
|
|
+ lastSeen: '2021-01-03T00:00:00',
|
|
|
+ firstSeen: '2021-01-03T00:00:00',
|
|
|
+ ...defaultTagValueFields,
|
|
|
+ },
|
|
|
+ ];
|
|
|
+
|
|
|
+ const sortByLastSeen = mergeAndSortTagValues(tagValues1, tagValues2, 'lastSeen');
|
|
|
+ expect(sortByLastSeen).toEqual([
|
|
|
+ {
|
|
|
+ value: 'c',
|
|
|
+ count: 3,
|
|
|
+ lastSeen: '2021-01-03T00:00:00',
|
|
|
+ firstSeen: '2021-01-03T00:00:00',
|
|
|
+ ...defaultTagValueFields,
|
|
|
+ },
|
|
|
+ {
|
|
|
+ value: 'b',
|
|
|
+ count: 1,
|
|
|
+ lastSeen: '2021-01-02T00:00:00',
|
|
|
+ firstSeen: '2021-01-02T00:00:00',
|
|
|
+ ...defaultTagValueFields,
|
|
|
+ },
|
|
|
+ {
|
|
|
+ value: 'a',
|
|
|
+ count: 2,
|
|
|
+ lastSeen: '2021-01-01T00:00:00',
|
|
|
+ firstSeen: '2021-01-01T00:00:00',
|
|
|
+ ...defaultTagValueFields,
|
|
|
+ },
|
|
|
+ ]);
|
|
|
+ });
|
|
|
});
|