mirror of
https://github.com/hanzoai/sentinel.git
synced 2026-10-30 14:49:14 +00:00
98 lines
2.9 KiB
TypeScript
98 lines
2.9 KiB
TypeScript
import {UserFixture} from 'sentry-fixture/user';
|
|
|
|
import type {EventViewOptions} from 'sentry/utils/discover/eventView';
|
|
import EventView from 'sentry/utils/discover/eventView';
|
|
import {createRuleFromEventView} from 'sentry/views/alerts/rules/metric/constants';
|
|
import {Dataset, EventTypes} from 'sentry/views/alerts/rules/metric/types';
|
|
|
|
describe('createRuleFromEventView()', () => {
|
|
const commonEventViewProps: EventViewOptions = {
|
|
createdBy: UserFixture(),
|
|
id: '',
|
|
name: '',
|
|
start: '',
|
|
end: '',
|
|
environment: [],
|
|
project: [],
|
|
fields: [],
|
|
query: '',
|
|
topEvents: undefined,
|
|
display: undefined,
|
|
sorts: [],
|
|
team: [],
|
|
statsPeriod: '14d',
|
|
};
|
|
|
|
it('sets transaction dataset from event.type:transaction', () => {
|
|
const eventView = new EventView({
|
|
...commonEventViewProps,
|
|
query: 'title:"nothing" event.type:transaction',
|
|
});
|
|
|
|
const rule = createRuleFromEventView(eventView);
|
|
expect(rule.dataset).toBe(Dataset.TRANSACTIONS);
|
|
});
|
|
it('sets error dataset from event.type:error', () => {
|
|
const eventView = new EventView({
|
|
...commonEventViewProps,
|
|
query: 'title:"nothing" event.type:error',
|
|
});
|
|
|
|
const rule = createRuleFromEventView(eventView);
|
|
expect(rule.dataset).toBe(Dataset.ERRORS);
|
|
expect(rule.eventTypes).toEqual([EventTypes.ERROR]);
|
|
});
|
|
it('removes event.type from query', () => {
|
|
const eventView = new EventView({
|
|
...commonEventViewProps,
|
|
query: 'title:"nothing" event.type:error',
|
|
});
|
|
|
|
const rule = createRuleFromEventView(eventView);
|
|
expect(rule.query).toBe('title:"nothing"');
|
|
});
|
|
it('gets environment from EventView', () => {
|
|
const eventView = new EventView({
|
|
...commonEventViewProps,
|
|
environment: ['beta'],
|
|
});
|
|
|
|
const rule = createRuleFromEventView(eventView);
|
|
expect(rule.environment).toBe('beta');
|
|
});
|
|
it('gets aggregate from EventView.yAxis', () => {
|
|
const eventView = new EventView({
|
|
...commonEventViewProps,
|
|
yAxis: 'count_unique(user)',
|
|
});
|
|
|
|
const rule = createRuleFromEventView(eventView);
|
|
expect(rule.aggregate).toBe(eventView.yAxis);
|
|
});
|
|
it('gets dataset and eventtypes from query', () => {
|
|
const eventView = new EventView({
|
|
...commonEventViewProps,
|
|
query: 'event.type:error or event.type:default something',
|
|
});
|
|
|
|
const rule = createRuleFromEventView(eventView);
|
|
expect(rule.dataset).toBe(Dataset.ERRORS);
|
|
expect(rule.eventTypes).toEqual([EventTypes.ERROR, EventTypes.DEFAULT]);
|
|
});
|
|
it('allows pXX transaction querys', () => {
|
|
const eventView = EventView.fromSavedQuery({
|
|
id: undefined,
|
|
name: '',
|
|
dateCreated: '',
|
|
dateUpdated: '',
|
|
version: 1,
|
|
query: 'event.type:transaction',
|
|
yAxis: ['p95()'],
|
|
fields: ['p95()'],
|
|
});
|
|
|
|
const rule = createRuleFromEventView(eventView);
|
|
expect(rule.aggregate).toBe('p95(transaction.duration)');
|
|
});
|
|
});
|