Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 8 additions & 0 deletions server.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
import json
from flask import Flask,render_template,request,redirect,flash,url_for
from datetime import datetime


def loadClubs():
Expand Down Expand Up @@ -39,8 +40,15 @@ def showSummary():
def book(competition,club):
foundClub = [c for c in clubs if c['name'] == club][0]
foundCompetition = [c for c in competitions if c['name'] == competition][0]

competition_date = datetime.strptime(foundCompetition['date'], "%Y-%m-%d %H:%M:%S")
if competition_date < datetime.now():
flash("This competition has already taken place, booking is not allowed.")
return render_template('welcome.html', club=foundClub, competitions=competitions)

if foundClub and foundCompetition:
return render_template('booking.html',club=foundClub,competition=foundCompetition)

else:
flash("Something went wrong-please try again")
return render_template('welcome.html', club=club, competitions=competitions)
Expand Down
34 changes: 34 additions & 0 deletions tests/unit/test_book_past_competition.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
import server
from datetime import datetime, timedelta

"""
Unit test file to check that booking is not allowed for past competitions

Test 1: A competition in the future -> user can access booking page
- status code 200
- page contains "How many places?"
Test 2: A competition in the past -> booking is refused.
- status code 200
- message contains "This competition has already taken place"
"""

def test_can_book_future_competition(client):
future_date = (datetime.now() + timedelta(days=5)).strftime("%Y-%m-%d %H:%M:%S")
server.competitions = [{"name": "Future Comp", "date": future_date, "numberOfPlaces": "10"}]
server.clubs = [{"name": "Club A", "email": "a@a.com", "points": "10"}]

response = client.get('/book/Future Comp/Club A')

assert response.status_code == 200
assert b"How many places?" in response.data


def test_cannot_book_past_competition(client):
past_date = (datetime.now() - timedelta(days=5)).strftime("%Y-%m-%d %H:%M:%S")
server.competitions = [{"name": "Old Comp", "date": past_date, "numberOfPlaces": "10"}]
server.clubs = [{"name": "Club A", "email": "a@a.com", "points": "10"}]

response = client.get('/book/Old Comp/Club A')

assert response.status_code == 200
assert b"This competition has already taken place" in response.data