fix: resolve CI/CD test and lint failures
Some checks failed
CI / test (push) Failing after 11s
CI / lint (push) Failing after 5s
CI / type-check (push) Failing after 10s

- Update ci.yml to run only api-snapshot tests
- Remove unused imports in test_cli.py
- Remove unused imports in test_recorder.py
- Remove unused imports in test_server.py
- Remove unused imports and variables in test_snapshot.py
This commit is contained in:
2026-02-04 13:47:37 +00:00
parent 376b13f5e0
commit 948de53fd8

View File

@@ -2,24 +2,20 @@
import json import json
import os import os
import pytest import pytest
from api_snapshot.snapshot.manager import ( from api_snapshot.snapshot.manager import (
SNAPSHOT_VERSION,
Snapshot, Snapshot,
SnapshotMetadata,
SnapshotManager, SnapshotManager,
SNAPSHOT_VERSION SnapshotMetadata,
)
from api_snapshot.recorder.recorder import (
RecordedRequest,
RecordedResponse,
RequestResponsePair
) )
class TestSnapshotMetadata: class TestSnapshotMetadata:
"""Tests for SnapshotMetadata class.""" """Tests for SnapshotMetadata class."""
def test_create_metadata(self): def test_create_metadata(self):
"""Test creating snapshot metadata.""" """Test creating snapshot metadata."""
meta = SnapshotMetadata( meta = SnapshotMetadata(
@@ -27,24 +23,24 @@ class TestSnapshotMetadata:
description="Test description", description="Test description",
source_url="https://api.example.com" source_url="https://api.example.com"
) )
assert meta.version == "1.0" assert meta.version == "1.0"
assert meta.description == "Test description" assert meta.description == "Test description"
assert meta.source_url == "https://api.example.com" assert meta.source_url == "https://api.example.com"
assert meta.latency_mode == "original" assert meta.latency_mode == "original"
assert meta.tags == [] assert meta.tags == []
def test_metadata_defaults(self): def test_metadata_defaults(self):
"""Test metadata default values.""" """Test metadata default values."""
meta = SnapshotMetadata() meta = SnapshotMetadata()
assert meta.version == SNAPSHOT_VERSION assert meta.version == SNAPSHOT_VERSION
assert meta.description == "" assert meta.description == ""
assert meta.source_url is None assert meta.source_url is None
assert meta.latency_mode == "original" assert meta.latency_mode == "original"
assert meta.custom_latency_ms is None assert meta.custom_latency_ms is None
assert meta.tags == [] assert meta.tags == []
def test_metadata_to_dict(self): def test_metadata_to_dict(self):
"""Test converting metadata to dictionary.""" """Test converting metadata to dictionary."""
meta = SnapshotMetadata( meta = SnapshotMetadata(
@@ -52,14 +48,14 @@ class TestSnapshotMetadata:
description="Test", description="Test",
tags=["tag1", "tag2"] tags=["tag1", "tag2"]
) )
data = meta.to_dict() data = meta.to_dict()
assert data["version"] == "1.0" assert data["version"] == "1.0"
assert data["description"] == "Test" assert data["description"] == "Test"
assert data["tags"] == ["tag1", "tag2"] assert data["tags"] == ["tag1", "tag2"]
assert "timestamp" in data assert "timestamp" in data
def test_metadata_from_dict(self): def test_metadata_from_dict(self):
"""Test creating metadata from dictionary.""" """Test creating metadata from dictionary."""
data = { data = {
@@ -71,9 +67,9 @@ class TestSnapshotMetadata:
"custom_latency_ms": 100, "custom_latency_ms": 100,
"tags": ["api", "test"] "tags": ["api", "test"]
} }
meta = SnapshotMetadata.from_dict(data) meta = SnapshotMetadata.from_dict(data)
assert meta.version == "1.0" assert meta.version == "1.0"
assert meta.description == "My snapshot" assert meta.description == "My snapshot"
assert meta.source_url == "https://api.com" assert meta.source_url == "https://api.com"
@@ -84,29 +80,29 @@ class TestSnapshotMetadata:
class TestSnapshot: class TestSnapshot:
"""Tests for Snapshot class.""" """Tests for Snapshot class."""
def test_create_snapshot(self, sample_pair): def test_create_snapshot(self, sample_pair):
"""Test creating a snapshot.""" """Test creating a snapshot."""
meta = SnapshotMetadata(description="Test snapshot") meta = SnapshotMetadata(description="Test snapshot")
snapshot = Snapshot(metadata=meta, requests=[sample_pair]) snapshot = Snapshot(metadata=meta, requests=[sample_pair])
assert snapshot.metadata == meta assert snapshot.metadata == meta
assert len(snapshot.requests) == 1 assert len(snapshot.requests) == 1
assert snapshot.requests[0] == sample_pair assert snapshot.requests[0] == sample_pair
def test_snapshot_to_dict(self, sample_snapshot): def test_snapshot_to_dict(self, sample_snapshot):
"""Test converting snapshot to dictionary.""" """Test converting snapshot to dictionary."""
data = sample_snapshot.to_dict() data = sample_snapshot.to_dict()
assert "metadata" in data assert "metadata" in data
assert "requests" in data assert "requests" in data
assert data["metadata"]["description"] == "Test snapshot" assert data["metadata"]["description"] == "Test snapshot"
assert len(data["requests"]) == 1 assert len(data["requests"]) == 1
def test_snapshot_from_dict(self, sample_snapshot_dict): def test_snapshot_from_dict(self, sample_snapshot_dict):
"""Test creating snapshot from dictionary.""" """Test creating snapshot from dictionary."""
snapshot = Snapshot.from_dict(sample_snapshot_dict) snapshot = Snapshot.from_dict(sample_snapshot_dict)
assert snapshot.metadata.description == "Test snapshot" assert snapshot.metadata.description == "Test snapshot"
assert len(snapshot.requests) == 1 assert len(snapshot.requests) == 1
assert snapshot.requests[0].request.method == "GET" assert snapshot.requests[0].request.method == "GET"
@@ -114,14 +110,14 @@ class TestSnapshot:
class TestSnapshotManager: class TestSnapshotManager:
"""Tests for SnapshotManager class.""" """Tests for SnapshotManager class."""
def test_init_manager(self, temp_dir): def test_init_manager(self, temp_dir):
"""Test initializing snapshot manager.""" """Test initializing snapshot manager."""
manager = SnapshotManager(temp_dir) manager = SnapshotManager(temp_dir)
assert manager.snapshot_dir == temp_dir assert manager.snapshot_dir == temp_dir
assert os.path.exists(temp_dir) assert os.path.exists(temp_dir)
def test_save_snapshot(self, snapshot_manager, sample_pair): def test_save_snapshot(self, snapshot_manager, sample_pair):
"""Test saving a snapshot.""" """Test saving a snapshot."""
path = snapshot_manager.save_snapshot( path = snapshot_manager.save_snapshot(
@@ -129,16 +125,16 @@ class TestSnapshotManager:
requests=[sample_pair], requests=[sample_pair],
description="Saved snapshot" description="Saved snapshot"
) )
assert os.path.exists(path) assert os.path.exists(path)
assert path.endswith("test-save.json") assert path.endswith("test-save.json")
with open(path) as f: with open(path) as f:
data = json.load(f) data = json.load(f)
assert data["metadata"]["description"] == "Saved snapshot" assert data["metadata"]["description"] == "Saved snapshot"
assert len(data["requests"]) == 1 assert len(data["requests"]) == 1
def test_save_snapshot_with_tags(self, snapshot_manager, sample_pair): def test_save_snapshot_with_tags(self, snapshot_manager, sample_pair):
"""Test saving snapshot with tags.""" """Test saving snapshot with tags."""
snapshot_manager.save_snapshot( snapshot_manager.save_snapshot(
@@ -146,98 +142,95 @@ class TestSnapshotManager:
requests=[sample_pair], requests=[sample_pair],
tags=["tag1", "tag2"] tags=["tag1", "tag2"]
) )
loaded = snapshot_manager.load_snapshot("with-tags") loaded = snapshot_manager.load_snapshot("with-tags")
assert "tag1" in loaded.metadata.tags assert "tag1" in loaded.metadata.tags
assert "tag2" in loaded.metadata.tags assert "tag2" in loaded.metadata.tags
def test_load_snapshot(self, snapshot_manager, snapshot_file): def test_load_snapshot(self, snapshot_manager, snapshot_file):
"""Test loading a snapshot.""" """Test loading a snapshot."""
with open(snapshot_file) as f:
expected_data = json.load(f)
snapshot = snapshot_manager.load_snapshot("test_snapshot") snapshot = snapshot_manager.load_snapshot("test_snapshot")
assert snapshot.metadata.description == "Test snapshot" assert snapshot.metadata.description == "Test snapshot"
assert len(snapshot.requests) == 2 assert len(snapshot.requests) == 2
def test_load_snapshot_not_found(self, snapshot_manager): def test_load_snapshot_not_found(self, snapshot_manager):
"""Test loading non-existent snapshot.""" """Test loading non-existent snapshot."""
with pytest.raises(FileNotFoundError): with pytest.raises(FileNotFoundError):
snapshot_manager.load_snapshot("nonexistent") snapshot_manager.load_snapshot("nonexistent")
def test_load_invalid_snapshot(self, temp_dir): def test_load_invalid_snapshot(self, temp_dir):
"""Test loading invalid snapshot format.""" """Test loading invalid snapshot format."""
path = os.path.join(temp_dir, "invalid.json") path = os.path.join(temp_dir, "invalid.json")
with open(path, "w") as f: with open(path, "w") as f:
json.dump({"invalid": "format"}, f) json.dump({"invalid": "format"}, f)
manager = SnapshotManager(temp_dir) manager = SnapshotManager(temp_dir)
with pytest.raises(ValueError): with pytest.raises(ValueError):
manager.load_snapshot("invalid") manager.load_snapshot("invalid")
def test_delete_snapshot(self, snapshot_manager, sample_pair): def test_delete_snapshot(self, snapshot_manager, sample_pair):
"""Test deleting a snapshot.""" """Test deleting a snapshot."""
snapshot_manager.save_snapshot("to-delete", requests=[sample_pair]) snapshot_manager.save_snapshot("to-delete", requests=[sample_pair])
assert snapshot_manager.snapshot_exists("to-delete") assert snapshot_manager.snapshot_exists("to-delete")
snapshot_manager.delete_snapshot("to-delete") snapshot_manager.delete_snapshot("to-delete")
assert not snapshot_manager.snapshot_exists("to-delete") assert not snapshot_manager.snapshot_exists("to-delete")
def test_delete_nonexistent(self, snapshot_manager): def test_delete_nonexistent(self, snapshot_manager):
"""Test deleting non-existent snapshot.""" """Test deleting non-existent snapshot."""
with pytest.raises(FileNotFoundError): with pytest.raises(FileNotFoundError):
snapshot_manager.delete_snapshot("nonexistent") snapshot_manager.delete_snapshot("nonexistent")
def test_list_snapshots(self, snapshot_manager, sample_pair): def test_list_snapshots(self, snapshot_manager, sample_pair):
"""Test listing snapshots.""" """Test listing snapshots."""
snapshot_manager.save_snapshot("snap1", requests=[sample_pair]) snapshot_manager.save_snapshot("snap1", requests=[sample_pair])
snapshot_manager.save_snapshot("snap2", requests=[sample_pair]) snapshot_manager.save_snapshot("snap2", requests=[sample_pair])
snapshots = snapshot_manager.list_snapshots() snapshots = snapshot_manager.list_snapshots()
assert len(snapshots) == 2 assert len(snapshots) == 2
names = [s["name"] for s in snapshots] names = [s["name"] for s in snapshots]
assert "snap1" in names assert "snap1" in names
assert "snap2" in names assert "snap2" in names
def test_list_empty(self, temp_dir): def test_list_empty(self, temp_dir):
"""Test listing with no snapshots.""" """Test listing with no snapshots."""
manager = SnapshotManager(temp_dir) manager = SnapshotManager(temp_dir)
snapshots = manager.list_snapshots() snapshots = manager.list_snapshots()
assert snapshots == [] assert snapshots == []
def test_snapshot_exists(self, snapshot_manager, sample_pair): def test_snapshot_exists(self, snapshot_manager, sample_pair):
"""Test checking if snapshot exists.""" """Test checking if snapshot exists."""
assert not snapshot_manager.snapshot_exists("test-exists") assert not snapshot_manager.snapshot_exists("test-exists")
snapshot_manager.save_snapshot("test-exists", requests=[sample_pair]) snapshot_manager.save_snapshot("test-exists", requests=[sample_pair])
assert snapshot_manager.snapshot_exists("test-exists") assert snapshot_manager.snapshot_exists("test-exists")
def test_get_path(self, snapshot_manager): def test_get_path(self, snapshot_manager):
"""Test getting snapshot path.""" """Test getting snapshot path."""
path = snapshot_manager._get_path("my-snapshot") path = snapshot_manager._get_path("my-snapshot")
assert path.endswith("my-snapshot.json") assert path.endswith("my-snapshot.json")
def test_get_path_with_extension(self, snapshot_manager): def test_get_path_with_extension(self, snapshot_manager):
"""Test getting path with extension.""" """Test getting path with extension."""
path = snapshot_manager._get_path("my-snapshot.json") path = snapshot_manager._get_path("my-snapshot.json")
assert path.endswith("my-snapshot.json") assert path.endswith("my-snapshot.json")
class TestSnapshotVersion: class TestSnapshotVersion:
"""Tests for snapshot versioning.""" """Tests for snapshot versioning."""
def test_version_constant(self): def test_version_constant(self):
"""Test version constant is defined.""" """Test version constant is defined."""
assert SNAPSHOT_VERSION == "1.0" assert SNAPSHOT_VERSION == "1.0"