chore: reorganize test files into domain-specific subdirectories under tests/
Split the monolithic test directory into three tiers (unit, api, e2e) with a path-mirroring directory structure. Added corresponding Makefile targets (test-unit, test-api, test-e2e) and updated all documentation references (CLAUDE.md, README.md, testing-cicd.html, testing-framework.html, testing-make.html) to reflect the new layout and naming conventions.
This commit is contained in:
@@ -0,0 +1,99 @@
|
||||
# retoor <retoor@molodetz.nl>
|
||||
|
||||
import json
|
||||
from tests.conftest import BASE_URL
|
||||
from devplacepy.database import get_table
|
||||
from devplacepy.services.jobs import queue
|
||||
def _seed_job(uid="test-fork-uid-001"):
|
||||
jobs = get_table("jobs")
|
||||
jobs.upsert(
|
||||
{
|
||||
"uid": uid,
|
||||
"kind": "fork",
|
||||
"status": "done",
|
||||
"payload": json.dumps(
|
||||
{"source_project_uid": "src-001", "title": "Test Fork"}
|
||||
),
|
||||
"result": json.dumps(
|
||||
{
|
||||
"project_uid": "forked-project-001",
|
||||
"project_url": "/projects/forked-project-001",
|
||||
"source_project_uid": "src-001",
|
||||
}
|
||||
),
|
||||
"preferred_name": "Test Fork",
|
||||
"item_count": 3,
|
||||
"owner_kind": "user",
|
||||
"owner_uid": "test-owner-001",
|
||||
"error": None,
|
||||
"created_at": "2026-06-12T00:00:00+00:00",
|
||||
"completed_at": "2026-06-12T00:05:00+00:00",
|
||||
},
|
||||
["uid"],
|
||||
)
|
||||
return uid
|
||||
|
||||
|
||||
def test_fork_status_returns_job_details(page, app_server):
|
||||
uid = _seed_job()
|
||||
resp = page.request.get(f"{BASE_URL}/forks/{uid}")
|
||||
assert resp.status == 200
|
||||
data = resp.json()
|
||||
assert data["uid"] == uid
|
||||
assert data["kind"] == "fork"
|
||||
assert data["status"] == "done"
|
||||
assert data["project_uid"] == "forked-project-001"
|
||||
assert data["project_url"] == "/projects/forked-project-001"
|
||||
assert data["source_project_uid"] == "src-001"
|
||||
assert data["item_count"] == 3
|
||||
assert data["preferred_name"] == "Test Fork"
|
||||
assert data["error"] is None
|
||||
assert data["created_at"] is not None
|
||||
assert data["completed_at"] is not None
|
||||
|
||||
|
||||
def test_fork_status_unknown_returns_404(page, app_server):
|
||||
resp = page.request.get(f"{BASE_URL}/forks/nonexistent-uid")
|
||||
assert resp.status == 404
|
||||
|
||||
|
||||
def test_fork_status_non_fork_kind_returns_404(page, app_server):
|
||||
jobs = get_table("jobs")
|
||||
jobs.upsert(
|
||||
{
|
||||
"uid": "non-fork-uid",
|
||||
"kind": "zip",
|
||||
"status": "pending",
|
||||
"payload": json.dumps({}),
|
||||
},
|
||||
["uid"],
|
||||
)
|
||||
resp = page.request.get(f"{BASE_URL}/forks/non-fork-uid")
|
||||
assert resp.status == 404
|
||||
|
||||
|
||||
def test_fork_status_pending_shows_no_project_fields(page, app_server):
|
||||
uid = "pending-fork-001"
|
||||
jobs = get_table("jobs")
|
||||
jobs.upsert(
|
||||
{
|
||||
"uid": uid,
|
||||
"kind": "fork",
|
||||
"status": "pending",
|
||||
"payload": json.dumps(
|
||||
{"source_project_uid": "src-002", "title": "Pending Fork"}
|
||||
),
|
||||
"preferred_name": "Pending Fork",
|
||||
"item_count": 0,
|
||||
"created_at": "2026-06-12T00:00:00+00:00",
|
||||
},
|
||||
["uid"],
|
||||
)
|
||||
resp = page.request.get(f"{BASE_URL}/forks/{uid}")
|
||||
assert resp.status == 200
|
||||
data = resp.json()
|
||||
assert data["uid"] == uid
|
||||
assert data["status"] == "pending"
|
||||
assert data["project_uid"] is None
|
||||
assert data["project_url"] is None
|
||||
assert data["completed_at"] is None
|
||||
Reference in New Issue
Block a user