mirror of
https://github.com/renovatebot/renovate.git
synced 2025-01-12 15:06:27 +00:00
06d8c27043
Co-authored-by: Michael Kriese <michael.kriese@visualon.de>
71 lines
2.8 KiB
TypeScript
71 lines
2.8 KiB
TypeScript
import { defaultConfig, git, platform } from '../../../test/util';
|
|
import { GlobalConfig } from '../../config/global';
|
|
import type { RenovateConfig } from '../../config/types';
|
|
import { BranchStatus } from '../../types';
|
|
import { tryBranchAutomerge } from './automerge';
|
|
|
|
jest.mock('../../util/git');
|
|
|
|
describe('workers/branch/automerge', () => {
|
|
describe('tryBranchAutomerge', () => {
|
|
let config: RenovateConfig;
|
|
beforeEach(() => {
|
|
config = {
|
|
...defaultConfig,
|
|
};
|
|
GlobalConfig.reset();
|
|
});
|
|
it('returns false if not configured for automerge', async () => {
|
|
config.automerge = false;
|
|
expect(await tryBranchAutomerge(config)).toBe('no automerge');
|
|
});
|
|
it('returns false if automergeType is pr', async () => {
|
|
config.automerge = true;
|
|
config.automergeType = 'pr';
|
|
expect(await tryBranchAutomerge(config)).toBe('no automerge');
|
|
});
|
|
it('returns false if branch status is not success', async () => {
|
|
config.automerge = true;
|
|
config.automergeType = 'branch';
|
|
platform.getBranchStatus.mockResolvedValueOnce(BranchStatus.yellow);
|
|
expect(await tryBranchAutomerge(config)).toBe('no automerge');
|
|
});
|
|
it('returns branch status error if branch status is failure', async () => {
|
|
config.automerge = true;
|
|
config.automergeType = 'branch';
|
|
platform.getBranchStatus.mockResolvedValueOnce(BranchStatus.red);
|
|
expect(await tryBranchAutomerge(config)).toBe('branch status error');
|
|
});
|
|
it('returns false if PR exists', async () => {
|
|
platform.getBranchPr.mockResolvedValueOnce({} as never);
|
|
config.automerge = true;
|
|
config.automergeType = 'branch';
|
|
platform.getBranchStatus.mockResolvedValueOnce(BranchStatus.green);
|
|
expect(await tryBranchAutomerge(config)).toBe(
|
|
'automerge aborted - PR exists'
|
|
);
|
|
});
|
|
it('returns false if automerge fails', async () => {
|
|
config.automerge = true;
|
|
config.automergeType = 'branch';
|
|
platform.getBranchStatus.mockResolvedValueOnce(BranchStatus.green);
|
|
git.mergeBranch.mockImplementationOnce(() => {
|
|
throw new Error('merge error');
|
|
});
|
|
expect(await tryBranchAutomerge(config)).toBe('failed');
|
|
});
|
|
it('returns true if automerge succeeds', async () => {
|
|
config.automerge = true;
|
|
config.automergeType = 'branch';
|
|
platform.getBranchStatus.mockResolvedValueOnce(BranchStatus.green);
|
|
expect(await tryBranchAutomerge(config)).toBe('automerged');
|
|
});
|
|
it('returns true if automerge succeeds (dry-run)', async () => {
|
|
config.automerge = true;
|
|
config.automergeType = 'branch';
|
|
GlobalConfig.set({ dryRun: true });
|
|
platform.getBranchStatus.mockResolvedValueOnce(BranchStatus.green);
|
|
expect(await tryBranchAutomerge(config)).toBe('automerged');
|
|
});
|
|
});
|
|
});
|