feat(tests): basic tests

This commit is contained in:
Barrett Ruth 2025-10-05 21:58:43 -04:00
parent a7eb731730
commit c509102b37
22 changed files with 17879 additions and 93 deletions

View file

@ -1,47 +1,71 @@
from dataclasses import dataclass, field
from pydantic import BaseModel, Field
@dataclass
class TestCase:
class TestCase(BaseModel):
input: str
expected: str
class Config:
extra = "forbid"
@dataclass
class ProblemSummary:
class ProblemSummary(BaseModel):
id: str
name: str
class Config:
extra = "forbid"
@dataclass
class ContestSummary:
class ContestSummary(BaseModel):
id: str
name: str
display_name: str
display_name: str | None = None
class Config:
extra = "forbid"
@dataclass
class ScrapingResult:
class ScrapingResult(BaseModel):
success: bool
error: str
class Config:
extra = "forbid"
@dataclass
class MetadataResult(ScrapingResult):
contest_id: str = ""
problems: list[ProblemSummary] = field(default_factory=list)
problems: list[ProblemSummary] = Field(default_factory=list)
class Config:
extra = "forbid"
@dataclass
class ContestListResult(ScrapingResult):
contests: list[ContestSummary] = field(default_factory=list)
contests: list[ContestSummary] = Field(default_factory=list)
class Config:
extra = "forbid"
@dataclass
class TestsResult(ScrapingResult):
problem_id: str
url: str
tests: list[TestCase]
tests: list[TestCase] = Field(default_factory=list)
timeout_ms: int
memory_mb: float
interactive: bool = False
class Config:
extra = "forbid"
class ScraperConfig(BaseModel):
timeout_seconds: int = 30
max_retries: int = 3
backoff_base: float = 2.0
rate_limit_delay: float = 1.0
class Config:
extra = "forbid"