77 lines
1.8 KiB
Python
77 lines
1.8 KiB
Python
"""
|
|
Shared fixtures for chunker tests.
|
|
|
|
Demonstrates: TDD and unit testing best practices (Interview Topic 8) — fixtures, temp files.
|
|
"""
|
|
|
|
import os
|
|
import tempfile
|
|
|
|
import pytest
|
|
|
|
from core.chunker.models import Chunk, ChunkResult
|
|
|
|
|
|
@pytest.fixture
|
|
def temp_file():
|
|
"""Create a temporary file with known content, cleaned up after test."""
|
|
files = []
|
|
|
|
def _create(content: bytes = b"x" * 4096):
|
|
f = tempfile.NamedTemporaryFile(delete=False, suffix=".mp4")
|
|
f.write(content)
|
|
f.close()
|
|
files.append(f.name)
|
|
return f.name
|
|
|
|
yield _create
|
|
|
|
for path in files:
|
|
if os.path.exists(path):
|
|
os.unlink(path)
|
|
|
|
|
|
@pytest.fixture
|
|
def sample_chunk(temp_file):
|
|
"""Create a sample time-based Chunk with valid time range."""
|
|
path = temp_file(b"x" * 1024)
|
|
return Chunk(
|
|
sequence=0,
|
|
start_time=0.0,
|
|
end_time=10.0,
|
|
source_path=path,
|
|
duration=10.0,
|
|
)
|
|
|
|
|
|
@pytest.fixture
|
|
def make_chunk(temp_file):
|
|
"""Factory fixture for creating time-based chunks with specific sequence numbers."""
|
|
path = temp_file(b"x" * 1024)
|
|
|
|
def _make(sequence: int, duration: float = 10.0) -> Chunk:
|
|
start = sequence * duration
|
|
return Chunk(
|
|
sequence=sequence,
|
|
start_time=start,
|
|
end_time=start + duration,
|
|
source_path=path,
|
|
duration=duration,
|
|
)
|
|
|
|
return _make
|
|
|
|
|
|
@pytest.fixture
|
|
def make_result():
|
|
"""Factory fixture for creating ChunkResults."""
|
|
|
|
def _make(sequence: int, success: bool = True, processing_time: float = 0.01) -> ChunkResult:
|
|
return ChunkResult(
|
|
sequence=sequence,
|
|
success=success,
|
|
processing_time=processing_time,
|
|
)
|
|
|
|
return _make
|