personal-lifecycle-tracker / backend / tests / test_users.py
test_users.py
Raw
from __future__ import annotations

from fastapi.testclient import TestClient


def test_list_users(test_client: TestClient):
    res = test_client.get("/api/v1/users")
    assert res.status_code == 200
    users = res.json()
    assert len(users) >= 3
    emails = [u["email"] for u in users]
    assert "alex@example.com" in emails
    assert "sarah@example.com" in emails
    assert "jordan@example.com" in emails


def test_delete_user_not_found(test_client: TestClient):
    res = test_client.delete("/api/v1/users/non-existent-user-id")
    assert res.status_code == 404
    assert "error" in res.json()


def test_delete_user_cascade(test_client: TestClient):
    # Deleting user_alex cascades to alex's owned items and groups
    res = test_client.delete("/api/v1/users/user_alex")
    assert res.status_code == 204

    # Verify user is gone
    users_res = test_client.get("/api/v1/users")
    emails = [u["email"] for u in users_res.json()]
    assert "alex@example.com" not in emails

    # Verify group_home (owned by alex) is removed
    groups_res = test_client.get("/api/v1/groups")
    group_ids = [g["id"] for g in groups_res.json()]
    assert "group_home" not in group_ids