forked from renovatebot/renovate
/
check-existing.spec.ts
61 lines (55 loc) · 2.03 KB
/
check-existing.spec.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
import { partial, platform } from '../../../../../test/util';
import { logger } from '../../../../logger';
import type { Pr } from '../../../../modules/platform';
import type { BranchConfig } from '../../../types';
import { prAlreadyExisted } from './check-existing';
describe('workers/repository/update/branch/check-existing', () => {
describe('prAlreadyExisted', () => {
let config: BranchConfig;
beforeEach(() => {
config = {
baseBranch: 'base-branch',
manager: 'some-manager',
upgrades: [],
branchName: 'some-branch',
prTitle: 'some-title',
} satisfies BranchConfig;
jest.resetAllMocks();
});
it('returns false if recreating closed PRs', async () => {
config.recreateClosed = true;
expect(await prAlreadyExisted(config)).toBeNull();
expect(platform.findPr).toHaveBeenCalledTimes(0);
});
it('returns false if check misses', async () => {
config.recreatedClosed = true;
expect(await prAlreadyExisted(config)).toBeNull();
expect(platform.findPr).toHaveBeenCalledTimes(1);
});
it('returns true if first check hits', async () => {
platform.findPr.mockResolvedValueOnce({ number: 12 } as never);
platform.getPr.mockResolvedValueOnce({
number: 12,
state: 'closed',
} as never);
expect(await prAlreadyExisted(config)).toEqual({ number: 12 });
expect(platform.findPr).toHaveBeenCalledTimes(1);
});
it('returns true if second check hits', async () => {
config.branchPrefixOld = 'deps/';
platform.findPr.mockResolvedValueOnce(null);
platform.findPr.mockResolvedValueOnce(partial<Pr>({ number: 12 }));
platform.getPr.mockResolvedValueOnce(
partial<Pr>({
number: 12,
state: 'closed',
})
);
expect(await prAlreadyExisted(config)).toEqual({ number: 12 });
expect(platform.findPr).toHaveBeenCalledTimes(2);
expect(logger.debug).toHaveBeenCalledWith(
`Found closed PR with current title`
);
});
});
});