mirror of
https://github.com/stablyai/orca.git
synced 2026-09-23 00:02:29 +00:00
58 lines
1.7 KiB
TypeScript
58 lines
1.7 KiB
TypeScript
import { describe, expect, it } from 'vitest'
|
|
import {
|
|
buildPullRequestFieldsPrompt,
|
|
parseGeneratedPullRequestFields,
|
|
type PullRequestDraftContext
|
|
} from './pull-request-generation'
|
|
|
|
const context: PullRequestDraftContext = {
|
|
branch: 'feature/pr-details',
|
|
base: 'main',
|
|
branchChangedByPreparation: false,
|
|
currentTitle: 'Feature pr details',
|
|
currentBody: '- Add form',
|
|
currentDraft: false,
|
|
commitSummary: '- feat: add generated PR details',
|
|
changeSummary: 'M\tsrc/file.ts',
|
|
patch: 'diff --git a/src/file.ts b/src/file.ts\n+export const value = true'
|
|
}
|
|
|
|
describe('buildPullRequestFieldsPrompt', () => {
|
|
it('asks for compact JSON and includes PR context', () => {
|
|
const prompt = buildPullRequestFieldsPrompt(context, 'Use conventional PR titles.')
|
|
|
|
expect(prompt).toContain('Return ONLY compact JSON')
|
|
expect(prompt).toContain('Head branch: feature/pr-details')
|
|
expect(prompt).toContain('Current base: main')
|
|
expect(prompt).toContain('Additional instructions from user:')
|
|
expect(prompt).toContain('Use conventional PR titles.')
|
|
})
|
|
})
|
|
|
|
describe('parseGeneratedPullRequestFields', () => {
|
|
it('parses fenced JSON output', () => {
|
|
const fields = parseGeneratedPullRequestFields(
|
|
'```json\n{"base":"main","title":"fix: add details.","body":"Summary","draft":true}\n```',
|
|
context
|
|
)
|
|
|
|
expect(fields).toEqual({
|
|
base: 'main',
|
|
title: 'fix: add details',
|
|
body: 'Summary',
|
|
draft: true
|
|
})
|
|
})
|
|
|
|
it('falls back for missing optional values', () => {
|
|
const fields = parseGeneratedPullRequestFields('{"title":""}', context)
|
|
|
|
expect(fields).toEqual({
|
|
base: 'main',
|
|
title: 'Feature pr details',
|
|
body: '- Add form',
|
|
draft: false
|
|
})
|
|
})
|
|
})
|