fix bug des tests

This commit is contained in:
2026-06-29 18:00:25 +02:00
parent baa1b8ccc0
commit 8e00161a75
4 changed files with 135 additions and 32 deletions

View File

@@ -1,15 +1,35 @@
const request = require("supertest");
const app = require("../src/app");
const prisma = require("../src/config/prisma");
// ------------------------
// Mock du mailer pour éviter envoi réel
// ------------------------
jest.mock("../src/config/mailer", () => ({
sendMail: jest.fn().mockResolvedValue(true),
}));
// ------------------------
// Réinitialisation DB avant tests
// ------------------------
beforeAll(async () => {
await prisma.claim.deleteMany();
await prisma.participation.deleteMany();
await prisma.ticket.deleteMany();
await prisma.user.deleteMany();
});
afterAll(async () => {
await prisma.$disconnect();
});
describe("THE TIP TOP - FULL E2E FLOW", () => {
let token;
let ticketCode = "ABC123";
// ------------------------
// 1. REGISTER
// ------------------------
// Test de l'inscription d'un utilisateur
test("Register user", async () => {
const res = await request(app)
.post("/api/auth/register")
@@ -17,73 +37,116 @@ describe("THE TIP TOP - FULL E2E FLOW", () => {
firstname: "Test",
lastname: "User",
email: "test@test.com",
password: "Password123"
password: "Password123",
});
// Vérification du code de statut attendu (201 pour succès, 409 si l'utilisateur existe déjà)
expect([201, 409]).toContain(res.statusCode);
});
// ------------------------
// 2. LOGIN
// ------------------------
// Test de la connexion d'un utilisateur
test("Login user", async () => {
// Validation du user pour bypasser vérification email
await prisma.user.update({
where: { email: "test@test.com" },
data: { isEmailVerified: true },
});
const res = await request(app)
.post("/api/auth/login")
.send({
email: "test@test.com",
password: "Password123"
password: "Password123",
});
// Vérification du code de statut attendu (200 pour succès)
expect(res.statusCode).toBe(200);
expect(res.body.token).toBeDefined();
token = res.body.token;
});
// ------------------------
// 3. PARTICIPATE GAME
// ------------------------
// Test de la participation à un jeu
test("Participate to game", async () => {
const res = await request(app)
.post("/api/game/participate")
.set("Authorization", `Bearer ${token}`)
.send({ code: ticketCode });
// Vérification du code de statut attendu
expect([200, 201, 404, 409, 400]).toContain(res.statusCode);
console.log("Ticket in DB before participate:", ticketCode);
});
// ------------------------
// 4. MY GAINS
// ------------------------
// Test de la récupération des gains d'un utilisateur
test("Get my gains", async () => {
const res = await request(app)
.get("/api/game/my-gains")
.set("Authorization", `Bearer ${token}`);
// Vérification du code de statut attendu
expect(res.statusCode).toBe(200);
expect(res.body.gains).toBeDefined();
});
// ------------------------
// 3. GENERER UN TICKET
// ------------------------
test("Create a ticket for testing", async () => {
const lot = await prisma.lot.create({
data: {
name: "Lot Test",
description: "Lot pour test E2E",
value: 10,
percentage: 100
},
});
const ticket = await prisma.ticket.create({
data: {
code: ticketCode,
lotId: lot.id
}
});
expect(ticket).toBeDefined();
expect(ticket.code).toBe(ticketCode);
});
// ------------------------
// 4. PARTICIPATE GAME
// ------------------------
test("Participate to game", async () => {
const res = await request(app)
.post("/api/game/participate")
.set("Authorization", `Bearer ${token}`)
.send({ code: ticketCode });
expect([200, 201, 404, 409, 400]).toContain(res.statusCode);
});
// ------------------------
// 5. MY GAINS
// ------------------------
test("Get my gains", async () => {
const res = await request(app)
.get("/api/game/my-gains")
.set("Authorization", `Bearer ${token}`);
expect(res.statusCode).toBe(200);
expect(res.body.gains).toBeDefined();
});
// ------------------------
// 5. ADMIN STATS
// 6. ADMIN STATS (CLIENT access denied)
// ------------------------
test("Admin stats - CLIENT access denied", async () => {
const res = await request(app)
.get("/api/admin/stats")
.set("Authorization", `Bearer ${token}`);
const res = await request(app)
.get("/api/admin/stats")
.set("Authorization", `Bearer ${token}`);
expect(res.statusCode).toBe(403);
expect(res.body.message || res.body).toBeDefined();
});
});
// Nous avons validé un flux E2E complet garantissant le bon fonctionnement global du système. La couverture actuelle est partielle et peut être enrichie pour couvrir les cas limites et les erreurs métier.
expect(res.statusCode).toBe(403);
expect(res.body.message || res.body).toBeDefined();
});
});