mirror of
https://github.com/stablyai/orca.git
synced 2026-09-22 08:02:28 +00:00
120 lines
3.2 KiB
TypeScript
120 lines
3.2 KiB
TypeScript
import { describe, expect, it } from 'vitest'
|
|
import {
|
|
filterAvailableTaskProviders,
|
|
normalizeTaskProviderSettings,
|
|
normalizeVisibleTaskProviders,
|
|
restoreAvailableDefaultTaskProvider,
|
|
resolveVisibleTaskProvider
|
|
} from './task-providers'
|
|
|
|
describe('task providers', () => {
|
|
it('normalizes provider lists while preserving supported order', () => {
|
|
expect(normalizeVisibleTaskProviders(['gitlab', 'unknown', 'gitlab', 'linear'])).toEqual([
|
|
'gitlab',
|
|
'linear'
|
|
])
|
|
})
|
|
|
|
it('falls back to all providers when none are visible', () => {
|
|
expect(normalizeVisibleTaskProviders([])).toEqual(['github', 'gitlab', 'linear', 'jira'])
|
|
})
|
|
|
|
it('restores a valid saved default when provider settings drifted', () => {
|
|
expect(
|
|
normalizeTaskProviderSettings({
|
|
visibleTaskProviders: ['linear'],
|
|
defaultTaskSource: 'github'
|
|
})
|
|
).toEqual({
|
|
defaultTaskSource: 'github',
|
|
visibleTaskProviders: ['github', 'linear']
|
|
})
|
|
})
|
|
|
|
it('normalizes invalid saved defaults to the first visible provider', () => {
|
|
expect(
|
|
normalizeTaskProviderSettings({
|
|
visibleTaskProviders: ['gitlab'],
|
|
defaultTaskSource: 'bitbucket'
|
|
})
|
|
).toEqual({
|
|
defaultTaskSource: 'gitlab',
|
|
visibleTaskProviders: ['gitlab']
|
|
})
|
|
})
|
|
|
|
it('resolves hidden preferred providers to the first visible provider', () => {
|
|
expect(resolveVisibleTaskProvider('github', ['linear'])).toBe('linear')
|
|
})
|
|
|
|
it('filters runtime-unavailable providers without changing preference normalization', () => {
|
|
expect(
|
|
filterAvailableTaskProviders(['github', 'gitlab', 'linear'], {
|
|
gitlabInstalled: false,
|
|
linearConnected: true
|
|
})
|
|
).toEqual(['github', 'linear'])
|
|
})
|
|
|
|
it('keeps an available saved default visible when provider visibility drifted', () => {
|
|
expect(
|
|
restoreAvailableDefaultTaskProvider(
|
|
['linear'],
|
|
{
|
|
gitlabInstalled: false,
|
|
linearConnected: true
|
|
},
|
|
'github'
|
|
)
|
|
).toEqual(['github', 'linear'])
|
|
})
|
|
|
|
it('preserves intentionally narrowed providers when the saved default matches them', () => {
|
|
expect(
|
|
restoreAvailableDefaultTaskProvider(
|
|
['linear'],
|
|
{
|
|
gitlabInstalled: false,
|
|
linearConnected: true
|
|
},
|
|
'linear'
|
|
)
|
|
).toEqual(['linear'])
|
|
})
|
|
|
|
it('does not restore an unavailable saved default', () => {
|
|
expect(
|
|
restoreAvailableDefaultTaskProvider(
|
|
['linear'],
|
|
{
|
|
gitlabInstalled: false,
|
|
linearConnected: true
|
|
},
|
|
'gitlab'
|
|
)
|
|
).toEqual(['linear'])
|
|
})
|
|
|
|
it('ignores invalid saved defaults while restoring visible providers', () => {
|
|
expect(
|
|
restoreAvailableDefaultTaskProvider(
|
|
['gitlab'],
|
|
{
|
|
gitlabInstalled: false,
|
|
linearConnected: true
|
|
},
|
|
'bitbucket'
|
|
)
|
|
).toEqual(['github'])
|
|
})
|
|
|
|
it('falls back to GitHub when every preferred provider is unavailable', () => {
|
|
expect(
|
|
filterAvailableTaskProviders(['gitlab', 'linear'], {
|
|
gitlabInstalled: false,
|
|
linearConnected: false
|
|
})
|
|
).toEqual(['github'])
|
|
})
|
|
})
|