refaktorálás javításai

This commit is contained in:
Roo
2026-03-13 10:22:41 +00:00
parent 2d8d23f469
commit f53e0b53df
140 changed files with 7316 additions and 4579 deletions

119
test_hierarchical_params.py Normal file
View File

@@ -0,0 +1,119 @@
#!/usr/bin/env python3
"""
Teszt szkript a hierarchikus System Parameters működésének ellenőrzéséhez.
Futtatás: docker exec sf_api python /app/test_hierarchical_params.py
"""
import asyncio
import sys
import os
sys.path.insert(0, '/app')
from sqlalchemy.ext.asyncio import create_async_engine, AsyncSession
from sqlalchemy.orm import sessionmaker
from app.models.system import SystemParameter, ParameterScope
from app.services.system_service import system_service
DATABASE_URL = os.getenv("DATABASE_URL", "postgresql+asyncpg://postgres:postgres@postgres:5432/service_finder")
async def test_hierarchical():
engine = create_async_engine(DATABASE_URL, echo=False)
async_session = sessionmaker(engine, class_=AsyncSession, expire_on_commit=False)
async with async_session() as db:
# Töröljük a teszt paramétereket, ha vannak
await db.execute(
SystemParameter.__table__.delete().where(SystemParameter.key == "test.hierarchical")
)
await db.commit()
# 1. GLOBAL paraméter létrehozása
global_param = SystemParameter(
key="test.hierarchical",
value={"message": "global value"},
scope_level=ParameterScope.GLOBAL,
scope_id=None,
category="test",
is_active=True,
)
db.add(global_param)
# 2. COUNTRY paraméter létrehozása (HU)
country_param = SystemParameter(
key="test.hierarchical",
value={"message": "country HU value"},
scope_level=ParameterScope.COUNTRY,
scope_id="HU",
category="test",
is_active=True,
)
db.add(country_param)
# 3. REGION paraméter létrehozása (budapest)
region_param = SystemParameter(
key="test.hierarchical",
value={"message": "region budapest value"},
scope_level=ParameterScope.REGION,
scope_id="budapest",
category="test",
is_active=True,
)
db.add(region_param)
# 4. USER paraméter létrehozása (user_123)
user_param = SystemParameter(
key="test.hierarchical",
value={"message": "user user_123 value"},
scope_level=ParameterScope.USER,
scope_id="user_123",
category="test",
is_active=True,
)
db.add(user_param)
await db.commit()
# Teszt: csak global scope (nincs user, region, country)
value = await system_service.get_scoped_parameter(db, "test.hierarchical", default=None)
print(f"Global only: {value}")
assert value["message"] == "global value"
# COUNTRY scope (HU)
value = await system_service.get_scoped_parameter(db, "test.hierarchical", country_code="HU", default=None)
print(f"Country HU: {value}")
assert value["message"] == "country HU value"
# REGION scope (budapest) a region a country feletti prioritás? A prioritási sorrend: User > Region > Country > Global
# Ha region_id megadva, de country_code is, akkor region elsőbbséget élvez.
value = await system_service.get_scoped_parameter(db, "test.hierarchical", region_id="budapest", country_code="HU", default=None)
print(f"Region budapest (with country HU): {value}")
assert value["message"] == "region budapest value"
# USER scope (user_123) legmagasabb prioritás
value = await system_service.get_scoped_parameter(db, "test.hierarchical", user_id="user_123", region_id="budapest", country_code="HU", default=None)
print(f"User user_123 (with region and country): {value}")
assert value["message"] == "user user_123 value"
# Nem létező user, de létező region
value = await system_service.get_scoped_parameter(db, "test.hierarchical", user_id="nonexistent", region_id="budapest", country_code="HU", default=None)
print(f"Non-existent user, region budapest: {value}")
assert value["message"] == "region budapest value"
# Nem létező region, de létező country
value = await system_service.get_scoped_parameter(db, "test.hierarchical", region_id="nonexistent", country_code="HU", default=None)
print(f"Non-existent region, country HU: {value}")
assert value["message"] == "country HU value"
# Semmi specifikus global
value = await system_service.get_scoped_parameter(db, "test.hierarchical", default=None)
print(f"Fallback to global: {value}")
assert value["message"] == "global value"
# Törlés
await db.execute(
SystemParameter.__table__.delete().where(SystemParameter.key == "test.hierarchical")
)
await db.commit()
print("✅ Minden teszt sikeres!")
if __name__ == "__main__":
asyncio.run(test_hierarchical())