initial
This commit is contained in:
186
test-user-endpoints.ts
Normal file
186
test-user-endpoints.ts
Normal file
@@ -0,0 +1,186 @@
|
||||
// Script para probar y verificar los endpoints del User Dashboard
|
||||
// Ejecutar con: node --loader ts-node/esm test-user-endpoints.ts
|
||||
|
||||
import { PrismaClient } from '@prisma/client'
|
||||
|
||||
const prisma = new PrismaClient()
|
||||
|
||||
async function testUserEndpoints() {
|
||||
console.log('🧪 Testing User Dashboard Endpoints...\n')
|
||||
|
||||
// ID de usuario de prueba (reemplazar con tu Discord ID)
|
||||
const TEST_USER_ID = '123456789' // CAMBIAR POR TU ID
|
||||
|
||||
try {
|
||||
// ========================================
|
||||
// 1. VERIFICAR/CREAR SUSCRIPCIÓN
|
||||
// ========================================
|
||||
console.log('1️⃣ Verificando UserSubscription...')
|
||||
|
||||
let subscription = await prisma.userSubscription.findUnique({
|
||||
where: { userId: TEST_USER_ID }
|
||||
})
|
||||
|
||||
if (!subscription) {
|
||||
console.log(' ⚠️ No se encontró suscripción. Creando una de prueba...')
|
||||
|
||||
// Primero asegurar que el usuario existe
|
||||
await prisma.user.upsert({
|
||||
where: { id: TEST_USER_ID },
|
||||
create: {
|
||||
id: TEST_USER_ID,
|
||||
username: 'TestUser',
|
||||
discriminator: '0000',
|
||||
avatar: null
|
||||
},
|
||||
update: {}
|
||||
})
|
||||
|
||||
// Luego crear la suscripción
|
||||
subscription = await prisma.userSubscription.create({
|
||||
data: {
|
||||
user: { connect: { id: TEST_USER_ID } },
|
||||
importLimit: 500,
|
||||
maxVolume: 200,
|
||||
recommendationLevel: 'pro',
|
||||
expiresAt: new Date(Date.now() + 30 * 24 * 60 * 60 * 1000) // 30 días
|
||||
}
|
||||
})
|
||||
console.log(' ✅ Suscripción creada:', subscription)
|
||||
} else {
|
||||
console.log(' ✅ Suscripción encontrada:', subscription)
|
||||
}
|
||||
|
||||
// ========================================
|
||||
// 2. VERIFICAR/CREAR PLAYLISTS
|
||||
// ========================================
|
||||
console.log('\n2️⃣ Verificando MusicPlaylists...')
|
||||
|
||||
const existingPlaylists = await prisma.musicPlaylist.findMany({
|
||||
where: { userId: TEST_USER_ID },
|
||||
include: { _count: { select: { tracks: true } } }
|
||||
})
|
||||
|
||||
if (existingPlaylists.length === 0) {
|
||||
console.log(' ⚠️ No se encontraron playlists. Creando algunas de prueba...')
|
||||
|
||||
const guildId = '987654321' // ID de prueba de servidor
|
||||
|
||||
const playlist1 = await prisma.musicPlaylist.create({
|
||||
data: {
|
||||
userId: TEST_USER_ID,
|
||||
guildId: guildId,
|
||||
name: 'Favoritas',
|
||||
description: 'Mis canciones favoritas',
|
||||
isDefault: true
|
||||
}
|
||||
})
|
||||
|
||||
const playlist2 = await prisma.musicPlaylist.create({
|
||||
data: {
|
||||
userId: TEST_USER_ID,
|
||||
guildId: guildId,
|
||||
name: 'Rock Épico',
|
||||
description: 'Lo mejor del rock clásico',
|
||||
isDefault: false
|
||||
}
|
||||
})
|
||||
|
||||
console.log(' ✅ Playlists creadas:', [playlist1.name, playlist2.name])
|
||||
} else {
|
||||
console.log(` ✅ ${existingPlaylists.length} playlists encontradas:`)
|
||||
existingPlaylists.forEach(p => {
|
||||
console.log(` - ${p.name} (${p._count.tracks} tracks)`)
|
||||
})
|
||||
}
|
||||
|
||||
// ========================================
|
||||
// 3. CREAR CUPÓN DE PRUEBA
|
||||
// ========================================
|
||||
console.log('\n3️⃣ Creando cupón de prueba...')
|
||||
|
||||
const COUPON_CODE = 'TEST-VIP-2024'
|
||||
|
||||
let coupon = await prisma.coupon.findUnique({
|
||||
where: { code: COUPON_CODE }
|
||||
})
|
||||
|
||||
if (!coupon) {
|
||||
coupon = await prisma.coupon.create({
|
||||
data: {
|
||||
code: COUPON_CODE,
|
||||
type: 'ALL_ACCESS',
|
||||
value: 1000,
|
||||
maxUses: 10,
|
||||
usedCount: 0,
|
||||
daysValid: 30,
|
||||
expiresAt: new Date(Date.now() + 365 * 24 * 60 * 60 * 1000), // 1 año
|
||||
createdBy: 'system'
|
||||
}
|
||||
})
|
||||
console.log(` ✅ Cupón creado: ${COUPON_CODE}`)
|
||||
} else {
|
||||
console.log(` ✅ Cupón ya existe: ${COUPON_CODE}`)
|
||||
}
|
||||
console.log(` Usos: ${coupon.usedCount}/${coupon.maxUses}`)
|
||||
console.log(` Expira: ${coupon.expiresAt}`)
|
||||
|
||||
// ========================================
|
||||
// 4. VERIFICAR ESTRUCTURA DE RESPUESTA
|
||||
// ========================================
|
||||
console.log('\n4️⃣ Simulando respuesta de /api/user/me...')
|
||||
|
||||
const userDataResponse = {
|
||||
id: TEST_USER_ID,
|
||||
username: 'TestUser',
|
||||
avatar: null,
|
||||
subscription: subscription,
|
||||
level: 1,
|
||||
xp: 0,
|
||||
nextLevelXp: 100
|
||||
}
|
||||
|
||||
console.log(' ✅ Estructura correcta:', JSON.stringify(userDataResponse, null, 2))
|
||||
|
||||
console.log('\n5️⃣ Simulando respuesta de /api/user/playlists...')
|
||||
const playlists = await prisma.musicPlaylist.findMany({
|
||||
where: { userId: TEST_USER_ID },
|
||||
include: { _count: { select: { tracks: true } } },
|
||||
orderBy: { updatedAt: 'desc' }
|
||||
})
|
||||
console.log(` ✅ ${playlists.length} playlists retornadas`)
|
||||
|
||||
// ========================================
|
||||
// RESUMEN
|
||||
// ========================================
|
||||
console.log('\n' + '='.repeat(50))
|
||||
console.log('✅ VERIFICACIÓN COMPLETADA')
|
||||
console.log('='.repeat(50))
|
||||
console.log(`
|
||||
📊 Resumen:
|
||||
- Usuario: ${TEST_USER_ID}
|
||||
- Suscripción VIP: ${subscription.expiresAt ? 'Activa hasta ' + subscription.expiresAt.toLocaleDateString() : 'Inactiva'}
|
||||
- Playlists: ${playlists.length}
|
||||
- Cupón de prueba: ${COUPON_CODE}
|
||||
|
||||
🧪 Para probar manualmente:
|
||||
1. Inicia sesión en http://localhost:5173
|
||||
2. Ve a /dash/me
|
||||
3. Deberías ver:
|
||||
✓ VIP Status: "VIP Active"
|
||||
✓ Volume Limit: ${subscription.maxVolume}%
|
||||
✓ Import Limit: ${subscription.importLimit}
|
||||
4. Canjea el cupón: ${COUPON_CODE}
|
||||
`)
|
||||
|
||||
} catch (error) {
|
||||
console.error('❌ Error:', error)
|
||||
} finally {
|
||||
await prisma.$disconnect()
|
||||
}
|
||||
}
|
||||
|
||||
// Ejecutar
|
||||
testUserEndpoints()
|
||||
.then(() => process.exit(0))
|
||||
.catch(console.error)
|
||||
Reference in New Issue
Block a user