mirror of
https://github.com/stablyai/orca.git
synced 2026-11-04 19:17:28 +00:00
51 lines
1.6 KiB
TypeScript
51 lines
1.6 KiB
TypeScript
import { describe, expect, it } from 'vitest'
|
|
import type { PRRefreshOutcome } from './pull-request-refresh-types'
|
|
import type { PRInfo } from './pull-request-types'
|
|
import { normalizeGitHubPRForBranchOutcome } from './pull-request-for-branch-outcome'
|
|
|
|
const PR: PRInfo = {
|
|
number: 42,
|
|
title: 'Feature',
|
|
state: 'merged',
|
|
url: 'https://github.com/acme/orca/pull/42',
|
|
checksStatus: 'success',
|
|
updatedAt: '2026-08-04T22:46:08Z',
|
|
mergeable: 'UNKNOWN'
|
|
}
|
|
|
|
describe('normalizeGitHubPRForBranchOutcome', () => {
|
|
it('preserves current classified outcomes', () => {
|
|
const outcome: PRRefreshOutcome = { kind: 'found', pr: PR, fetchedAt: 10 }
|
|
expect(normalizeGitHubPRForBranchOutcome(outcome, 20)).toBe(outcome)
|
|
})
|
|
|
|
it.each([
|
|
{ kind: 'no-pr' as const, fetchedAt: 10 },
|
|
{ kind: 'no-pr' as const, fetchedAt: 10, rejectedPRUrls: [PR.url] }
|
|
])('preserves no-PR responses from older and newer hosts', (outcome) => {
|
|
expect(normalizeGitHubPRForBranchOutcome(outcome, 20)).toEqual(outcome)
|
|
})
|
|
|
|
it('normalizes legacy PRInfo and null responses', () => {
|
|
expect(normalizeGitHubPRForBranchOutcome(PR, 20)).toEqual({
|
|
kind: 'found',
|
|
pr: PR,
|
|
fetchedAt: 20
|
|
})
|
|
expect(normalizeGitHubPRForBranchOutcome(null, 20)).toEqual({
|
|
kind: 'no-pr',
|
|
fetchedAt: 20
|
|
})
|
|
})
|
|
|
|
it('preserves classified upstream errors', () => {
|
|
const outcome: PRRefreshOutcome = {
|
|
kind: 'upstream-error',
|
|
errorType: 'network',
|
|
message: 'network unavailable',
|
|
fetchedAt: 10
|
|
}
|
|
expect(normalizeGitHubPRForBranchOutcome(outcome, 20)).toBe(outcome)
|
|
})
|
|
})
|