Task 4.3: Verify queue API endpoints use key identifier
- Verified queue API endpoints already use 'serie_id' (key) as primary identifier - Updated test fixtures to use explicit key values (e.g., 'test-series-key') - Added test to verify queue items include serie_id (key) and serie_folder (metadata) - Fixed test_queue_items_have_required_fields to find correct item by ID - Added test_queue_item_uses_key_as_identifier for explicit key verification - Updated instructions.md to mark Task 4.3 as complete All 870 tests pass.
This commit is contained in:
@@ -45,10 +45,14 @@ async def auth_headers(client: AsyncClient):
|
||||
|
||||
@pytest.fixture
|
||||
def sample_download_request():
|
||||
"""Sample download request for testing."""
|
||||
"""Sample download request for testing.
|
||||
|
||||
Note: serie_id is the primary identifier (key) used for all lookups.
|
||||
serie_folder is metadata only used for filesystem operations.
|
||||
"""
|
||||
return {
|
||||
"serie_id": "test-series",
|
||||
"serie_folder": "Test Series (2024)",
|
||||
"serie_id": "test-series-key", # Provider key (primary identifier)
|
||||
"serie_folder": "Test Series (2024)", # Filesystem folder (metadata)
|
||||
"serie_name": "Test Series",
|
||||
"episodes": [
|
||||
{"season": 1, "episode": 1},
|
||||
@@ -101,6 +105,11 @@ class TestQueueDisplay:
|
||||
)
|
||||
assert add_response.status_code == 201
|
||||
|
||||
# Get the added item IDs from response
|
||||
add_data = add_response.json()
|
||||
added_ids = add_data.get("added_items", [])
|
||||
assert len(added_ids) > 0, "No items were added"
|
||||
|
||||
# Get queue status
|
||||
response = await client.get(
|
||||
"/api/queue/status",
|
||||
@@ -113,20 +122,83 @@ class TestQueueDisplay:
|
||||
pending = data["status"]["pending_queue"]
|
||||
|
||||
assert len(pending) > 0
|
||||
item = pending[0]
|
||||
|
||||
# Find the item we just added by ID
|
||||
item = next((i for i in pending if i["id"] in added_ids), None)
|
||||
assert item is not None, f"Could not find added item in queue. Added IDs: {added_ids}"
|
||||
|
||||
# Verify required fields for display
|
||||
assert "id" in item
|
||||
assert "serie_id" in item # Key - primary identifier
|
||||
assert "serie_folder" in item # Metadata for filesystem ops
|
||||
assert "serie_name" in item
|
||||
assert "episode" in item
|
||||
assert "priority" in item
|
||||
assert "added_at" in item
|
||||
|
||||
# Verify serie_id (key) matches what we sent
|
||||
assert item["serie_id"] == sample_download_request["serie_id"]
|
||||
|
||||
# Verify episode structure
|
||||
episode = item["episode"]
|
||||
assert "season" in episode
|
||||
assert "episode" in episode
|
||||
|
||||
@pytest.mark.asyncio
|
||||
async def test_queue_item_uses_key_as_identifier(
|
||||
self, client: AsyncClient, auth_headers: dict
|
||||
):
|
||||
"""Test that queue items use serie_id (key) as primary identifier.
|
||||
|
||||
Verifies that:
|
||||
- serie_id is the provider-assigned key (URL-safe identifier)
|
||||
- serie_folder is metadata only (not used for identification)
|
||||
- Both fields are present in queue item responses
|
||||
"""
|
||||
# Add an item with explicit key and folder
|
||||
request = {
|
||||
"serie_id": "my-test-anime-key", # Provider key (primary ID)
|
||||
"serie_folder": "My Test Anime (2024)", # Display name/folder
|
||||
"serie_name": "My Test Anime",
|
||||
"episodes": [{"season": 1, "episode": 1}],
|
||||
"priority": "normal"
|
||||
}
|
||||
|
||||
add_response = await client.post(
|
||||
"/api/queue/add",
|
||||
json=request,
|
||||
headers=auth_headers
|
||||
)
|
||||
assert add_response.status_code == 201
|
||||
|
||||
# Get queue status
|
||||
response = await client.get(
|
||||
"/api/queue/status",
|
||||
headers=auth_headers
|
||||
)
|
||||
assert response.status_code == 200
|
||||
|
||||
data = response.json()
|
||||
pending = data["status"]["pending_queue"]
|
||||
|
||||
# Find our item by key
|
||||
matching_items = [
|
||||
item for item in pending
|
||||
if item["serie_id"] == "my-test-anime-key"
|
||||
]
|
||||
assert len(matching_items) >= 1, "Item should be findable by key"
|
||||
|
||||
item = matching_items[0]
|
||||
|
||||
# Verify key is used as identifier
|
||||
assert item["serie_id"] == "my-test-anime-key"
|
||||
|
||||
# Verify folder is preserved as metadata
|
||||
assert item["serie_folder"] == "My Test Anime (2024)"
|
||||
|
||||
# Verify serie_name is also present
|
||||
assert item["serie_name"] == "My Test Anime"
|
||||
|
||||
|
||||
class TestQueueReordering:
|
||||
"""Test queue reordering functionality."""
|
||||
@@ -159,9 +231,9 @@ class TestQueueReordering:
|
||||
response = await client.post(
|
||||
"/api/queue/add",
|
||||
json={
|
||||
"serie_id": f"test-{i}",
|
||||
"serie_folder": f"Test Series {i} (2024)",
|
||||
"serie_name": f"Test Series {i}",
|
||||
"serie_id": f"reorder-test-key-{i}", # Key (primary ID)
|
||||
"serie_folder": f"Reorder Test {i} (2024)", # Metadata
|
||||
"serie_name": f"Reorder Test {i}",
|
||||
"episodes": [{"season": 1, "episode": i+1}],
|
||||
"priority": "normal"
|
||||
},
|
||||
@@ -414,7 +486,8 @@ class TestBulkOperations:
|
||||
add_response = await client.post(
|
||||
"/api/queue/add",
|
||||
json={
|
||||
"serie_id": f"bulk-test-{i}",
|
||||
"serie_id": f"bulk-test-key-{i}", # Key (primary ID)
|
||||
"serie_folder": f"Bulk Test {i} (2024)", # Metadata
|
||||
"serie_name": f"Bulk Test {i}",
|
||||
"episodes": [{"season": 1, "episode": i+1}],
|
||||
"priority": "normal"
|
||||
|
||||
Reference in New Issue
Block a user