from django.test import Client, TestCase
from passlib.context import CryptContext

from accounts.models import User

pwd_ctx = CryptContext(schemes=["bcrypt"], deprecated="auto")


class ApiParitySmokeTests(TestCase):
    def setUp(self):
        self.client = Client()
        User.objects.create(username="overview@example.com", password=pwd_ctx.hash("secret123"), role="user")

    def test_overview_requires_auth(self):
        response = self.client.get("/api/overview")
        self.assertEqual(response.status_code, 401)

    def test_overview_shape_after_login(self):
        self.client.post(
            "/api/auth/login",
            data={"username": "overview@example.com", "password": "secret123"},
            content_type="application/json",
        )
        response = self.client.get("/api/overview")
        self.assertEqual(response.status_code, 200)
        body = response.json()
        self.assertIn("branches", body)
        self.assertIn("gross_profit_margin", body)
        self.assertIn("overall_gp_color", body)
