import { describe, it, expect } from 'vitest';

/**
 * Reviewer name fallback chain test
 * Tests the same pattern used in:
 *   - entries/[id]/review/route.ts
 *   - insights/[id]/review/route.ts
 *   - entries/[id]/report/route.ts
 */

function resolveReviewerName(userData: Record<string, unknown> | undefined): string {
  return (userData?.name as string) ?? (userData?.displayName as string) ?? 'Unknown';
}

describe('resolveReviewerName fallback chain', () => {
  it('should return name when name field exists', () => {
    expect(resolveReviewerName({ name: '전종혁', displayName: 'Jonghyuk Jeon' })).toBe('전종혁');
  });

  it('should fallback to displayName when name is missing', () => {
    expect(resolveReviewerName({ displayName: 'Jonghyuk Jeon' })).toBe('Jonghyuk Jeon');
  });

  it('should fallback to displayName when name is null', () => {
    expect(resolveReviewerName({ name: null, displayName: 'Jonghyuk Jeon' })).toBe('Jonghyuk Jeon');
  });

  it('should return Unknown when both name and displayName are missing', () => {
    expect(resolveReviewerName({})).toBe('Unknown');
  });

  it('should return Unknown when userData is undefined', () => {
    expect(resolveReviewerName(undefined)).toBe('Unknown');
  });
});
