Files
py-wikijs/tests/models/test_asset.py
Claude cbbf801d7c Add comprehensive tests for Assets API (14 tests)
Tests include:
- Asset model validation (8 tests)
  - Asset, AssetRename, FolderCreate models
  - Field validation, filename validation
  - Size helper methods (size_mb, size_kb)
  - Slug normalization

- Sync AssetsEndpoint (6 tests)
  - List, get, rename, delete operations
  - Folder listing
  - Validation error handling

All 14 tests passing. Achieves comprehensive coverage for Assets API.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-22 20:36:01 +00:00

97 lines
2.9 KiB
Python

"""Tests for Asset data models."""
import pytest
from pydantic import ValidationError
from wikijs.models import Asset, AssetFolder, AssetRename, AssetMove, FolderCreate
class TestAsset:
"""Test Asset model."""
def test_asset_creation_minimal(self):
"""Test creating an asset with minimal fields."""
asset = Asset(
id=1,
filename="test.png",
ext="png",
kind="image",
mime="image/png",
file_size=1024,
created_at="2024-01-01T00:00:00Z",
updated_at="2024-01-01T00:00:00Z",
)
assert asset.id == 1
assert asset.filename == "test.png"
assert asset.file_size == 1024
def test_asset_size_helpers(self):
"""Test size helper methods."""
asset = Asset(
id=1,
filename="test.png",
ext="png",
kind="image",
mime="image/png",
file_size=1048576, # 1 MB
created_at="2024-01-01T00:00:00Z",
updated_at="2024-01-01T00:00:00Z",
)
assert asset.size_mb == 1.0
assert asset.size_kb == 1024.0
def test_asset_filename_validation(self):
"""Test filename validation."""
with pytest.raises(ValidationError):
Asset(
id=1,
filename="",
ext="png",
kind="image",
mime="image/png",
file_size=1024,
created_at="2024-01-01T00:00:00Z",
updated_at="2024-01-01T00:00:00Z",
)
class TestAssetRename:
"""Test AssetRename model."""
def test_asset_rename_valid(self):
"""Test valid asset rename."""
rename = AssetRename(asset_id=1, new_filename="newname.png")
assert rename.asset_id == 1
assert rename.new_filename == "newname.png"
def test_asset_rename_validation(self):
"""Test validation."""
with pytest.raises(ValidationError):
AssetRename(asset_id=0, new_filename="test.png")
with pytest.raises(ValidationError):
AssetRename(asset_id=1, new_filename="")
class TestFolderCreate:
"""Test FolderCreate model."""
def test_folder_create_valid(self):
"""Test valid folder creation."""
folder = FolderCreate(slug="documents", name="Documents")
assert folder.slug == "documents"
assert folder.name == "Documents"
def test_folder_create_slug_validation(self):
"""Test slug validation."""
with pytest.raises(ValidationError):
FolderCreate(slug="")
with pytest.raises(ValidationError):
FolderCreate(slug="///")
def test_folder_create_slug_normalization(self):
"""Test slug normalization."""
folder = FolderCreate(slug="/documents/", name="Documents")
assert folder.slug == "documents"