Files
orca/src/main/worktree-create-base.test.ts
T
Rod BoevandJinjing 7e1f9e55f2 fix(worktrees): fall back from stale default base refs (#7398)
* fix(worktrees): fall back from stale default base refs (#7312)

* docs(worktrees): explain base fallback policy

* fix(worktrees): harden stale base fallback edge cases

---------

Co-authored-by: Jinjing <6427696+AmethystLiang@users.noreply.github.com>
2026-07-04 21:31:51 -07:00

54 lines
1.7 KiB
TypeScript

import { describe, expect, it, vi } from 'vitest'
import { resolveWorktreeCreateBase } from './worktree-create-base'
describe('resolveWorktreeCreateBase', () => {
it('falls back from a stale persisted base to the detected default', async () => {
const resolveDefaultBaseRef = vi.fn().mockResolvedValue('origin/main')
const isBaseUsable = vi.fn().mockResolvedValue(false)
await expect(
resolveWorktreeCreateBase({
repoWorktreeBaseRef: 'origin/master',
resolveDefaultBaseRef,
isBaseUsable
})
).resolves.toBe('origin/main')
expect(resolveDefaultBaseRef).toHaveBeenCalledTimes(1)
expect(isBaseUsable).toHaveBeenCalledWith('origin/master')
})
it('returns an explicit base without probing defaults or usability', async () => {
const resolveDefaultBaseRef = vi.fn()
const isBaseUsable = vi.fn()
await expect(
resolveWorktreeCreateBase({
requestedBaseBranch: 'origin/master',
repoWorktreeBaseRef: 'origin/main',
resolveDefaultBaseRef,
isBaseUsable
})
).resolves.toBe('origin/master')
expect(resolveDefaultBaseRef).not.toHaveBeenCalled()
expect(isBaseUsable).not.toHaveBeenCalled()
})
it('keeps a usable persisted base when it is still valid', async () => {
const resolveDefaultBaseRef = vi.fn().mockResolvedValue('origin/main')
const isBaseUsable = vi.fn().mockResolvedValue(true)
await expect(
resolveWorktreeCreateBase({
repoWorktreeBaseRef: 'origin/master',
resolveDefaultBaseRef,
isBaseUsable
})
).resolves.toBe('origin/master')
expect(resolveDefaultBaseRef).toHaveBeenCalledTimes(1)
expect(isBaseUsable).toHaveBeenCalledWith('origin/master')
})
})