mirror of
https://github.com/stablyai/orca.git
synced 2026-10-30 16:47:34 +00:00
Group isolated contract suites behind explicit entrypoints to reduce repeated Vitest startup, consolidate RPC coverage without changing cases, and remove duplicate script assertions and child processes.
152 lines
4.8 KiB
TypeScript
152 lines
4.8 KiB
TypeScript
import { describe, expect, it } from 'vitest'
|
|
import { eventSchemas } from './telemetry-events'
|
|
|
|
describe('setup script prompt schemas', () => {
|
|
it('accepts a bucketed candidate prompt exposure', () => {
|
|
const parsed = eventSchemas.setup_script_prompt_shown.safeParse({
|
|
mode: 'import_available',
|
|
provider: 'codex',
|
|
file_count_bucket: '1',
|
|
unsupported_field_count_bucket: '2-3',
|
|
has_shared_hooks: false
|
|
})
|
|
expect(parsed.success).toBe(true)
|
|
})
|
|
|
|
it('accepts configure prompt actions without a provider', () => {
|
|
const parsed = eventSchemas.setup_script_prompt_action.safeParse({
|
|
action: 'configure_clicked',
|
|
mode: 'configure_needed',
|
|
file_count_bucket: '0',
|
|
unsupported_field_count_bucket: '0',
|
|
has_shared_hooks: true
|
|
})
|
|
expect(parsed.success).toBe(true)
|
|
})
|
|
|
|
it.each([
|
|
'save_detected_setup_clicked',
|
|
'save_detected_setup_completed',
|
|
'save_detected_setup_failed'
|
|
])('accepts %s detected setup save actions', (action) => {
|
|
const parsed = eventSchemas.setup_script_prompt_action.safeParse({
|
|
action,
|
|
mode: 'import_available',
|
|
provider: 'package-manager',
|
|
file_count_bucket: '2-3',
|
|
unsupported_field_count_bucket: '0',
|
|
has_shared_hooks: false,
|
|
edited_before_save: true
|
|
})
|
|
expect(parsed.success).toBe(true)
|
|
})
|
|
|
|
it('rejects detected setup save actions without edit state', () => {
|
|
const parsed = eventSchemas.setup_script_prompt_action.safeParse({
|
|
action: 'save_detected_setup_completed',
|
|
mode: 'import_available',
|
|
provider: 'package-manager',
|
|
file_count_bucket: '2-3',
|
|
unsupported_field_count_bucket: '0',
|
|
has_shared_hooks: false
|
|
})
|
|
expect(parsed.success).toBe(false)
|
|
})
|
|
|
|
it('rejects detected setup save actions for non-package-manager imports', () => {
|
|
const parsed = eventSchemas.setup_script_prompt_action.safeParse({
|
|
action: 'save_detected_setup_completed',
|
|
mode: 'import_available',
|
|
provider: 'codex',
|
|
file_count_bucket: '1',
|
|
unsupported_field_count_bucket: '0',
|
|
has_shared_hooks: false,
|
|
edited_before_save: false
|
|
})
|
|
expect(parsed.success).toBe(false)
|
|
})
|
|
|
|
it('rejects unknown setup import providers', () => {
|
|
const parsed = eventSchemas.setup_script_prompt_shown.safeParse({
|
|
mode: 'import_available',
|
|
provider: 'made_up_tool',
|
|
file_count_bucket: '1',
|
|
unsupported_field_count_bucket: '0',
|
|
has_shared_hooks: false
|
|
})
|
|
expect(parsed.success).toBe(false)
|
|
})
|
|
|
|
it('rejects candidate prompt exposure without a provider', () => {
|
|
const parsed = eventSchemas.setup_script_prompt_shown.safeParse({
|
|
mode: 'import_available',
|
|
file_count_bucket: '1',
|
|
unsupported_field_count_bucket: '0',
|
|
has_shared_hooks: false
|
|
})
|
|
expect(parsed.success).toBe(false)
|
|
})
|
|
|
|
it('rejects configure prompt actions with a provider', () => {
|
|
const parsed = eventSchemas.setup_script_prompt_action.safeParse({
|
|
action: 'configure_clicked',
|
|
mode: 'configure_needed',
|
|
provider: 'codex',
|
|
file_count_bucket: '0',
|
|
unsupported_field_count_bucket: '0',
|
|
has_shared_hooks: false
|
|
})
|
|
expect(parsed.success).toBe(false)
|
|
})
|
|
|
|
it('rejects edit state on non-save actions', () => {
|
|
const parsed = eventSchemas.setup_script_prompt_action.safeParse({
|
|
action: 'configure_clicked',
|
|
mode: 'configure_needed',
|
|
file_count_bucket: '0',
|
|
unsupported_field_count_bucket: '0',
|
|
has_shared_hooks: false,
|
|
edited_before_save: true
|
|
})
|
|
expect(parsed.success).toBe(false)
|
|
})
|
|
|
|
it('rejects raw setup import details via .strict()', () => {
|
|
const parsed = eventSchemas.setup_script_prompt_action.safeParse({
|
|
action: 'import_completed',
|
|
mode: 'import_available',
|
|
provider: 'codex',
|
|
file_count_bucket: '1',
|
|
unsupported_field_count_bucket: '0',
|
|
has_shared_hooks: false,
|
|
files: ['.codex/environments/environment.toml'],
|
|
setup: 'npm install'
|
|
})
|
|
expect(parsed.success).toBe(false)
|
|
})
|
|
|
|
it('rejects unknown setup prompt actions', () => {
|
|
const parsed = eventSchemas.setup_script_prompt_action.safeParse({
|
|
action: 'save_detected_setup_cancelled',
|
|
mode: 'configure_needed',
|
|
file_count_bucket: '0',
|
|
unsupported_field_count_bucket: '0',
|
|
has_shared_hooks: false
|
|
})
|
|
expect(parsed.success).toBe(false)
|
|
})
|
|
|
|
it('rejects legacy generation setup action names', () => {
|
|
const parsed = eventSchemas.setup_script_prompt_action.safeParse({
|
|
action: 'generate_setup_clicked',
|
|
mode: 'import_available',
|
|
provider: 'package-manager',
|
|
file_count_bucket: '2-3',
|
|
unsupported_field_count_bucket: '0',
|
|
has_shared_hooks: false,
|
|
edited_before_save: false
|
|
})
|
|
expect(parsed.success).toBe(false)
|
|
})
|
|
})
|