"""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