test_examples.py•6.56 kB
#!/usr/bin/env python3
"""
Exemplos de teste para o MCP de Padronização de Dados
Demonstra como usar as ferramentas do MCP
"""
import asyncio
import json
from project_standards_mcp import server, project_standards
async def test_validation_examples():
"""Exemplos de validação de variáveis"""
print("🧪 Testando Validação de Variáveis\n")
# Teste 1: Variável válida
result = server.call_tool("validate_variable_name", {
"variable_name": "userName",
"variable_type": "string"
})
print("✅ userName:", result)
# Teste 2: Variável inválida (não segue camelCase)
result = server.call_tool("validate_variable_name", {
"variable_name": "user_name",
"variable_type": "string"
})
print("❌ user_name:", result)
# Teste 3: Nome proibido
result = server.call_tool("validate_variable_name", {
"variable_name": "data",
"variable_type": "array"
})
print("🚫 data:", result)
# Teste 4: Boolean sem prefixo
result = server.call_tool("validate_variable_name", {
"variable_name": "active",
"variable_type": "boolean"
})
print("⚠️ active (boolean):", result)
# Teste 5: Boolean com prefixo correto
result = server.call_tool("validate_variable_name", {
"variable_name": "isActive",
"variable_type": "boolean"
})
print("✅ isActive:", result)
async def test_database_examples():
"""Exemplos de validação de banco de dados"""
print("\n🗄️ Testando Validação de Banco de Dados\n")
# Teste 1: Tabela válida
result = server.call_tool("validate_database_structure", {
"table_name": "user_profiles",
"columns": ["id", "user_id", "first_name", "last_name", "email", "created_at"]
})
print("✅ Tabela user_profiles:", result)
# Teste 2: Tabela com colunas inválidas
result = server.call_tool("validate_database_structure", {
"table_name": "UserProfiles",
"columns": ["ID", "UserID", "FirstName", "LastName"]
})
print("❌ Tabela UserProfiles:", result)
async def test_suggestions():
"""Exemplos de sugestões de nomes"""
print("\n💡 Testando Sugestões de Nomes\n")
# Teste 1: Sugestão para string
result = server.call_tool("suggest_variable_name", {
"description": "nome completo do usuário",
"variable_type": "string"
})
print("📝 Nome completo:", result)
# Teste 2: Sugestão para boolean
result = server.call_tool("suggest_variable_name", {
"description": "usuário está ativo",
"variable_type": "boolean"
})
print("🔘 Usuário ativo:", result)
# Teste 3: Sugestão para função
result = server.call_tool("suggest_variable_name", {
"description": "enviar formulário de login",
"variable_type": "function"
})
print("⚡ Função de login:", result)
async def test_configuration():
"""Exemplos de configuração"""
print("\n⚙️ Testando Configuração\n")
# Teste 1: Mudar para snake_case
result = server.call_tool("set_project_standards", {
"variable_naming": "snake_case",
"forbidden_names": ["data", "temp", "user"],
"required_prefixes": {
"boolean": "has",
"function": "process"
}
})
print("🔄 Mudando para snake_case:", result)
# Teste 2: Ver padrões atuais
result = server.call_tool("get_project_standards", {})
print("📋 Padrões atuais:", result)
# Teste 3: Validar variável com novo padrão
result = server.call_tool("validate_variable_name", {
"variable_name": "user_name",
"variable_type": "string"
})
print("✅ user_name (snake_case):", result)
async def test_file_validation():
"""Exemplos de validação de arquivos"""
print("\n📁 Testando Validação de Arquivos\n")
# Teste 1: Arquivo válido
result = server.call_tool("validate_file_structure", {
"file_path": "src/components/UserProfile.jsx"
})
print("✅ UserProfile.jsx:", result)
# Teste 2: Arquivo com nome inválido
result = server.call_tool("validate_file_structure", {
"file_path": "src/components/userProfile.jsx"
})
print("❌ userProfile.jsx:", result)
async def test_interactive_demo():
"""Demonstração interativa das funcionalidades"""
print("\n🎯 Demonstração Interativa\n")
# Mostra ferramentas disponíveis
print("📋 Ferramentas disponíveis:")
tools = server.list_tools()
for i, tool in enumerate(tools, 1):
print(f" {i}. {tool['name']}: {tool['description']}")
print("\n🔧 Exemplos práticos:")
# Exemplo 1: Validar variáveis
print("\n1️⃣ Validação de variáveis:")
examples = [
("userName", "string", "✅ Válido"),
("user_name", "string", "❌ Inválido (deve ser camelCase)"),
("isActive", "boolean", "✅ Válido"),
("active", "boolean", "⚠️ Deve começar com 'is'"),
("data", "array", "🚫 Nome proibido")
]
for var_name, var_type, expected in examples:
result = server.call_tool("validate_variable_name", {
"variable_name": var_name,
"variable_type": var_type
})
print(f" {var_name} ({var_type}): {expected}")
print(f" Resultado: {result.split('!')[0]}!")
# Exemplo 2: Sugestões
print("\n2️⃣ Sugestões de nomes:")
suggestions = [
("nome completo do usuário", "string"),
("usuário está ativo", "boolean"),
("enviar formulário", "function")
]
for desc, var_type in suggestions:
result = server.call_tool("suggest_variable_name", {
"description": desc,
"variable_type": var_type
})
print(f" '{desc}' → {result.split('**')[1].split('**')[0]}")
async def main():
"""Executa todos os testes"""
print("🚀 Iniciando Testes do MCP de Padronização\n")
print("=" * 50)
await test_validation_examples()
await test_database_examples()
await test_suggestions()
await test_configuration()
await test_file_validation()
await test_interactive_demo()
print("\n" + "=" * 50)
print("✅ Todos os testes concluídos!")
print("\n🎉 MCP de Padronização funcionando perfeitamente!")
if __name__ == "__main__":
asyncio.run(main())