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: 7 additions & 1 deletion server.py
Original file line number Diff line number Diff line change
Expand Up @@ -48,14 +48,20 @@ def book(competition,club):

@app.route('/purchasePlaces',methods=['POST'])
def purchasePlaces():
MAX_BOOKING = 12
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'])
club_points = int(club['points'])

if placesRequired > club_points:
flash("Cannot book more places than club points.")
return render_template('welcome.html', club=club, competitions=competitions)
return render_template('welcome.html', club=club, competitions=competitions)


if placesRequired > MAX_BOOKING:
flash(f"Cannot book more than {MAX_BOOKING} places for this competition.")
return render_template('welcome.html', club=club, competitions=competitions)

competition['numberOfPlaces'] = int(competition['numberOfPlaces']) - placesRequired
flash('Great - booking complete!')
Expand Down
47 changes: 47 additions & 0 deletions tests/unit/test_book_more_than_12_places.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
import server

"""
Unit test file to check that clubs cannot book more than 12 places.

Test 1: Club A has 13 points and competition 1 has 25 places.
- Book 12 places
- status code 200
- message: "Great - booking complete!"
- competition places decreased

Test 2: Club A has 13 points and competition 1 has 25 places.
- Book 13 places
- status code 200
- message contains "Cannot book more than"
- competition places unchanged
"""


def test_book_12_places_allowed(client):
server.clubs = [{"name": "Club A", "points": "13"}]
server.competitions = [{"name": "Comp 1", "numberOfPlaces": "25"}]

response = client.post('/purchasePlaces', data={
'competition': 'Comp 1',
'club': 'Club A',
'places': '12'
})

assert response.status_code == 200
assert b"Great - booking complete!" in response.data
assert int(server.competitions[0]['numberOfPlaces']) == 13


def test_cannot_book_more_than_12_places(client):
server.clubs = [{"name": "Club A", "points": "13"}]
server.competitions = [{"name": "Comp 1", "numberOfPlaces": "25"}]

response = client.post('/purchasePlaces', data={
'competition': 'Comp 1',
'club': 'Club A',
'places': '13'
})

assert response.status_code == 200
assert b"Cannot book more than" in response.data
assert int(server.competitions[0]['numberOfPlaces']) == 25