#!/usr/bin/env python3 """ Egyszerű teszt a ConfigService osztályhoz. Futtatás: docker compose exec -T sf_api python3 /app/backend/test_config_service.py """ import asyncio import sys import os sys.path.insert(0, os.path.dirname(os.path.abspath(__file__))) from sqlalchemy.ext.asyncio import create_async_engine, AsyncSession from sqlalchemy.orm import sessionmaker from app.services.config_service import ConfigService from app.models.system.system import ParameterScope async def test_config_service(): # Adatbázis kapcsolat létrehozása (használjuk a teszt adatbázist vagy a dev-et) # A DATABASE_URL a .env fájlból jön, de itt hardcode-olhatunk egy teszt URL-t database_url = os.getenv("DATABASE_URL", "postgresql+asyncpg://postgres:postgres@postgres:5432/service_finder") engine = create_async_engine(database_url, echo=False) AsyncSessionLocal = sessionmaker(engine, class_=AsyncSession, expire_on_commit=False) async with AsyncSessionLocal() as db: print("=== ConfigService Teszt ===") # 1. Teszt: nem létező kulcs, default értékkel value = await ConfigService.get_int(db, "non_existent_key", 42) print(f"1. get_int('non_existent_key', 42) = {value} (elvárt: 42)") assert value == 42, f"Expected 42, got {value}" # 2. Teszt: string lekérés value = await ConfigService.get_str(db, "another_key", "hello") print(f"2. get_str('another_key', 'hello') = {value} (elvárt: hello)") assert value == "hello" # 3. Teszt: boolean lekérés value = await ConfigService.get_bool(db, "bool_key", True) print(f"3. get_bool('bool_key', True) = {value} (elvárt: True)") assert value == True # 4. Teszt: float lekérés value = await ConfigService.get_float(db, "float_key", 3.14) print(f"4. get_float('float_key', 3.14) = {value} (elvárt: 3.14)") assert value == 3.14 # 5. Teszt: JSON lekérés value = await ConfigService.get_json(db, "json_key", {"foo": "bar"}) print(f"5. get_json('json_key', {{\"foo\": \"bar\"}}) = {value}") assert value == {"foo": "bar"} # 6. Teszt: általános get value = await ConfigService.get(db, "generic_key", "default") print(f"6. get('generic_key', 'default') = {value}") assert value == "default" # 7. Opcionális: beszúrhatunk egy teszt paramétert és lekérjük # Ehhez szükség van a _insert_default metódusra, de most kihagyjuk print("\n✅ Minden teszt sikeres!") await db.commit() if __name__ == "__main__": asyncio.run(test_config_service())