65 lines
2.1 KiB
TypeScript
65 lines
2.1 KiB
TypeScript
import { describe, expect, it, vi } from 'vitest'
|
|
import { resolveWorktreeAddBaseRef } from './worktree-base-ref'
|
|
|
|
describe('resolveWorktreeAddBaseRef', () => {
|
|
it('leaves fully qualified refs unchanged', async () => {
|
|
const refExists = vi.fn()
|
|
|
|
await expect(resolveWorktreeAddBaseRef('refs/heads/main', refExists)).resolves.toBe(
|
|
'refs/heads/main'
|
|
)
|
|
|
|
expect(refExists).not.toHaveBeenCalled()
|
|
})
|
|
|
|
it('leaves provider review refs unchanged', async () => {
|
|
const refExists = vi.fn()
|
|
|
|
await expect(resolveWorktreeAddBaseRef('refs/pull/123/head', refExists)).resolves.toBe(
|
|
'refs/pull/123/head'
|
|
)
|
|
await expect(
|
|
resolveWorktreeAddBaseRef('refs/merge-requests/456/head', refExists)
|
|
).resolves.toBe('refs/merge-requests/456/head')
|
|
|
|
expect(refExists).not.toHaveBeenCalled()
|
|
})
|
|
|
|
it('qualifies a bare local branch name', async () => {
|
|
const refExists = vi.fn(async (ref: string) => ref === 'refs/heads/main')
|
|
|
|
await expect(resolveWorktreeAddBaseRef('main', refExists)).resolves.toBe('refs/heads/main')
|
|
|
|
expect(refExists).toHaveBeenCalledWith('refs/heads/main')
|
|
})
|
|
|
|
it('prefers a remote-tracking ref for remote-display names', async () => {
|
|
const refExists = vi.fn(async (ref: string) => ref === 'refs/remotes/origin/main')
|
|
|
|
await expect(resolveWorktreeAddBaseRef('origin/main', refExists)).resolves.toBe(
|
|
'refs/remotes/origin/main'
|
|
)
|
|
|
|
expect(refExists).toHaveBeenCalledWith('refs/remotes/origin/main')
|
|
})
|
|
|
|
it('qualifies a slash-containing local branch when no matching remote ref exists', async () => {
|
|
const refExists = vi.fn(async (ref: string) => ref === 'refs/heads/release/main')
|
|
|
|
await expect(resolveWorktreeAddBaseRef('release/main', refExists)).resolves.toBe(
|
|
'refs/heads/release/main'
|
|
)
|
|
|
|
expect(refExists.mock.calls.map((call) => call[0])).toEqual([
|
|
'refs/remotes/release/main',
|
|
'refs/heads/release/main'
|
|
])
|
|
})
|
|
|
|
it('keeps unresolvable revisions untouched', async () => {
|
|
const refExists = vi.fn(async () => false)
|
|
|
|
await expect(resolveWorktreeAddBaseRef('abc1234', refExists)).resolves.toBe('abc1234')
|
|
})
|
|
})
|