from app.schemas.voice import VoiceCreate

def test_fictional_voice_schema_accepts_valid_voice():
    voice = VoiceCreate(
        voice_id="CVOICE-TAM-M-AD-CHE-TEL-A50-999",
        voice_name="TestVoice",
        display_name="Test Fictional Voice",
        target_language="TAM",
        native_language="TEL",
        native_influence=50,
        gender="M",
        age_group="AD",
        fictional=True,
        synthetic=True,
        real_person=False,
        voice_clone=False,
        celebrity_voice=False,
        public_figure_voice=False,
        voice_dna={"warmth": 80, "clarity": 90},
        personality={"calmness": 75},
    )
    assert voice.fictional is True
    assert voice.native_influence == 50

def test_invalid_voice_id_is_rejected():
    try:
        VoiceCreate(
            voice_id="VOICE-TAM-001",
            voice_name="Bad",
            display_name="Bad",
            target_language="TAM",
            native_language="TAM",
            gender="M",
            age_group="AD",
        )
        assert False, "Expected validation error"
    except Exception as exc:
        assert "voice_id" in str(exc)

def test_normalized_parameter_must_be_0_to_100():
    try:
        VoiceCreate(
            voice_id="CVOICE-TAM-M-AD-CHE-TAM-A00-999",
            voice_name="Bad",
            display_name="Bad",
            target_language="TAM",
            native_language="TAM",
            gender="M",
            age_group="AD",
            voice_dna={"warmth": 101},
        )
        assert False, "Expected validation error"
    except Exception as exc:
        assert "warmth" in str(exc)
