ticket #150 attempt 1

This commit is contained in:
Typosaurus
2026-07-28 13:18:20 +00:00
parent 5079f40f46
commit 9d14149f62
10 changed files with 189 additions and 3 deletions
+47 -2
View File
@@ -1,10 +1,12 @@
# retoor <retoor@molodetz.nl>
import time
from datetime import datetime, timezone
import pytest
import requests
from tests.conftest import BASE_URL
from devplacepy.database import get_table, refresh_snapshot, set_setting
from devplacepy.utils import generate_uid, make_combined_slug
_counter_dr = [0]
@@ -46,10 +48,13 @@ def _register(password="secret123"):
raise AssertionError("registration did not open")
def _create_rant(params, text="this is a devrant rant body", tags="dev,test"):
def _create_rant(params, text="this is a devrant rant body", tags="dev,test", project_uid=None):
data = {**params, "rant": text, "tags": tags}
if project_uid:
data["project_uid"] = project_uid
r = requests.post(
f"{BASE_URL}/api/devrant/rants",
data={**params, "rant": text, "tags": tags},
data=data,
)
return r
@@ -235,3 +240,43 @@ def test_search_returns_results_shape(app_server):
r = requests.get(f"{BASE_URL}/api/devrant/search", params={"term": "uniquesearchtoken"})
assert r.json()["success"] is True
assert isinstance(r.json()["results"], list)
def test_rant_serialization_includes_project(app_server):
name, params = _register()
refresh_snapshot()
user = get_table("users").find_one(username=name)
uid = user["uid"]
project_uid = generate_uid()
slug = make_combined_slug("project-for-rant", project_uid)
projects = get_table("projects")
projects.insert({
"uid": project_uid,
"user_uid": uid,
"slug": slug,
"title": "Project For Rant",
"description": "project linked to a rant",
"project_type": "software",
"status": "In Development",
"stars": 0,
"created_at": datetime.now(timezone.utc).isoformat(),
"deleted_at": None,
"deleted_by": None,
})
refresh_snapshot()
rant_id = _create_rant(
params,
text="rant with a project link here",
tags="dev",
project_uid=project_uid,
).json()["rant_id"]
refresh_snapshot()
rant = requests.get(
f"{BASE_URL}/api/devrant/rants/{rant_id}",
params=params,
).json()["rant"]
assert rant.get("project_uid") == project_uid
assert rant.get("project") is not None
assert rant["project"]["uid"] == project_uid
assert rant["project"]["name"] == "Project For Rant"
assert "/projects/" in rant["project"]["url"]