import { describe, it, expect } from 'vitest' import { formatBrunoJson, formatCollectionBru } from '../../src/formatter/collection.js' import type { OpenCollectionRoot } from '../../src/types.js' const minimal: OpenCollectionRoot = { info: { name: 'My API' }, } describe('formatBrunoJson', () => { it('produces valid JSON with required fields', () => { const out = formatBrunoJson(minimal) const parsed = JSON.parse(out) expect(parsed.version).toBe('1') expect(parsed.name).toBe('My API') expect(parsed.type).toBe('collection') expect(Array.isArray(parsed.ignore)).toBe(true) }) it('uses extensions.bruno.ignore if present', () => { const root: OpenCollectionRoot = { info: { name: 'Test' }, extensions: { bruno: { ignore: ['dist', 'node_modules'] } }, } const out = formatBrunoJson(root) const parsed = JSON.parse(out) expect(parsed.ignore).toContain('dist') }) it('includes proxy when present', () => { const root: OpenCollectionRoot = { info: { name: 'Test' }, config: { proxy: { protocol: 'http', hostname: 'proxy.example.com', port: '8080', }, }, } const out = formatBrunoJson(root) const parsed = JSON.parse(out) expect(parsed.proxy).toBeDefined() expect(parsed.proxy.hostname).toBe('proxy.example.com') }) }) describe('formatCollectionBru', () => { it('returns empty string for collection with no request defaults', () => { const out = formatCollectionBru(minimal) expect(out.trim()).toBe('') }) it('emits auth and header blocks when present', () => { const root: OpenCollectionRoot = { info: { name: 'Test' }, request: { auth: { type: 'bearer', bearer: { token: '{{token}}' } }, headers: [{ name: 'X-Custom', value: 'val' }], }, } const out = formatCollectionBru(root) expect(out).toContain('auth {') expect(out).toContain('mode: bearer') expect(out).toContain('auth:bearer {') expect(out).toContain('headers {') expect(out).toContain('X-Custom: val') }) })