Files
renovate/lib/util/minimum-release-age.spec.ts

80 lines
2.4 KiB
TypeScript

import * as _dateUtil from './date.ts';
import { checkMinimumReleaseAge } from './minimum-release-age.ts';
import { toMs } from './pretty-time.ts';
import type { Timestamp } from './timestamp.ts';
vi.mock('./date.ts');
const dateUtil = vi.mocked(_dateUtil);
describe('util/minimum-release-age', () => {
describe('.checkMinimumReleaseAge()', () => {
it('is not pending if minimumReleaseAge is not set', () => {
const res = checkMinimumReleaseAge(
{},
'2021-01-01T00:00:00.000Z' as Timestamp,
);
expect(res).toEqual({
isPending: false,
minimumReleaseAgeMs: 0,
hasTimestamp: true,
});
});
it('is pending if the release is younger than minimumReleaseAge', () => {
dateUtil.getElapsedMs.mockReturnValueOnce(toMs('1 day') ?? 0);
const res = checkMinimumReleaseAge(
{ minimumReleaseAge: '3 days' },
'2021-01-01T00:00:00.000Z' as Timestamp,
);
expect(res).toEqual({
isPending: true,
minimumReleaseAgeMs: toMs('3 days'),
hasTimestamp: true,
});
});
it('is not pending if the release is older than minimumReleaseAge', () => {
dateUtil.getElapsedMs.mockReturnValueOnce(toMs('5 days') ?? 0);
const res = checkMinimumReleaseAge(
{ minimumReleaseAge: '3 days' },
'2021-01-01T00:00:00.000Z' as Timestamp,
);
expect(res).toEqual({
isPending: false,
minimumReleaseAgeMs: toMs('3 days'),
hasTimestamp: true,
});
});
it('is pending with a missing timestamp if minimumReleaseAgeBehaviour=timestamp-required', () => {
const res = checkMinimumReleaseAge(
{
minimumReleaseAge: '3 days',
minimumReleaseAgeBehaviour: 'timestamp-required',
},
undefined,
);
expect(res).toEqual({
isPending: true,
minimumReleaseAgeMs: toMs('3 days'),
hasTimestamp: false,
});
});
it('is not pending with a missing timestamp if minimumReleaseAgeBehaviour=timestamp-optional', () => {
const res = checkMinimumReleaseAge(
{
minimumReleaseAge: '3 days',
minimumReleaseAgeBehaviour: 'timestamp-optional',
},
undefined,
);
expect(res).toEqual({
isPending: false,
minimumReleaseAgeMs: toMs('3 days'),
hasTimestamp: false,
});
});
});
});