File size: 3,256 Bytes
343eed9
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
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