54 lines
1.7 KiB
TypeScript
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')
|
|
})
|
|
})
|