import os
import sys
from datetime import date
from pathlib import Path

import pytest

PROJECT_ROOT = Path(__file__).resolve().parents[1]
if str(PROJECT_ROOT) not in sys.path:
    sys.path.insert(0, str(PROJECT_ROOT))

os.environ.setdefault("APPWRITE_ENDPOINT", "http://localhost/v1")
os.environ.setdefault("APPWRITE_PROJECT_ID", "test-project")
os.environ.setdefault("APPWRITE_API_KEY", "test-key")

pytest.importorskip("appwrite")

from src.modules.produtos_venda.schemas import (  # noqa: E402
    ProdutoVendaCreateRequest,
)


def test_produto_venda_create_request_parses_aliases() -> None:
    payload = ProdutoVendaCreateRequest(
        documentId="custom_document",
        data={
            "catalogo_id": "catalog_123",
            "nome": "Produto Teste",
            "preco_venda": 79.9,
            "qtdade_estoque": 144,
            "observacoes": "Produto próximo ao vencimento.",
            "data_validade": "2025-12-31T00:00:00.000Z",
            "empresa_id": "empresa_456",
        },
    )

    assert payload.document_id == "custom_document"
    assert payload.data.catalogo_id == "catalog_123"
    assert payload.data.nome == "Produto Teste"
    assert payload.data.preco_venda == pytest.approx(79.9)
    assert payload.data.preco_final == pytest.approx(89.49)
    assert payload.data.qtdade_estoque == 144
    assert payload.data.observacoes == "Produto próximo ao vencimento."
    assert payload.data.data_validade == date(2025, 12, 31)
    assert payload.data.empresa_id == "empresa_456"
