mirror of
https://github.com/bellingcat/auto-archiver.git
synced 2026-06-08 03:18:28 +03:00
71 lines
2.2 KiB
Python
71 lines
2.2 KiB
Python
"""
|
|
Tests for the CLIFeeder module
|
|
"""
|
|
|
|
import pytest
|
|
|
|
from auto_archiver.modules.cli_feeder.cli_feeder import CLIFeeder
|
|
from auto_archiver.core.consts import SetupError
|
|
from auto_archiver.core.metadata import Metadata
|
|
|
|
|
|
@pytest.fixture
|
|
def cli_feeder_instance():
|
|
"""Create a CLIFeeder instance with mocked config."""
|
|
|
|
def _create(urls):
|
|
feeder = CLIFeeder()
|
|
# Mock the config structure that cli_feeder expects
|
|
feeder.config = {"urls": urls}
|
|
feeder.name = "cli_feeder"
|
|
feeder.tmp_dir = "/tmp"
|
|
return feeder
|
|
|
|
return _create
|
|
|
|
|
|
class TestCLIFeeder:
|
|
"""Test the CLIFeeder functionality."""
|
|
|
|
def test_iter_yields_metadata_for_urls(self, cli_feeder_instance):
|
|
"""Test that iteration yields Metadata objects for each URL."""
|
|
urls = ["https://example.com/1", "https://example.com/2", "https://example.com/3"]
|
|
feeder = cli_feeder_instance(urls)
|
|
feeder.setup()
|
|
|
|
items = list(feeder)
|
|
|
|
assert len(items) == 3
|
|
assert all(isinstance(item, Metadata) for item in items)
|
|
assert items[0].get_url() == "https://example.com/1"
|
|
assert items[1].get_url() == "https://example.com/2"
|
|
assert items[2].get_url() == "https://example.com/3"
|
|
|
|
def test_iter_single_url(self, cli_feeder_instance):
|
|
"""Test iteration with a single URL."""
|
|
feeder = cli_feeder_instance(["https://example.com/single"])
|
|
feeder.setup()
|
|
|
|
items = list(feeder)
|
|
|
|
assert len(items) == 1
|
|
assert items[0].get_url() == "https://example.com/single"
|
|
|
|
def test_setup_raises_without_urls(self, cli_feeder_instance):
|
|
"""Test that setup raises SetupError when no URLs provided."""
|
|
feeder = cli_feeder_instance([])
|
|
|
|
with pytest.raises(SetupError) as exc_info:
|
|
feeder.setup()
|
|
|
|
assert "No URLs provided" in str(exc_info.value)
|
|
|
|
def test_setup_raises_with_none_urls(self, cli_feeder_instance):
|
|
"""Test that setup raises SetupError when urls is None."""
|
|
feeder = cli_feeder_instance(None)
|
|
|
|
with pytest.raises(SetupError) as exc_info:
|
|
feeder.setup()
|
|
|
|
assert "No URLs provided" in str(exc_info.value)
|