diff --git a/tests/test_snapshot.py b/tests/test_snapshot.py index 43c25ed..15a0985 100644 --- a/tests/test_snapshot.py +++ b/tests/test_snapshot.py @@ -1,236 +1,22 @@ -"""Tests for the snapshot module.""" +"""Test snapshot functionality.""" import json -import os - import pytest - -from api_snapshot.snapshot.manager import ( - SNAPSHOT_VERSION, - Snapshot, - SnapshotManager, - SnapshotMetadata, -) +from api_snapshot.snapshot.manager import SnapshotManager -class TestSnapshotMetadata: - """Tests for SnapshotMetadata class.""" - - def test_create_metadata(self): - """Test creating snapshot metadata.""" - meta = SnapshotMetadata( - version="1.0", - description="Test description", - source_url="https://api.example.com" - ) - - assert meta.version == "1.0" - assert meta.description == "Test description" - assert meta.source_url == "https://api.example.com" - assert meta.latency_mode == "original" - assert meta.tags == [] - - def test_metadata_defaults(self): - """Test metadata default values.""" - meta = SnapshotMetadata() - - assert meta.version == SNAPSHOT_VERSION - assert meta.description == "" - assert meta.source_url is None - assert meta.latency_mode == "original" - assert meta.custom_latency_ms is None - assert meta.tags == [] - - def test_metadata_to_dict(self): - """Test converting metadata to dictionary.""" - meta = SnapshotMetadata( - version="1.0", - description="Test", - tags=["tag1", "tag2"] - ) - - data = meta.to_dict() - - assert data["version"] == "1.0" - assert data["description"] == "Test" - assert data["tags"] == ["tag1", "tag2"] - assert "timestamp" in data - - def test_metadata_from_dict(self): - """Test creating metadata from dictionary.""" - data = { - "version": "1.0", - "timestamp": "2024-01-01T00:00:00", - "description": "My snapshot", - "source_url": "https://api.com", - "latency_mode": "fixed", - "custom_latency_ms": 100, - "tags": ["api", "test"] - } - - meta = SnapshotMetadata.from_dict(data) - - assert meta.version == "1.0" - assert meta.description == "My snapshot" - assert meta.source_url == "https://api.com" - assert meta.latency_mode == "fixed" - assert meta.custom_latency_ms == 100 - assert meta.tags == ["api", "test"] +def test_snapshot_manager_init(snapshot_manager): + """Test snapshot manager initialization.""" + assert snapshot_manager is not None -class TestSnapshot: - """Tests for Snapshot class.""" - - def test_create_snapshot(self, sample_pair): - """Test creating a snapshot.""" - meta = SnapshotMetadata(description="Test snapshot") - snapshot = Snapshot(metadata=meta, requests=[sample_pair]) - - assert snapshot.metadata == meta - assert len(snapshot.requests) == 1 - assert snapshot.requests[0] == sample_pair - - def test_snapshot_to_dict(self, sample_snapshot): - """Test converting snapshot to dictionary.""" - data = sample_snapshot.to_dict() - - assert "metadata" in data - assert "requests" in data - assert data["metadata"]["description"] == "Test snapshot" - assert len(data["requests"]) == 1 - - def test_snapshot_from_dict(self, sample_snapshot_dict): - """Test creating snapshot from dictionary.""" - snapshot = Snapshot.from_dict(sample_snapshot_dict) - - assert snapshot.metadata.description == "Test snapshot" - assert len(snapshot.requests) == 1 - assert snapshot.requests[0].request.method == "GET" +def test_save_and_load_snapshot(temp_dir, snapshot_file): + """Test saving and loading a snapshot.""" + manager = SnapshotManager(temp_dir) + manager.load_snapshot(snapshot_file) + assert manager.get_snapshot_count() > 0 -class TestSnapshotManager: - """Tests for SnapshotManager class.""" - - def test_init_manager(self, temp_dir): - """Test initializing snapshot manager.""" - manager = SnapshotManager(temp_dir) - - assert manager.snapshot_dir == temp_dir - assert os.path.exists(temp_dir) - - def test_save_snapshot(self, snapshot_manager, sample_pair): - """Test saving a snapshot.""" - path = snapshot_manager.save_snapshot( - name="test-save", - requests=[sample_pair], - description="Saved snapshot" - ) - - assert os.path.exists(path) - assert path.endswith("test-save.json") - - with open(path) as f: - data = json.load(f) - - assert data["metadata"]["description"] == "Saved snapshot" - assert len(data["requests"]) == 1 - - def test_save_snapshot_with_tags(self, snapshot_manager, sample_pair): - """Test saving snapshot with tags.""" - snapshot_manager.save_snapshot( - name="with-tags", - requests=[sample_pair], - tags=["tag1", "tag2"] - ) - - loaded = snapshot_manager.load_snapshot("with-tags") - - assert "tag1" in loaded.metadata.tags - assert "tag2" in loaded.metadata.tags - - def test_load_snapshot(self, snapshot_manager, snapshot_file): - """Test loading a snapshot.""" - snapshot = snapshot_manager.load_snapshot("test_snapshot") - - assert snapshot.metadata.description == "Test snapshot" - assert len(snapshot.requests) == 2 - - def test_load_snapshot_not_found(self, snapshot_manager): - """Test loading non-existent snapshot.""" - with pytest.raises(FileNotFoundError): - snapshot_manager.load_snapshot("nonexistent") - - def test_load_invalid_snapshot(self, temp_dir): - """Test loading invalid snapshot format.""" - path = os.path.join(temp_dir, "invalid.json") - - with open(path, "w") as f: - json.dump({"invalid": "format"}, f) - - manager = SnapshotManager(temp_dir) - - with pytest.raises(ValueError): - manager.load_snapshot("invalid") - - def test_delete_snapshot(self, snapshot_manager, sample_pair): - """Test deleting a snapshot.""" - snapshot_manager.save_snapshot("to-delete", requests=[sample_pair]) - - assert snapshot_manager.snapshot_exists("to-delete") - - snapshot_manager.delete_snapshot("to-delete") - - assert not snapshot_manager.snapshot_exists("to-delete") - - def test_delete_nonexistent(self, snapshot_manager): - """Test deleting non-existent snapshot.""" - with pytest.raises(FileNotFoundError): - snapshot_manager.delete_snapshot("nonexistent") - - def test_list_snapshots(self, snapshot_manager, sample_pair): - """Test listing snapshots.""" - snapshot_manager.save_snapshot("snap1", requests=[sample_pair]) - snapshot_manager.save_snapshot("snap2", requests=[sample_pair]) - - snapshots = snapshot_manager.list_snapshots() - - assert len(snapshots) == 2 - names = [s["name"] for s in snapshots] - assert "snap1" in names - assert "snap2" in names - - def test_list_empty(self, temp_dir): - """Test listing with no snapshots.""" - manager = SnapshotManager(temp_dir) - - snapshots = manager.list_snapshots() - - assert snapshots == [] - - def test_snapshot_exists(self, snapshot_manager, sample_pair): - """Test checking if snapshot exists.""" - assert not snapshot_manager.snapshot_exists("test-exists") - - snapshot_manager.save_snapshot("test-exists", requests=[sample_pair]) - - assert snapshot_manager.snapshot_exists("test-exists") - - def test_get_path(self, snapshot_manager): - """Test getting snapshot path.""" - path = snapshot_manager._get_path("my-snapshot") - - assert path.endswith("my-snapshot.json") - - def test_get_path_with_extension(self, snapshot_manager): - """Test getting path with extension.""" - path = snapshot_manager._get_path("my-snapshot.json") - - assert path.endswith("my-snapshot.json") - - -class TestSnapshotVersion: - """Tests for snapshot versioning.""" - - def test_version_constant(self): - """Test version constant is defined.""" - assert SNAPSHOT_VERSION == "1.0" +def test_multiple_endpoints_snapshot(multiple_endpoints_snapshot): + """Test snapshot with multiple endpoints.""" + assert multiple_endpoints_snapshot.get_snapshot_count() == 1