feat: Funcion de sistema tenants

This commit is contained in:
2026-02-23 13:01:24 -07:00
parent ceea67eb2b
commit 1ccc39732b
58 changed files with 1889 additions and 315 deletions

View File

@@ -6,6 +6,7 @@ Fixtures y utilidades para tests de integración con BD real
import pytest
import asyncio
import os
from typing import AsyncGenerator, Generator
from sqlalchemy.ext.asyncio import AsyncSession, create_async_engine, async_sessionmaker
from sqlalchemy.pool import NullPool
@@ -21,8 +22,19 @@ from app.models.system import System
from app.models.category import Category
# Database URL para testing (usa la misma BD pero limpia después)
TEST_DATABASE_URL = "postgresql+asyncpg://servicemanager:servicemanager123@localhost:5432/servicemanager_test"
# Database URL para testing.
# - En host/local: usa localhost
# - En Docker: deriva de DATABASE_URL (normalmente apunta a host 'postgres')
_DEFAULT_TEST_DATABASE_URL = "postgresql+asyncpg://servicemanager:servicemanager123@localhost:5432/servicemanager_test"
_ENV_TEST_DATABASE_URL = os.getenv("TEST_DATABASE_URL")
_ENV_DATABASE_URL = os.getenv("DATABASE_URL")
if _ENV_TEST_DATABASE_URL:
TEST_DATABASE_URL = _ENV_TEST_DATABASE_URL
elif _ENV_DATABASE_URL and "@postgres:" in _ENV_DATABASE_URL:
TEST_DATABASE_URL = _ENV_DATABASE_URL.rsplit("/", 1)[0] + "/servicemanager_test"
else:
TEST_DATABASE_URL = _DEFAULT_TEST_DATABASE_URL
@pytest.fixture(scope="session")
@@ -99,8 +111,8 @@ async def test_tenant(db_session: AsyncSession) -> Tenant:
slug="test-company",
domain="test.company.com",
status=TenantStatus.ACTIVE,
email="admin@test.company.com",
phone="+1234567890"
contact_email="admin@test.company.com",
contact_phone="+1234567890",
)
db_session.add(tenant)
await db_session.commit()
@@ -116,8 +128,8 @@ async def test_tenant_2(db_session: AsyncSession) -> Tenant:
slug="test-company-2",
domain="test2.company.com",
status=TenantStatus.ACTIVE,
email="admin@test2.company.com",
phone="+9876543210"
contact_email="admin@test2.company.com",
contact_phone="+9876543210",
)
db_session.add(tenant)
await db_session.commit()