#!/usr/bin/env python3 """ Тестовий скрипт для Matrix Gateway Перевірка базової функціональності без реального Matrix connection """ import asyncio import json from gateway.job_creator import JobCreator from gateway.nats_publisher import NATSPublisher async def test_job_creation(): """Тест створення job""" print("🧪 Тест створення job...") # Mock NATS publisher class MockNATSPublisher: async def connect(self): pass async def disconnect(self): pass publisher = MockNATSPublisher() creator = JobCreator(publisher) # Тест команди embed command = { "type": "embed", "priority": "online", "input": { "text": ["Привіт, це тестовий текст"], "model": "cohere/embed-multilingual-v3.0", "dims": 1024 } } job = await creator.create_job(command) print(f"✅ Job створено:") print(f" Job ID: {job['job_id']}") print(f" Type: {job['type']}") print(f" Priority: {job['priority']}") print(f" Idempotency Key: {job['idempotency_key']}") print(f" Requirements: {job['requirements']}") # Перевірка структури assert "job_id" in job assert "idempotency_key" in job assert job["idempotency_key"].startswith("sha256:") assert job["type"] == "embed" assert job["priority"] == "online" print("✅ Всі перевірки пройдено!") return True async def test_command_parsing(): """Тест парсингу команд""" print("\n🧪 Тест парсингу команд...") from gateway.main import MatrixGateway gateway = MatrixGateway() # Тест !embed command = gateway._parse_command("!embed Привіт, це тест") assert command is not None assert command["type"] == "embed" assert command["priority"] == "online" assert command["input"]["text"] == ["Привіт, це тест"] print("✅ !embed команда парситься правильно") # Тест !retrieve command = gateway._parse_command("!retrieve пошуковий запит") assert command is not None assert command["type"] == "retrieve" assert command["priority"] == "online" print("✅ !retrieve команда парситься правильно") # Тест !summarize command = gateway._parse_command("!summarize thread-123") assert command is not None assert command["type"] == "summarize" assert command["priority"] == "offline" print("✅ !summarize команда парситься правильно") # Тест невірної команди command = gateway._parse_command("!unknown команда") assert command is None print("✅ Невірна команда правильно відхиляється") print("✅ Всі перевірки парсингу пройдено!") return True async def main(): """Головна функція тестування""" print("🚀 Тестування Matrix Gateway\n") try: await test_job_creation() await test_command_parsing() print("\n✅ Всі тести пройдено успішно!") return 0 except AssertionError as e: print(f"\n❌ Тест не пройдено: {e}") return 1 except Exception as e: print(f"\n❌ Помилка: {e}") import traceback traceback.print_exc() return 1 if __name__ == "__main__": exit(asyncio.run(main()))