/
config.spec.ts
94 lines (83 loc) · 3.46 KB
/
config.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
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
import { RenovateConfig, getConfig } from '../../../../../test/util';
import { GlobalConfig } from '../../../../config/global';
import * as presets from '../../../../config/presets/local';
import { PRESET_DEP_NOT_FOUND } from '../../../../config/presets/util';
import { getOnboardingConfig, getOnboardingConfigContents } from './config';
jest.mock('../../../../config/presets/local');
const mockedPresets = presets as jest.Mocked<typeof presets>;
describe('workers/repository/onboarding/branch/config', () => {
let config: RenovateConfig;
beforeAll(() => {
GlobalConfig.set({
localDir: '',
platform: 'github',
});
});
beforeEach(() => {
config = getConfig();
config.platform = 'github';
config.repository = 'some/repo';
});
describe('getOnboardingConfigContents', () => {
it('returns the JSON stringified onboarding config', async () => {
mockedPresets.getPreset.mockResolvedValueOnce({ enabled: true });
const contents = await getOnboardingConfigContents(config, '');
expect(mockedPresets.getPreset).toHaveBeenCalledTimes(1);
expect(contents).toEqual(
'{\n' +
' "$schema": "https://docs.renovatebot.com/renovate-schema.json",\n' +
' "extends": [\n' +
' "local>some/renovate-config"\n' +
' ]\n' +
'}\n'
);
});
});
describe('getOnboardingConfig', () => {
it('handles finding an organization preset', async () => {
mockedPresets.getPreset.mockResolvedValueOnce({ enabled: true });
const onboardingConfig = await getOnboardingConfig(config);
expect(mockedPresets.getPreset).toHaveBeenCalledTimes(1);
expect(onboardingConfig).toEqual({
$schema: 'https://docs.renovatebot.com/renovate-schema.json',
extends: ['local>some/renovate-config'],
});
});
it('handles finding an organization dot platform preset', async () => {
mockedPresets.getPreset.mockRejectedValueOnce(
new Error(PRESET_DEP_NOT_FOUND)
);
mockedPresets.getPreset.mockResolvedValueOnce({ enabled: true });
const onboardingConfig = await getOnboardingConfig(config);
expect(mockedPresets.getPreset).toHaveBeenCalledTimes(2);
expect(onboardingConfig).toEqual({
$schema: 'https://docs.renovatebot.com/renovate-schema.json',
extends: ['local>some/.github:renovate-config'],
});
});
it('handles not finding an organization preset', async () => {
mockedPresets.getPreset.mockRejectedValue(
new Error(PRESET_DEP_NOT_FOUND)
);
const onboardingConfig = await getOnboardingConfig(config);
expect(mockedPresets.getPreset).toHaveBeenCalledTimes(2);
expect(onboardingConfig).toEqual(config.onboardingConfig);
});
it('ignores an unknown error', async () => {
mockedPresets.getPreset.mockRejectedValue(
new Error('unknown error for test')
);
const onboardingConfig = await getOnboardingConfig(config);
expect(mockedPresets.getPreset).toHaveBeenCalledTimes(2);
expect(onboardingConfig).toEqual(config.onboardingConfig);
});
it('ignores unsupported platform', async () => {
mockedPresets.getPreset.mockRejectedValue(
new Error(`Unsupported platform 'dummy' for local preset.`)
);
const onboardingConfig = await getOnboardingConfig(config);
expect(mockedPresets.getPreset).toHaveBeenCalledTimes(2);
expect(onboardingConfig).toEqual(config.onboardingConfig);
});
});
});