Initial commit of mtgonline project
This commit is contained in:
@@ -0,0 +1,162 @@
|
||||
"""
|
||||
Tests for deck management endpoints.
|
||||
"""
|
||||
import pytest
|
||||
from httpx import AsyncClient
|
||||
from sqlalchemy.ext.asyncio import AsyncSession
|
||||
|
||||
from app.models.models import DecklistFile, DecklistFolder
|
||||
from app.core.security import hash_password
|
||||
|
||||
|
||||
class TestDeckManagement:
|
||||
"""Test deck management endpoints."""
|
||||
|
||||
@pytest.mark.asyncio
|
||||
async def test_create_deck(self, client: AsyncClient, auth_headers: dict):
|
||||
"""Test creating a new deck."""
|
||||
response = await client.post(
|
||||
"/api/v1/decks/",
|
||||
json={
|
||||
"name": "Test Deck",
|
||||
"content": "4 Lightning Bolt\n2 Searing Blaze",
|
||||
"format": "plain",
|
||||
},
|
||||
headers=auth_headers,
|
||||
)
|
||||
assert response.status_code == 200
|
||||
data = response.json()
|
||||
assert data["name"] == "Test Deck"
|
||||
assert data["format"] == "plain"
|
||||
|
||||
@pytest.mark.asyncio
|
||||
async def test_list_decks(self, client: AsyncClient, auth_headers: dict):
|
||||
"""Test listing decks."""
|
||||
# Create a deck first
|
||||
await client.post(
|
||||
"/api/v1/decks/",
|
||||
json={
|
||||
"name": "List Test Deck",
|
||||
"content": "4 Lightning Bolt",
|
||||
"format": "plain",
|
||||
},
|
||||
headers=auth_headers,
|
||||
)
|
||||
|
||||
# List decks
|
||||
response = await client.get("/api/v1/decks/", headers=auth_headers)
|
||||
assert response.status_code == 200
|
||||
data = response.json()
|
||||
assert isinstance(data, list)
|
||||
assert len(data) > 0
|
||||
|
||||
@pytest.mark.asyncio
|
||||
async def test_get_deck(self, client: AsyncClient, auth_headers: dict):
|
||||
"""Test getting a specific deck."""
|
||||
# Create a deck first
|
||||
create_response = await client.post(
|
||||
"/api/v1/decks/",
|
||||
json={
|
||||
"name": "Get Test Deck",
|
||||
"content": "4 Lightning Bolt",
|
||||
"format": "plain",
|
||||
},
|
||||
headers=auth_headers,
|
||||
)
|
||||
deck_id = create_response.json()["id"]
|
||||
|
||||
# Get deck
|
||||
response = await client.get(f"/api/v1/decks/{deck_id}", headers=auth_headers)
|
||||
assert response.status_code == 200
|
||||
data = response.json()
|
||||
assert data["name"] == "Get Test Deck"
|
||||
|
||||
@pytest.mark.asyncio
|
||||
async def test_update_deck(self, client: AsyncClient, auth_headers: dict):
|
||||
"""Test updating a deck."""
|
||||
# Create a deck first
|
||||
create_response = await client.post(
|
||||
"/api/v1/decks/",
|
||||
json={
|
||||
"name": "Update Test Deck",
|
||||
"content": "4 Lightning Bolt",
|
||||
"format": "plain",
|
||||
},
|
||||
headers=auth_headers,
|
||||
)
|
||||
deck_id = create_response.json()["id"]
|
||||
|
||||
# Update deck
|
||||
response = await client.patch(
|
||||
f"/api/v1/decks/{deck_id}",
|
||||
json={"name": "Updated Deck Name"},
|
||||
headers=auth_headers,
|
||||
)
|
||||
assert response.status_code == 200
|
||||
data = response.json()
|
||||
assert data["name"] == "Updated Deck Name"
|
||||
|
||||
@pytest.mark.asyncio
|
||||
async def test_delete_deck(self, client: AsyncClient, auth_headers: dict):
|
||||
"""Test deleting a deck."""
|
||||
# Create a deck first
|
||||
create_response = await client.post(
|
||||
"/api/v1/decks/",
|
||||
json={
|
||||
"name": "Delete Test Deck",
|
||||
"content": "4 Lightning Bolt",
|
||||
"format": "plain",
|
||||
},
|
||||
headers=auth_headers,
|
||||
)
|
||||
deck_id = create_response.json()["id"]
|
||||
|
||||
# Delete deck
|
||||
response = await client.delete(f"/api/v1/decks/{deck_id}", headers=auth_headers)
|
||||
assert response.status_code == 200
|
||||
|
||||
@pytest.mark.asyncio
|
||||
async def test_create_folder(self, client: AsyncClient, auth_headers: dict):
|
||||
"""Test creating a folder."""
|
||||
response = await client.post(
|
||||
"/api/v1/decks/folders",
|
||||
json={
|
||||
"name": "Test Folder",
|
||||
},
|
||||
headers=auth_headers,
|
||||
)
|
||||
assert response.status_code == 200
|
||||
data = response.json()
|
||||
assert data["name"] == "Test Folder"
|
||||
|
||||
@pytest.mark.asyncio
|
||||
async def test_list_folders(self, client: AsyncClient, auth_headers: dict):
|
||||
"""Test listing folders."""
|
||||
# Create a folder first
|
||||
await client.post(
|
||||
"/api/v1/decks/folders",
|
||||
json={"name": "List Test Folder"},
|
||||
headers=auth_headers,
|
||||
)
|
||||
|
||||
# List folders
|
||||
response = await client.get("/api/v1/decks/folders", headers=auth_headers)
|
||||
assert response.status_code == 200
|
||||
data = response.json()
|
||||
assert isinstance(data, list)
|
||||
assert len(data) > 0
|
||||
|
||||
@pytest.mark.asyncio
|
||||
async def test_delete_folder(self, client: AsyncClient, auth_headers: dict):
|
||||
"""Test deleting a folder."""
|
||||
# Create a folder first
|
||||
create_response = await client.post(
|
||||
"/api/v1/decks/folders",
|
||||
json={"name": "Delete Test Folder"},
|
||||
headers=auth_headers,
|
||||
)
|
||||
folder_id = create_response.json()["id"]
|
||||
|
||||
# Delete folder
|
||||
response = await client.delete(f"/api/v1/decks/folders/{folder_id}", headers=auth_headers)
|
||||
assert response.status_code == 200
|
||||
Reference in New Issue
Block a user