mirror of
https://github.com/stablyai/orca.git
synced 2026-09-22 16:02:32 +00:00
52 lines
1.6 KiB
TypeScript
52 lines
1.6 KiB
TypeScript
import { describe, expect, it } from 'vitest'
|
|
import {
|
|
normalizeGitHubPRMergeMethodSettings,
|
|
resolveGitHubPRMergeMethods
|
|
} from './github-pr-merge-methods'
|
|
|
|
describe('GitHub PR merge methods', () => {
|
|
it('keeps the historical squash-first fallback when repository metadata is missing', () => {
|
|
expect(resolveGitHubPRMergeMethods()).toEqual({
|
|
defaultMethod: 'squash',
|
|
defaultLabel: 'Squash and merge',
|
|
methods: [
|
|
{ method: 'squash', label: 'Squash and merge' },
|
|
{ method: 'merge', label: 'Create merge commit' },
|
|
{ method: 'rebase', label: 'Rebase and merge' }
|
|
]
|
|
})
|
|
})
|
|
|
|
it('uses GitHub viewer defaults and hides methods disabled by the repository', () => {
|
|
const settings = normalizeGitHubPRMergeMethodSettings({
|
|
defaultMethod: 'REBASE',
|
|
mergeCommitAllowed: false,
|
|
rebaseMergeAllowed: true,
|
|
squashMergeAllowed: true
|
|
})
|
|
|
|
expect(resolveGitHubPRMergeMethods(settings)).toEqual({
|
|
defaultMethod: 'rebase',
|
|
defaultLabel: 'Rebase and merge',
|
|
methods: [
|
|
{ method: 'rebase', label: 'Rebase and merge' },
|
|
{ method: 'squash', label: 'Squash and merge' }
|
|
]
|
|
})
|
|
})
|
|
|
|
it('falls back to an allowed method when GitHub returns a disabled default', () => {
|
|
const settings = normalizeGitHubPRMergeMethodSettings({
|
|
defaultMethod: 'SQUASH',
|
|
mergeCommitAllowed: true,
|
|
rebaseMergeAllowed: false,
|
|
squashMergeAllowed: false
|
|
})
|
|
|
|
expect(settings?.defaultMethod).toBe('merge')
|
|
expect(resolveGitHubPRMergeMethods(settings).methods).toEqual([
|
|
{ method: 'merge', label: 'Create merge commit' }
|
|
])
|
|
})
|
|
})
|