import { describe, it, expect } from 'vitest';
import { detectVerbosityLevel } from '../../../src/events/conversations/ai_response.js';
import { createTestPlayer, createTestCharacter, createTestConversation } from '../../utils/conversationTestUtils.js';

describe('Context-Dependent Message Lengths', () => {
  const player = createTestPlayer();
  const character = createTestCharacter();

  it('should detect "quick" level for one-word player messages', () => {
    const convo = createTestConversation(character, {
      messages: [{ message: 'lol', sender: player.c.id }],
    });
    const result = detectVerbosityLevel(convo, character, player);
    expect(result.level).toBe('quick');
    expect(result.maxTokens).toBe(100);
  });

  it('should detect "major" level for breakup-related messages', () => {
    const convo = createTestConversation(character, {
      messages: [{ message: 'I think we should break up. This isnt working anymore.', sender: player.c.id }],
    });
    const result = detectVerbosityLevel(convo, character, player);
    expect(result.level).toBe('major');
    expect(result.maxTokens).toBe(2000);
  });

  it('should detect "emotional" level for deep questions', () => {
    const convo = createTestConversation(character, {
      messages: [{ message: 'How do you really feel about our relationship? I need to know the truth.', sender: player.c.id }],
    });
    const result = detectVerbosityLevel(convo, character, player);
    expect(['emotional', 'major']).toContain(result.level);
    expect(result.maxTokens).toBeGreaterThanOrEqual(1200);
  });

  it('should detect "casual" level for simple chat', () => {
    const convo = createTestConversation(character, {
      messages: [{ message: 'hey whats up', sender: player.c.id }],
    });
    const result = detectVerbosityLevel(convo, character, player);
    expect(result.level).toBe('casual');
    expect(result.maxTokens).toBe(300);
  });

  it('should detect "normal" level for engaged conversation', () => {
    const convo = createTestConversation(character, {
      messages: [{ message: 'I went to the park today and saw the most beautiful sunset. Made me think of you.', sender: player.c.id }],
    });
    const result = detectVerbosityLevel(convo, character, player);
    expect(result.level).toBe('normal');
    expect(result.maxTokens).toBe(600);
  });
});
