mirror of
https://github.com/hanzoai/sentinel.git
synced 2026-10-30 14:49:14 +00:00
170 lines
4.6 KiB
TypeScript
170 lines
4.6 KiB
TypeScript
import {ReleaseFixture} from 'sentry-fixture/release';
|
|
|
|
import {initializeOrg} from 'sentry-test/initializeOrg';
|
|
|
|
import {getReleaseBounds, getReleaseParams, searchReleaseVersion} from './index';
|
|
|
|
describe('releases/utils', () => {
|
|
describe('getReleaseBounds', () => {
|
|
it('returns start and end of a release', () => {
|
|
expect(getReleaseBounds(ReleaseFixture())).toEqual({
|
|
releaseStart: '2020-03-23T01:02:00Z',
|
|
releaseEnd: '2020-03-24T02:04:59Z',
|
|
type: 'normal',
|
|
});
|
|
});
|
|
|
|
it('higher last session takes precendence over last event', () => {
|
|
expect(
|
|
getReleaseBounds(
|
|
ReleaseFixture({
|
|
currentProjectMeta: {
|
|
sessionsUpperBound: '2020-03-24T03:04:55Z',
|
|
firstReleaseVersion: null,
|
|
lastReleaseVersion: null,
|
|
nextReleaseVersion: null,
|
|
prevReleaseVersion: null,
|
|
sessionsLowerBound: null,
|
|
},
|
|
})
|
|
)
|
|
).toEqual({
|
|
releaseStart: '2020-03-23T01:02:00Z',
|
|
releaseEnd: '2020-03-24T03:04:59Z',
|
|
type: 'normal',
|
|
});
|
|
});
|
|
|
|
it('there is no last session/event, it fallbacks to now', () => {
|
|
expect(getReleaseBounds(ReleaseFixture({lastEvent: undefined}))).toEqual({
|
|
releaseStart: '2020-03-23T01:02:00Z',
|
|
releaseEnd: '2017-10-17T02:41:59Z',
|
|
type: 'normal',
|
|
});
|
|
});
|
|
|
|
it('adds 1 minute to end if start and end are within same minute', () => {
|
|
expect(
|
|
getReleaseBounds(
|
|
ReleaseFixture({
|
|
dateCreated: '2020-03-23T01:02:30Z',
|
|
lastEvent: '2020-03-23T01:02:39Z',
|
|
})
|
|
)
|
|
).toEqual({
|
|
releaseStart: '2020-03-23T01:02:00Z',
|
|
releaseEnd: '2020-03-23T01:03:59Z',
|
|
type: 'normal',
|
|
});
|
|
});
|
|
|
|
it('clamps active releases lasting longer than 90 days', () => {
|
|
expect(
|
|
getReleaseBounds(
|
|
ReleaseFixture({
|
|
dateCreated: '2017-05-17T02:41:20Z',
|
|
lastEvent: '2017-10-12T02:41:20Z',
|
|
})
|
|
)
|
|
).toEqual({
|
|
releaseStart: '2017-07-19T02:41:20Z',
|
|
releaseEnd: '2017-10-12T02:41:59Z',
|
|
type: 'clamped',
|
|
});
|
|
});
|
|
|
|
it('defaults ancient releases to last 90 days', () => {
|
|
expect(
|
|
getReleaseBounds(
|
|
ReleaseFixture({
|
|
dateCreated: '2010-05-17T02:41:20Z',
|
|
lastEvent: '2011-10-17T02:41:20Z',
|
|
})
|
|
)
|
|
).toEqual({
|
|
releaseStart: '2017-07-19T02:41:20Z',
|
|
releaseEnd: '2017-10-17T02:41:20Z',
|
|
type: 'ancient',
|
|
});
|
|
});
|
|
|
|
it('handles no lastEvent for ancient releases', () => {
|
|
expect(
|
|
getReleaseBounds(
|
|
ReleaseFixture({
|
|
dateCreated: '2010-05-17T02:41:20Z',
|
|
lastEvent: undefined,
|
|
})
|
|
)
|
|
).toEqual({
|
|
releaseStart: '2017-07-19T02:41:20Z',
|
|
releaseEnd: '2017-10-17T02:41:20Z',
|
|
type: 'ancient',
|
|
});
|
|
});
|
|
});
|
|
|
|
describe('getReleaseParams', () => {
|
|
const {routerContext} = initializeOrg();
|
|
const releaseBounds = getReleaseBounds(ReleaseFixture());
|
|
|
|
it('returns params related to a release', () => {
|
|
const location = {
|
|
...routerContext.location,
|
|
query: {
|
|
pageStatsPeriod: '30d',
|
|
project: ['456'],
|
|
environment: ['prod'],
|
|
somethingBad: 'meh',
|
|
},
|
|
};
|
|
|
|
expect(
|
|
getReleaseParams({
|
|
location,
|
|
releaseBounds,
|
|
})
|
|
).toEqual({
|
|
statsPeriod: '30d',
|
|
project: ['456'],
|
|
environment: ['prod'],
|
|
});
|
|
});
|
|
|
|
it('returns release start/end if no other datetime is present', () => {
|
|
expect(
|
|
getReleaseParams({
|
|
location: {...routerContext.location, query: {}},
|
|
releaseBounds,
|
|
})
|
|
).toEqual({
|
|
start: '2020-03-23T01:02:00Z',
|
|
end: '2020-03-24T02:04:59Z',
|
|
});
|
|
});
|
|
|
|
it('returns correct start/end when zoomed in', () => {
|
|
expect(
|
|
getReleaseParams({
|
|
location: {
|
|
...routerContext.location,
|
|
query: {pageStart: '2021-03-23T01:02:30Z', pageEnd: '2022-03-23T01:02:30Z'},
|
|
},
|
|
releaseBounds,
|
|
})
|
|
).toEqual({
|
|
start: '2021-03-23T01:02:30.000',
|
|
end: '2022-03-23T01:02:30.000',
|
|
});
|
|
});
|
|
});
|
|
});
|
|
|
|
describe('searchReleaseVersion()', function () {
|
|
it('should escape quotes', function () {
|
|
expect(searchReleaseVersion('com.sentry.go_app@"1.0.0-chore"')).toBe(
|
|
'release:"com.sentry.go_app@\\"1.0.0-chore\\""'
|
|
);
|
|
});
|
|
});
|