import { describe, expect, it } from 'vitest' import { validate } from '../validate.js' describe('update validate — spec parsing and defaults', () => { it('accepts an empty spec with full defaults', () => { const r = validate({}) expect(r.valid).toBe(true) expect(r.data).toEqual({ strategy: 'merge', push: false, dryRun: false }) expect(r.warnings).toEqual([]) }) it('accepts an explicit rebase strategy', () => { const r = validate({ strategy: 'rebase' }) expect(r.valid).toBe(true) expect(r.data?.strategy).toBe('rebase') }) it('rejects an unknown strategy', () => { const r = validate({ strategy: 'squash' }) expect(r.valid).toBe(false) expect(r.blockers.length).toBeGreaterThan(0) }) it('rejects a non-boolean push', () => { expect(validate({ push: 'yes' }).valid).toBe(false) }) it('warns (without blocking) when dryRun and push are combined', () => { const r = validate({ dryRun: true, push: true }) expect(r.valid).toBe(true) expect(r.warnings.some((w) => /push will be skipped/i.test(w))).toBe(true) }) it('rejects non-object specs via the parse-failure fallback', () => { expect(validate('x').valid).toBe(false) expect(validate(null).valid).toBe(false) expect(validate('x').blockers.length).toBeGreaterThan(0) }) })