/**
 * Test DB fixture helpers.
 *
 * For unit tests (Tasks 1-2 scope): provides mock/stub helpers so tests can run
 * without a real MariaDB connection. Plan 02/03 will fill in integration-style
 * fixtures that hit the Docker MariaDB (DB_HOST=127.0.0.1 from the dev compose override).
 */

// Re-export vi for convenience in test files
export { vi } from 'vitest';

/**
 * Creates a minimal mock for the Drizzle `db` singleton.
 * Replace individual methods per test as needed.
 *
 * Plan 02 (auth) will extend this with a real test-schema fixture.
 * Plan 03 (broker) will extend with event-fixture helpers.
 */
export function createMockDb() {
  return {
    select: vi.fn().mockReturnThis(),
    from: vi.fn().mockReturnThis(),
    where: vi.fn().mockReturnThis(),
    limit: vi.fn().mockResolvedValue([]),
    insert: vi.fn().mockReturnThis(),
    values: vi.fn().mockReturnThis(),
    onDuplicateKeyUpdate: vi.fn().mockResolvedValue([{ id: 1 }]),
    $returningId: vi.fn().mockResolvedValue([{ id: 1 }]),
    execute: vi.fn().mockResolvedValue([]),
  };
}

/**
 * Sample VEVENT string for broker tests — a timed event (Plan 03).
 */
export const SAMPLE_VEVENT_TIMED = `BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//FamilySync//Test//EN
BEGIN:VEVENT
UID:test-timed-event-001@familysync
DTSTART:20260615T100000Z
DTEND:20260615T110000Z
SUMMARY:Test Timed Event
END:VEVENT
END:VCALENDAR`;

/**
 * Sample VEVENT string for broker tests — an all-day event (Plan 03).
 */
export const SAMPLE_VEVENT_ALLDAY = `BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//FamilySync//Test//EN
BEGIN:VEVENT
UID:test-allday-event-001@familysync
DTSTART;VALUE=DATE:20260615
DTEND;VALUE=DATE:20260616
SUMMARY:Test All-Day Event
END:VEVENT
END:VCALENDAR`;

/**
 * Sample VEVENT string — a timed recurring event (RRULE:FREQ=WEEKLY).
 * Used to test that sync sets hasRrule=true for recurring events.
 */
export const SAMPLE_VEVENT_RECURRING_TIMED = `BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//FamilySync//Test//EN
BEGIN:VEVENT
UID:test-recurring-timed-001@familysync
DTSTART:20240101T100000Z
RRULE:FREQ=WEEKLY;BYDAY=MO
SUMMARY:Weekly Monday Meeting
END:VEVENT
END:VCALENDAR`;

/**
 * Sample VEVENT string — an all-day recurring event (RRULE:FREQ=YEARLY).
 * Used to test that sync sets hasRrule=true for all-day recurring events,
 * and that the events route returns occurrences even when dtstartUtc is NULL.
 */
export const SAMPLE_VEVENT_RECURRING_ALLDAY = `BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//FamilySync//Test//EN
BEGIN:VEVENT
UID:test-recurring-allday-001@familysync
DTSTART;VALUE=DATE:20240615
RRULE:FREQ=YEARLY
SUMMARY:Annual Birthday
END:VEVENT
END:VCALENDAR`;
