import uuid
from fastapi import status

def test_register_tenant_success(client):
    # Unique domain per test run
    unique_domain = f"test-{uuid.uuid4().hex[:6]}.com"
    payload = {
        "domain": unique_domain,
        "name": "Test Acme Store"
    }
    
    response = client.post("/api/v1/tenant/register", json=payload)
    
    assert response.status_code == status.HTTP_201_CREATED
    data = response.json()
    assert "siteId" in data
    assert data["siteId"].startswith("site_")
    assert data["domain"] == unique_domain
    assert data["name"] == "Test Acme Store"
    assert "createdAt" in data

def test_register_tenant_duplicate_domain_fails(client):
    unique_domain = f"dup-{uuid.uuid4().hex[:6]}.com"
    payload = {
        "domain": unique_domain,
        "name": "Duplicate Test Store"
    }
    
    # First registration
    resp1 = client.post("/api/v1/tenant/register", json=payload)
    assert resp1.status_code == status.HTTP_201_CREATED
    
    # Second registration with same domain should fail
    resp2 = client.post("/api/v1/tenant/register", json=payload)
    assert resp2.status_code == status.HTTP_400_BAD_REQUEST
    assert "already registered" in resp2.json()["detail"]

def test_register_tenant_validation_error(client):
    # Empty name should fail Pydantic validation
    payload = {
        "domain": "valid-domain.com",
        "name": ""
    }
    response = client.post("/api/v1/tenant/register", json=payload)
    assert response.status_code == status.HTTP_422_UNPROCESSABLE_ENTITY
