import pytest
import tarzi
@pytest.fixture
def config():
return tarzi.Config()
@pytest.fixture
def sample_config():
return """
[fetcher]
timeout = 30
user_agent = "Test Agent"
format = "html"
proxy = "http://proxy.example.com:8080"
[search]
engine = "brave"
"""
@pytest.mark.unit
class TestConfig:
def test_config_creation(self, config):
assert isinstance(config, tarzi.Config)
assert str(config) == "Tarzi configuration"
assert repr(config) == "Config()"
def test_config_from_str(self, sample_config):
config = tarzi.Config.from_str(sample_config)
assert isinstance(config, tarzi.Config)
def test_config_from_str_invalid(self):
with pytest.raises(RuntimeError, match="Failed to parse config"):
tarzi.Config.from_str("invalid toml content")
def test_config_load(self):
config = tarzi.Config.load()
assert isinstance(config, tarzi.Config)
@pytest.mark.unit
class TestConfigIntegration:
def test_config_with_components(self, sample_config):
config = tarzi.Config.from_str(sample_config)
converter = tarzi.Converter.from_config(config)
assert isinstance(converter, tarzi.Converter)
fetcher = tarzi.WebFetcher.from_config(config)
assert isinstance(fetcher, tarzi.WebFetcher)
engine = tarzi.SearchEngine.from_config(config)
assert isinstance(engine, tarzi.SearchEngine)