Spaces:
Sleeping
Sleeping
| import pytest | |
| import subprocess | |
| import sys | |
| from pathlib import Path | |
| API_SERVER_PATH = Path(__file__).parent.parent / "api_server.py" | |
| class TestApiServerSyntax: | |
| def test_api_server_syntax(self): | |
| """Test that api_server.py has valid Python syntax.""" | |
| result = subprocess.run( | |
| [sys.executable, "-m", "py_compile", str(API_SERVER_PATH)], | |
| capture_output=True, | |
| text=True | |
| ) | |
| assert result.returncode == 0, f"Syntax error in api_server.py:\n{result.stderr}" | |
| def test_api_server_can_parse(self): | |
| """Test that api_server.py can be parsed.""" | |
| result = subprocess.run( | |
| [sys.executable, "-c", f"import ast; ast.parse(open('{API_SERVER_PATH}').read())"], | |
| capture_output=True, | |
| text=True | |
| ) | |
| assert result.returncode == 0, f"Parse error:\n{result.stderr}" | |
| class TestModelUsedAssignment: | |
| def test_model_used_logic(self): | |
| """Test the model_used assignment logic.""" | |
| test_cases = [ | |
| {"fallback_to_flux": True, "image_model": "flux", "expected": "flux"}, | |
| {"fallback_to_flux": True, "image_model": "ssd", "expected": "ssd"}, | |
| {"fallback_to_flux": False, "image_model": "flux", "expected": "flux"}, | |
| {"fallback_to_flux": False, "image_model": "ssd", "expected": "ssd"}, | |
| {"fallback_to_flux": True, "image_model": None, "expected": None}, | |
| {"fallback_to_flux": False, "image_model": None, "expected": None}, | |
| ] | |
| for tc in test_cases: | |
| fallback = tc["fallback_to_flux"] | |
| img_model = tc["image_model"] | |
| expected = tc["expected"] | |
| result = img_model if not fallback or img_model == "flux" else img_model | |
| assert result == expected, f"Failed for {tc}: got {result}, expected {expected}" | |
| def test_model_used_fallback_to_flux(self): | |
| """Test that fallback to flux works correctly.""" | |
| image_model = "ssd" | |
| fallback_to_flux = True | |
| result = image_model if not fallback_to_flux or image_model == "flux" else image_model | |
| assert result == "ssd" | |
| image_model = "flux" | |
| result = image_model if not fallback_to_flux or image_model == "flux" else image_model | |
| assert result == "flux" | |
| class TestStoriesStructure: | |
| def test_stories_response_structure(self): | |
| """Test that /api/stories returns expected structure.""" | |
| import requests | |
| resp = requests.get("https://cybermedia-darkmedia-x-api.hf.space/api/stories", timeout=10) | |
| assert resp.status_code == 200 | |
| data = resp.json() | |
| assert "stories" in data | |
| assert isinstance(data["stories"], list) | |
| for story in data["stories"]: | |
| assert "id" in story | |
| assert "title" in story | |
| assert "image_count" in story | |
| assert "image_model" in story | |
| def test_stories_endpoint_count(self): | |
| """Test that stories endpoint returns stories.""" | |
| import requests | |
| resp = requests.get("https://cybermedia-darkmedia-x-api.hf.space/api/stories", timeout=10) | |
| data = resp.json() | |
| assert len(data["stories"]) > 0 |