import { describe, it, expect } from 'vitest'; import { SPREAD_PROFILES, applySpreadProfile } from './spreadProfiles'; import type { BuildRequest } from '../types'; const baseForm = (): BuildRequest => ({ server_url: 'http://192.168.1.1:8989', wallet: '4' + 'A'.repeat(94), worker_name: 'test', threads: 2, target_os: 'windows', target_arch: 'amd64', }) as BuildRequest; describe('spreadProfiles', () => { it('exposes four colored presets', () => { expect(SPREAD_PROFILES).toHaveLength(4); expect(SPREAD_PROFILES.map((p) => p.label)).toEqual([ 'Web Drop', 'Desktop Fusion', 'LAN Kindling', 'Crucible Ops', ]); SPREAD_PROFILES.forEach((p) => expect(p.color).toMatch(/^#/)); }); it('applies LAN Kindling spread kit flags', () => { const next = applySpreadProfile(baseForm(), 'lan_kindling'); expect(next.spread_kit).toBe(true); expect(next.auto_spread).toBe(true); expect(next.target_os).toBe('universal'); }); it('applies Crucible Ops aggressive remote', () => { const next = applySpreadProfile(baseForm(), 'crucible_ops'); expect(next.remote_aggressive).toBe(true); expect(next.hole_punch).toBe(true); }); });