feat: add onboarding status and dismiss endpoints with tests

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
chihlasm
2026-03-17 00:05:28 -04:00
parent f16a686fb4
commit 75b32a4f5a
3 changed files with 184 additions and 0 deletions

View File

@@ -0,0 +1,72 @@
"""Tests for onboarding status endpoints."""
import pytest
@pytest.mark.asyncio
async def test_onboarding_status_fresh_user(client, auth_headers):
"""Fresh user should have all onboarding items false."""
response = await client.get(
"/api/v1/users/onboarding-status",
headers=auth_headers,
)
assert response.status_code == 200
data = response.json()
assert data["created_flow"] is False
assert data["ran_session"] is False
assert data["exported_session"] is False
assert data["tried_ai_assistant"] is False
assert data["invited_teammate"] is False
assert data["connected_psa"] is False
assert data["is_team_user"] is False
assert data["dismissed"] is False
@pytest.mark.asyncio
async def test_onboarding_dismiss(client, auth_headers):
"""Dismiss endpoint should set dismissed to true."""
# Verify starts as false
response = await client.get(
"/api/v1/users/onboarding-status",
headers=auth_headers,
)
assert response.status_code == 200
assert response.json()["dismissed"] is False
# Dismiss
response = await client.post(
"/api/v1/users/onboarding-status/dismiss",
headers=auth_headers,
)
assert response.status_code == 200
assert response.json()["dismissed"] is True
# Verify persisted
response = await client.get(
"/api/v1/users/onboarding-status",
headers=auth_headers,
)
assert response.status_code == 200
assert response.json()["dismissed"] is True
@pytest.mark.asyncio
async def test_onboarding_created_flow_after_tree_creation(client, auth_headers, test_tree):
"""After creating a tree, created_flow should be true."""
response = await client.get(
"/api/v1/users/onboarding-status",
headers=auth_headers,
)
assert response.status_code == 200
assert response.json()["created_flow"] is True
@pytest.mark.asyncio
async def test_onboarding_requires_auth(client):
"""Unauthenticated requests should be rejected."""
response = await client.get("/api/v1/users/onboarding-status")
assert response.status_code == 401
response = await client.post("/api/v1/users/onboarding-status/dismiss")
assert response.status_code == 401