Download tests/test_database.py from MERLx/Aperture: direct link, hf CLI and curl.
- Browser
- Download file 3.14 kB
-
https://huggingface.co/spaces/MERLx/Aperture/resolve/fcb9daa4b394d997780098b3706e4f52bb70e072/tests/test_database.py
- Command line
-
hf download hf://spaces/MERLx/Aperture@fcb9daa4b394d997780098b3706e4f52bb70e072/tests/test_database.py
-
curl -L -o test_database.py https://huggingface.co/spaces/MERLx/Aperture/resolve/fcb9daa4b394d997780098b3706e4f52bb70e072/tests/test_database.py
3.14 kB
| import aiosqlite | |
| import pytest | |
| from app.database import Database | |
| from app.models import JobStatus | |
| async def test_create_and_get_job(temp_db_path, sample_job_request): | |
| db = Database(temp_db_path) | |
| await db.init() | |
| job_id = await db.create_job(sample_job_request) | |
| assert isinstance(job_id, str) | |
| assert len(job_id) > 0 | |
| job = await db.get_job(job_id) | |
| assert job.id == job_id | |
| assert job.status == JobStatus.QUEUED | |
| assert job.request.aoi.name == "Khartoum North" | |
| assert job.request.indicator_ids == ["fires", "cropland"] | |
| async def test_update_job_status(temp_db_path, sample_job_request): | |
| db = Database(temp_db_path) | |
| await db.init() | |
| job_id = await db.create_job(sample_job_request) | |
| await db.update_job_status(job_id, JobStatus.PROCESSING) | |
| job = await db.get_job(job_id) | |
| assert job.status == JobStatus.PROCESSING | |
| async def test_update_job_progress(temp_db_path, sample_job_request): | |
| db = Database(temp_db_path) | |
| await db.init() | |
| job_id = await db.create_job(sample_job_request) | |
| await db.update_job_progress(job_id, "fires", "complete") | |
| job = await db.get_job(job_id) | |
| assert job.progress["fires"] == "complete" | |
| async def test_get_next_queued_job(temp_db_path, sample_job_request): | |
| db = Database(temp_db_path) | |
| await db.init() | |
| job_id = await db.create_job(sample_job_request) | |
| next_job = await db.get_next_queued_job() | |
| assert next_job is not None | |
| assert next_job.id == job_id | |
| async def test_get_next_queued_returns_none_when_empty(temp_db_path): | |
| db = Database(temp_db_path) | |
| await db.init() | |
| next_job = await db.get_next_queued_job() | |
| assert next_job is None | |
| async def test_get_unknown_job_returns_none(temp_db_path): | |
| db = Database(temp_db_path) | |
| await db.init() | |
| job = await db.get_job("nonexistent-id") | |
| assert job is None | |
| async def test_create_job_stores_email(temp_db_path, sample_job_request): | |
| db = Database(temp_db_path) | |
| await db.init() | |
| job_id = await db.create_job(sample_job_request) | |
| # Read raw row to confirm email column | |
| async with aiosqlite.connect(temp_db_path) as conn: | |
| cur = await conn.execute("SELECT email FROM jobs WHERE id = ?", (job_id,)) | |
| row = await cur.fetchone() | |
| assert row[0] == "test@example.com" | |
| async def test_get_jobs_by_email(temp_db_path, sample_job_request): | |
| db = Database(temp_db_path) | |
| await db.init() | |
| id1 = await db.create_job(sample_job_request) | |
| id2 = await db.create_job(sample_job_request) | |
| jobs = await db.get_jobs_by_email("test@example.com") | |
| assert len(jobs) == 2 | |
| # Most recent first | |
| assert jobs[0].id == id2 | |
| assert jobs[1].id == id1 | |
| async def test_get_jobs_by_email_filters(temp_db_path, sample_job_request): | |
| db = Database(temp_db_path) | |
| await db.init() | |
| await db.create_job(sample_job_request) | |
| jobs = await db.get_jobs_by_email("other@example.com") | |
| assert len(jobs) == 0 | |