Files
ComfyUI-Lora-Manager/tests/routes/test_randomizer_endpoints.py
Will Miao 1ebd2c93a0 feat: add .opencode to gitignore and refactor lora routes
- Add .opencode directory to gitignore for agent-related files
- Refactor lora_routes.py with consistent string formatting and improved route registration
- Add DualRangeSlider Vue component for enhanced UI controls
2026-01-13 13:59:36 +08:00

204 lines
5.1 KiB
Python

import json
from unittest.mock import MagicMock
import pytest
from py.routes.lora_routes import LoraRoutes
class DummyRequest:
def __init__(self, *, query=None, match_info=None, json_data=None):
self.query = query or {}
self.match_info = match_info or {}
self._json_data = json_data or {}
async def json(self):
return self._json_data
class StubLoraService:
"""Stub service for testing randomizer endpoints"""
def __init__(self):
self.random_loras = []
async def get_random_loras(self, **kwargs):
return self.random_loras
@pytest.fixture
def routes():
handler = LoraRoutes()
handler.service = StubLoraService()
return handler
async def test_get_random_loras_success(routes):
"""Test successful random LoRA generation"""
routes.service.random_loras = [
{
"name": "test_lora_1",
"strength": 0.8,
"clipStrength": 0.8,
"active": True,
"expanded": False,
"locked": False,
},
{
"name": "test_lora_2",
"strength": 0.6,
"clipStrength": 0.6,
"active": True,
"expanded": False,
"locked": False,
},
]
request = DummyRequest(
json_data={
"count": 5,
"model_strength_min": 0.5,
"model_strength_max": 1.0,
"use_same_clip_strength": True,
"locked_loras": [],
}
)
response = await routes.get_random_loras(request)
payload = json.loads(response.text)
assert response.status == 200
assert payload["success"] is True
assert "loras" in payload
assert payload["count"] == 2
async def test_get_random_loras_with_range(routes):
"""Test random LoRAs with count range"""
routes.service.random_loras = [
{
"name": "test_lora_1",
"strength": 0.8,
"clipStrength": 0.8,
"active": True,
"expanded": False,
"locked": False,
}
]
request = DummyRequest(
json_data={
"count_min": 3,
"count_max": 7,
"model_strength_min": 0.0,
"model_strength_max": 1.0,
"use_same_clip_strength": True,
}
)
response = await routes.get_random_loras(request)
payload = json.loads(response.text)
assert response.status == 200
assert payload["success"] is True
async def test_get_random_loras_invalid_count(routes):
"""Test invalid count parameter"""
request = DummyRequest(
json_data={
"count": 150, # Over limit
"model_strength_min": 0.0,
"model_strength_max": 1.0,
}
)
response = await routes.get_random_loras(request)
payload = json.loads(response.text)
assert response.status == 400
assert payload["success"] is False
assert "Count must be between 1 and 100" in payload["error"]
async def test_get_random_loras_invalid_strength(routes):
"""Test invalid strength range"""
request = DummyRequest(
json_data={
"count": 5,
"model_strength_min": -11, # Invalid (below -10)
"model_strength_max": 1.0,
}
)
response = await routes.get_random_loras(request)
payload = json.loads(response.text)
assert response.status == 400
assert payload["success"] is False
assert "Model strength must be between -10 and 10" in payload["error"]
async def test_get_random_loras_with_locked(routes):
"""Test random LoRAs with locked items"""
routes.service.random_loras = [
{
"name": "new_lora",
"strength": 0.7,
"clipStrength": 0.7,
"active": True,
"expanded": False,
"locked": False,
},
{
"name": "locked_lora",
"strength": 0.9,
"clipStrength": 0.9,
"active": True,
"expanded": False,
"locked": True,
},
]
request = DummyRequest(
json_data={
"count": 5,
"model_strength_min": 0.5,
"model_strength_max": 1.0,
"use_same_clip_strength": True,
"locked_loras": [
{
"name": "locked_lora",
"strength": 0.9,
"clipStrength": 0.9,
"active": True,
"expanded": False,
"locked": True,
}
],
}
)
response = await routes.get_random_loras(request)
payload = json.loads(response.text)
assert response.status == 200
assert payload["success"] is True
async def test_get_random_loras_error(routes, monkeypatch):
"""Test error handling"""
async def failing(*_args, **_kwargs):
raise RuntimeError("Service error")
routes.service.get_random_loras = failing
request = DummyRequest(json_data={"count": 5})
response = await routes.get_random_loras(request)
payload = json.loads(response.text)
assert response.status == 500
assert payload["success"] is False
assert "error" in payload