"""Unit tests for AgentProfile Pydantic model."""
import pytest
from pydantic import ValidationError
from navi.profiles.base import AgentProfile
class TestModelCoercion:
def test_model_string_to_list(self):
p = AgentProfile(
id="test",
name="Test",
description="desc",
system_prompt="sys",
enabled_tools=[],
model="gemma4:31b-cloud",
)
assert p.model == ["gemma4:31b-cloud"]
def test_model_list_passthrough(self):
p = AgentProfile(
id="test",
name="Test",
description="desc",
system_prompt="sys",
enabled_tools=[],
model=["a", "b"],
)
assert p.model == ["a", "b"]
def test_empty_model_defaults(self):
p = AgentProfile(
id="test",
name="Test",
description="desc",
system_prompt="sys",
enabled_tools=[],
model="",
)
assert p.model == ["gemma4:31b-cloud"]
class TestDefaults:
def test_default_flags(self):
p = AgentProfile(
id="test",
name="Test",
description="desc",
system_prompt="sys",
enabled_tools=[],
)
assert p.think_enabled is True
assert p.planning_enabled is False
assert p.planning_phase2_enabled is False
assert p.iteration_budget_enabled is True
assert p.anti_stall_enabled is True
assert p.anti_stall_threshold == 8
def test_max_iterations_default(self):
p = AgentProfile(
id="test",
name="Test",
description="desc",
system_prompt="sys",
enabled_tools=[],
)
assert p.max_iterations == 10
class TestExtraFields:
def test_extra_fields_allowed(self):
p = AgentProfile(
id="test",
name="Test",
description="desc",
system_prompt="sys",
enabled_tools=[],
custom_field="whatever",
)
assert p.model_dump()["custom_field"] == "whatever"