diff --git a/lib/config/presets/local/__snapshots__/index.spec.ts.snap b/lib/config/presets/local/__snapshots__/index.spec.ts.snap index c580f9c3ff40462d5ef593f179335e3e26f2d431..09f1a6658ba302fc99a1b8e69d2a3a8210356539 100644 --- a/lib/config/presets/local/__snapshots__/index.spec.ts.snap +++ b/lib/config/presets/local/__snapshots__/index.spec.ts.snap @@ -11,7 +11,11 @@ Array [ ] `; -exports[`config/presets/local/index getPreset() forwards to custom bitbucket-server 2`] = `undefined`; +exports[`config/presets/local/index getPreset() forwards to custom bitbucket-server 2`] = ` +Object { + "resolved": "preset", +} +`; exports[`config/presets/local/index getPreset() forwards to custom gitea 1`] = ` Array [ @@ -24,7 +28,11 @@ Array [ ] `; -exports[`config/presets/local/index getPreset() forwards to custom gitea 2`] = `undefined`; +exports[`config/presets/local/index getPreset() forwards to custom gitea 2`] = ` +Object { + "resolved": "preset", +} +`; exports[`config/presets/local/index getPreset() forwards to custom github 1`] = ` Array [ @@ -71,7 +79,11 @@ Array [ ] `; -exports[`config/presets/local/index getPreset() forwards to gitea 2`] = `undefined`; +exports[`config/presets/local/index getPreset() forwards to gitea 2`] = ` +Object { + "resolved": "preset", +} +`; exports[`config/presets/local/index getPreset() forwards to github 1`] = ` Array [ diff --git a/lib/config/presets/local/index.spec.ts b/lib/config/presets/local/index.spec.ts index 16aecc2c3fb6925572fa79878dbe37e1d5df5a20..6bc484566c2ebcbaa2fdd73f4b47d1a23f400aec 100644 --- a/lib/config/presets/local/index.spec.ts +++ b/lib/config/presets/local/index.spec.ts @@ -5,21 +5,24 @@ import * as _github from '../github'; import * as _gitlab from '../gitlab'; import * as local from '.'; -jest.mock('../gitlab'); -jest.mock('../github'); -jest.mock('../gitea'); jest.mock('../bitbucket-server'); +jest.mock('../gitea'); +jest.mock('../github'); +jest.mock('../gitlab'); -const gitlab = mocked(_gitlab); -const github = mocked(_github); -const gitea = mocked(_gitea); const bitbucketServer = mocked(_bitbucketServer); +const gitea = mocked(_gitea); +const github = mocked(_github); +const gitlab = mocked(_gitlab); describe(getName(__filename), () => { beforeEach(() => { jest.resetAllMocks(); - gitlab.getPresetFromEndpoint.mockResolvedValueOnce({ resolved: 'preset' }); - github.getPresetFromEndpoint.mockResolvedValueOnce({ resolved: 'preset' }); + const preset = { resolved: 'preset' }; + bitbucketServer.getPresetFromEndpoint.mockResolvedValueOnce(preset); + gitea.getPresetFromEndpoint.mockResolvedValueOnce(preset); + github.getPresetFromEndpoint.mockResolvedValueOnce(preset); + gitlab.getPresetFromEndpoint.mockResolvedValueOnce(preset); }); describe('getPreset()', () => { it('throws for unsupported platform', async () => { @@ -44,27 +47,42 @@ describe(getName(__filename), () => { }); }).rejects.toThrow(); }); - it('forwards to gitlab', async () => { + + it('forwards to custom bitbucket-server', async () => { const content = await local.getPreset({ packageName: 'some/repo', presetName: 'default', baseConfig: { - platform: 'GitLab', + platform: 'bitbucket-server', + endpoint: 'https://git.example.com', }, }); - expect(gitlab.getPresetFromEndpoint.mock.calls).toMatchSnapshot(); + expect( + bitbucketServer.getPresetFromEndpoint.mock.calls + ).toMatchSnapshot(); expect(content).toMatchSnapshot(); }); - it('forwards to custom gitlab', async () => { + + it('forwards to gitea', async () => { + const content = await local.getPreset({ + packageName: 'some/repo', + baseConfig: { + platform: 'gitea', + }, + }); + expect(gitea.getPresetFromEndpoint.mock.calls).toMatchSnapshot(); + expect(content).toMatchSnapshot(); + }); + it('forwards to custom gitea', async () => { const content = await local.getPreset({ packageName: 'some/repo', presetName: 'default', baseConfig: { - platform: 'gitlab', - endpoint: 'https://gitlab.example.com/api/v4', + platform: 'gitea', + endpoint: 'https://api.gitea.example.com', }, }); - expect(gitlab.getPresetFromEndpoint.mock.calls).toMatchSnapshot(); + expect(gitea.getPresetFromEndpoint.mock.calls).toMatchSnapshot(); expect(content).toMatchSnapshot(); }); @@ -91,41 +109,27 @@ describe(getName(__filename), () => { expect(content).toMatchSnapshot(); }); - it('forwards to gitea', async () => { - const content = await local.getPreset({ - packageName: 'some/repo', - baseConfig: { - platform: 'gitea', - }, - }); - expect(gitea.getPresetFromEndpoint.mock.calls).toMatchSnapshot(); - expect(content).toMatchSnapshot(); - }); - it('forwards to custom gitea', async () => { + it('forwards to gitlab', async () => { const content = await local.getPreset({ packageName: 'some/repo', presetName: 'default', baseConfig: { - platform: 'gitea', - endpoint: 'https://api.gitea.example.com', + platform: 'GitLab', }, }); - expect(gitea.getPresetFromEndpoint.mock.calls).toMatchSnapshot(); + expect(gitlab.getPresetFromEndpoint.mock.calls).toMatchSnapshot(); expect(content).toMatchSnapshot(); }); - - it('forwards to custom bitbucket-server', async () => { + it('forwards to custom gitlab', async () => { const content = await local.getPreset({ packageName: 'some/repo', presetName: 'default', baseConfig: { - platform: 'bitbucket-server', - endpoint: 'https://git.example.com', + platform: 'gitlab', + endpoint: 'https://gitlab.example.com/api/v4', }, }); - expect( - bitbucketServer.getPresetFromEndpoint.mock.calls - ).toMatchSnapshot(); + expect(gitlab.getPresetFromEndpoint.mock.calls).toMatchSnapshot(); expect(content).toMatchSnapshot(); }); }); diff --git a/lib/config/presets/local/index.ts b/lib/config/presets/local/index.ts index 4a06d9f2274cdb10930531eb42c28403835fc27e..c53ae3d1b98ccef251e253ca30c4530a34587288 100644 --- a/lib/config/presets/local/index.ts +++ b/lib/config/presets/local/index.ts @@ -10,6 +10,13 @@ import * as github from '../github'; import * as gitlab from '../gitlab'; import type { Preset, PresetConfig } from '../types'; +const resolvers = { + [PLATFORM_TYPE_BITBUCKET_SERVER]: bitbucketServer, + [PLATFORM_TYPE_GITEA]: gitea, + [PLATFORM_TYPE_GITHUB]: github, + [PLATFORM_TYPE_GITLAB]: gitlab, +}; + export function getPreset({ packageName: pkgName, presetName = 'default', @@ -20,38 +27,16 @@ export function getPreset({ if (!platform) { throw new Error(`Missing platform config for local preset.`); } - switch (platform.toLowerCase()) { - case PLATFORM_TYPE_GITLAB: - return gitlab.getPresetFromEndpoint( - pkgName, - presetName, - presetPath, - endpoint - ); - case PLATFORM_TYPE_GITHUB: - return github.getPresetFromEndpoint( - pkgName, - presetName, - presetPath, - endpoint - ); - case PLATFORM_TYPE_BITBUCKET_SERVER: - return bitbucketServer.getPresetFromEndpoint( - pkgName, - presetName, - presetPath, - endpoint - ); - case PLATFORM_TYPE_GITEA: - return gitea.getPresetFromEndpoint( - pkgName, - presetName, - presetPath, - endpoint - ); - default: - throw new Error( - `Unsupported platform '${baseConfig.platform}' for local preset.` - ); + const resolver = resolvers[platform.toLowerCase()]; + if (!resolver) { + throw new Error( + `Unsupported platform '${baseConfig.platform}' for local preset.` + ); } + return resolver.getPresetFromEndpoint( + pkgName, + presetName, + presetPath, + endpoint + ); }