From 2514eedf427129483849c2dd742542b27cc2b4ed Mon Sep 17 00:00:00 2001 From: laurence Date: Sat, 14 Jun 2025 18:05:50 +0200 Subject: [PATCH 1/2] =?UTF-8?q?Bug=20booking=20sur=20date=20pass=C3=A9es?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- server.py | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/server.py b/server.py index 4084baeac..341f07b4f 100644 --- a/server.py +++ b/server.py @@ -1,4 +1,6 @@ import json +from datetime import datetime + from flask import Flask,render_template,request,redirect,flash,url_for @@ -46,7 +48,10 @@ def purchasePlaces(): competition = [c for c in competitions if c['name'] == request.form['competition']][0] club = [c for c in clubs if c['name'] == request.form['club']][0] placesRequired = int(request.form['places']) - competition['numberOfPlaces'] = int(competition['numberOfPlaces'])-placesRequired + if datetime.strptime(competition['date'], "%Y-%m-%d %H:%M:%S") < datetime.now(): + flash("You cannot book place in past competition") + return render_template('welcome.html', club=club, competitions=competitions) + competition['numberOfPlaces'] = int(competition['numberOfPlaces']) - placesRequired flash('Great-booking complete!') return render_template('welcome.html', club=club, competitions=competitions) From 3ff5a2873c64493d7e4e33b97c94c1d255828f90 Mon Sep 17 00:00:00 2001 From: laurence Date: Tue, 24 Jun 2025 14:52:12 +0200 Subject: [PATCH 2/2] added unit testing --- test/tests_unitaires/test_server.py | 34 +++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 test/tests_unitaires/test_server.py diff --git a/test/tests_unitaires/test_server.py b/test/tests_unitaires/test_server.py new file mode 100644 index 000000000..9ad2a14c0 --- /dev/null +++ b/test/tests_unitaires/test_server.py @@ -0,0 +1,34 @@ +import pytest +from server import app +from datetime import datetime, timedelta + +@pytest.fixture +def client(): + app.config['TESTING'] = True + app.secret_key = "test" # Nécessaire pour flash + with app.test_client() as client: + yield client + +def test_booking_past_competition(client, monkeypatch): + # Compétition passée (hier) + past_date = (datetime.now() - timedelta(days=1)).strftime("%Y-%m-%d %H:%M:%S") + test_competition = {"name": "Past Competition", "numberOfPlaces": "10", "date": past_date} + test_club = {"name": "Test Club", "email": "test@club.com", "points": "15"} + + monkeypatch.setattr("server.clubs", [test_club]) + monkeypatch.setattr("server.competitions", [test_competition]) + + response = client.post("/purchasePlaces", data={ + "competition": "Past Competition", + "club": "Test Club", + "places": "2" + }, follow_redirects=True) + + # Vérifie que le message d'erreur apparaît + assert b"You cannot book place in past competition" in response.data + + # Vérifie que les places n'ont pas été modifiées + assert test_competition["numberOfPlaces"] == "10" + + # Vérifie que les points du club n'ont pas changé + assert test_club["points"] == "15"