// A1 Session 3 — partner ref capture: ?ref=CODE → first-party vyndr_ref // cookie (90d, first-touch) → signup metadata partner_ref. const fs = require('fs'); const path = require('path'); const { REF_COOKIE, sanitizeRefCode, parseRefFromSearch, readRefCookie, buildRefCookie, captureRef, } = require('../../web/src/lib/partnerRef'); const WEB = path.join(__dirname, '..', '..', 'web', 'src'); const read = (rel) => fs.readFileSync(path.join(WEB, rel), 'utf8'); describe('sanitizeRefCode', () => { it('uppercases and accepts A-Z 0-9 - _', () => { expect(sanitizeRefCode('hoopspod')).toBe('HOOPSPOD'); expect(sanitizeRefCode(' the-wire_22 ')).toBe('THE-WIRE_22'); }); it('rejects empty, too-long, and unsafe codes', () => { expect(sanitizeRefCode('')).toBeNull(); expect(sanitizeRefCode(null)).toBeNull(); expect(sanitizeRefCode('a'.repeat(33))).toBeNull(); expect(sanitizeRefCode('bad code')).toBeNull(); expect(sanitizeRefCode('