153 lines
6.1 KiB
HTML
153 lines
6.1 KiB
HTML
<!DOCTYPE html>
|
||
<html lang="es">
|
||
<head>
|
||
<meta charset="UTF-8">
|
||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||
<title>Test Menús - WhatsApp Bot Manager</title>
|
||
<style>
|
||
body { font-family: Arial, sans-serif; max-width: 800px; margin: 0 auto; padding: 20px; }
|
||
.success { color: green; }
|
||
.error { color: red; }
|
||
.info { color: blue; }
|
||
button { padding: 10px 15px; margin: 5px; cursor: pointer; }
|
||
pre { background: #f5f5f5; padding: 15px; border-radius: 5px; overflow-x: auto; }
|
||
.result { margin: 10px 0; padding: 10px; border-radius: 5px; }
|
||
</style>
|
||
</head>
|
||
<body>
|
||
<h1>🔧 Test de Funcionalidad de Menús</h1>
|
||
<p>Este test verificará que la funcionalidad de menús esté trabajando correctamente.</p>
|
||
|
||
<div id="results"></div>
|
||
|
||
<h2>🧪 Pruebas de API</h2>
|
||
<button onclick="testGetMenus()">📋 Probar get_menus.php</button>
|
||
<button onclick="testSaveMenu()">💾 Probar save_menu.php</button>
|
||
<button onclick="testDeleteMenu()">🗑️ Probar delete_menu.php</button>
|
||
<button onclick="clearResults()">🧽 Limpiar Resultados</button>
|
||
|
||
<div id="test-results"></div>
|
||
|
||
<script>
|
||
function clearResults() {
|
||
document.getElementById('test-results').innerHTML = '';
|
||
}
|
||
|
||
function showResult(title, data, isError = false) {
|
||
const div = document.createElement('div');
|
||
div.className = `result ${isError ? 'error' : 'success'}`;
|
||
div.innerHTML = `
|
||
<h3>${title}</h3>
|
||
<pre>${typeof data === 'object' ? JSON.stringify(data, null, 2) : data}</pre>
|
||
`;
|
||
document.getElementById('test-results').appendChild(div);
|
||
}
|
||
|
||
async function testGetMenus() {
|
||
try {
|
||
const response = await fetch('./api/get_menus.php');
|
||
const data = await response.json();
|
||
showResult('✅ GET Menús - Respuesta', data);
|
||
|
||
if (data.success && data.data.length > 0) {
|
||
showResult('📊 Total de menús encontrados', `${data.data.length} menús`);
|
||
} else if (data.success && data.data.length === 0) {
|
||
showResult('ℹ️ Sin menús', 'No se encontraron menús configurados');
|
||
}
|
||
} catch (error) {
|
||
showResult('❌ Error GET Menús', error.message, true);
|
||
}
|
||
}
|
||
|
||
async function testSaveMenu() {
|
||
const testMenu = {
|
||
name: 'Menú de Prueba',
|
||
menu_key: 'test_' + Date.now(),
|
||
description: 'Menú creado para prueba automática',
|
||
welcome_message: '¡Hola! Este es un menú de prueba. Selecciona una opción:',
|
||
status: 'active',
|
||
options: [
|
||
{
|
||
key: '1',
|
||
text: 'Opción 1',
|
||
action: 'message',
|
||
value: 'Respuesta de la opción 1',
|
||
order_index: 1
|
||
},
|
||
{
|
||
key: '2',
|
||
text: 'Opción 2',
|
||
action: 'message',
|
||
value: 'Respuesta de la opción 2',
|
||
order_index: 2
|
||
}
|
||
]
|
||
};
|
||
|
||
try {
|
||
const response = await fetch('./api/save_menu.php', {
|
||
method: 'POST',
|
||
headers: {
|
||
'Content-Type': 'application/json'
|
||
},
|
||
body: JSON.stringify(testMenu)
|
||
});
|
||
|
||
const data = await response.json();
|
||
showResult('✅ SAVE Menú - Respuesta', data);
|
||
|
||
if (data.success) {
|
||
// Actualizar lista después de crear
|
||
setTimeout(testGetMenus, 1000);
|
||
}
|
||
} catch (error) {
|
||
showResult('❌ Error SAVE Menú', error.message, true);
|
||
}
|
||
}
|
||
|
||
async function testDeleteMenu() {
|
||
// Primero obtener menús para encontrar uno que eliminar
|
||
try {
|
||
const getResponse = await fetch('./api/get_menus.php');
|
||
const getData = await getResponse.json();
|
||
|
||
if (getData.success && getData.data.length > 0) {
|
||
// Buscar un menú de prueba para eliminar
|
||
const testMenu = getData.data.find(menu => menu.menu_key.startsWith('test_'));
|
||
|
||
if (testMenu) {
|
||
const deleteResponse = await fetch('./api/delete_menu.php', {
|
||
method: 'POST',
|
||
headers: {
|
||
'Content-Type': 'application/json'
|
||
},
|
||
body: JSON.stringify({
|
||
menu_id: testMenu.id
|
||
})
|
||
});
|
||
|
||
const deleteData = await deleteResponse.json();
|
||
showResult(`🗑️ DELETE Menú (ID: ${testMenu.id})`, deleteData);
|
||
|
||
if (deleteData.success) {
|
||
// Actualizar lista después de eliminar
|
||
setTimeout(testGetMenus, 1000);
|
||
}
|
||
} else {
|
||
showResult('ℹ️ DELETE Menú', 'No se encontró un menú de prueba para eliminar. Crea uno primero.');
|
||
}
|
||
} else {
|
||
showResult('ℹ️ DELETE Menú', 'No hay menús para eliminar');
|
||
}
|
||
} catch (error) {
|
||
showResult('❌ Error DELETE Menú', error.message, true);
|
||
}
|
||
}
|
||
|
||
// Ejecutar test inicial
|
||
document.addEventListener('DOMContentLoaded', function() {
|
||
testGetMenus();
|
||
});
|
||
</script>
|
||
</body>
|
||
</html> |