| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178 |
- const { PrismaClient } = require('@prisma/client');
- const prisma = new PrismaClient();
- async function testCompany5Integration() {
- try {
- console.log('🔍 Test d\'intégration frontend - endpoint reservations/company/5/sum');
-
- const companyId = 5; // test-company
-
- // 1. Vérifier la compagnie 5
- const company = await prisma.company.findUnique({
- where: { id: companyId },
- include: {
- vehicules: {
- include: {
- trajets: {
- include: {
- _count: {
- select: {
- reservations: true,
- },
- },
- },
- },
- },
- },
- },
- });
-
- if (!company) {
- console.log('❌ Compagnie 5 non trouvée');
- return;
- }
-
- console.log(`\n🏢 Compagnie ${companyId}: ${company.name}`);
- console.log(` - Véhicules: ${company.vehicules.length}`);
-
- if (company.vehicules.length > 0) {
- company.vehicules.forEach(vehicule => {
- console.log(` - Véhicule ${vehicule.id}: ${vehicule.trajets.length} trajets`);
- vehicule.trajets.forEach(trajet => {
- console.log(` - Trajet ${trajet.id}: ${trajet._count.reservations} réservations, fermé=${trajet.registrationClosed}`);
- });
- });
- }
-
- // 2. Simuler l'appel de l'endpoint (comme le ferait le frontend)
- console.log(`\n🧪 Test de l'endpoint pour la compagnie ${companyId}:`);
-
- const reservations = await prisma.reservation.findMany({
- where: {
- trajet: {
- vehicule: {
- companyId: companyId,
- },
- registrationClosed: true, // Uniquement les trajets fermés
- },
- },
- include: {
- trajet: {
- select: {
- id: true,
- pricePerSeat: true,
- registrationClosed: true,
- vehicule: {
- select: {
- company: {
- select: {
- name: true,
- },
- },
- },
- },
- },
- },
- },
- });
-
- const totalAmount = reservations.reduce(
- (sum, reservation) => sum + (reservation.trajet?.pricePerSeat || 0),
- 0,
- );
-
- const result = {
- companyId: companyId,
- totalReservations: reservations.length,
- totalAmount: totalAmount,
- };
-
- console.log('📊 Résultat de l\'endpoint pour la compagnie 5:');
- console.log(JSON.stringify(result, null, 2));
-
- // 3. Si aucune réservation, créer un trajet fermé pour le test
- if (reservations.length === 0) {
- console.log('\n🔧 Aucune réservation trouvée, création d\'un test...');
-
- // Vérifier s'il y a des trajets pour cette compagnie
- const allTrajets = await prisma.trajet.findMany({
- where: {
- vehicule: {
- companyId: companyId,
- },
- },
- });
-
- if (allTrajets.length > 0) {
- // Fermer le premier trajet et créer quelques réservations de test
- const trajetId = allTrajets[0].id;
-
- console.log(` - Fermeture du trajet ${trajetId} pour le test...`);
- await prisma.trajet.update({
- where: { id: trajetId },
- data: { registrationClosed: true },
- });
-
- // Refaire le test
- const newReservations = await prisma.reservation.findMany({
- where: {
- trajet: {
- vehicule: {
- companyId: companyId,
- },
- registrationClosed: true,
- },
- },
- include: {
- trajet: {
- select: {
- pricePerSeat: true,
- },
- },
- },
- });
-
- const newTotalAmount = newReservations.reduce(
- (sum, reservation) => sum + (reservation.trajet?.pricePerSeat || 0),
- 0,
- );
-
- const newResult = {
- companyId: companyId,
- totalReservations: newReservations.length,
- totalAmount: newTotalAmount,
- };
-
- console.log('📊 Nouveau résultat après fermeture du trajet:');
- console.log(JSON.stringify(newResult, null, 2));
-
- // Remettre en ouvert
- await prisma.trajet.update({
- where: { id: trajetId },
- data: { registrationClosed: false },
- });
-
- console.log(' - Trajet remis en ouvert');
- } else {
- console.log(' - Aucun trajet trouvé pour cette compagnie');
- }
- }
-
- // 4. Test de la logique frontend
- console.log('\n✅ Test de la logique frontend pour la compagnie 5:');
- console.log(` - URL appelée: /api/reservations/company/5/sum`);
- console.log(` - reservationsSumResult?.totalAmount: ${result.totalAmount}`);
- console.log(` - reservationsSum.value sera défini à: ${result.totalAmount}`);
- console.log(` - Type: ${typeof result.totalAmount} (attendu: number)`);
-
- console.log('\n✅ Test d\'intégration terminé avec succès !');
-
- } catch (error) {
- console.error('❌ Erreur lors du test:', error);
- } finally {
- await prisma.$disconnect();
- }
- }
- testCompany5Integration();
|