Skip to content

Conversation

@elof-dev
Copy link

Summary

This pull request is to prevent users from booking more places than those available in a competition.
Previously, a competition could have negtive places

Changes Made

server.py

  • Added a new validation inside purchasePlaces():
    if placesRequired > int(competition['numberOfPlaces']):
        flash("Cannot book more places than available for this competition.")
        return render_template('welcome.html', club=club, competitions=competitions)

tests/unit/test_book_more_than_places_available.py

New test file to test purchasePlaces() behaviour with more book places than available in the competition

Testing

  • 1 test pass successfully using pytest

- Updated showSummary() in server.py to handle email validation and error messages
- Modified index.html to display flash messages correctly
- Created tests/ folder with conftest.py and test_show_summary.py for unit testing
- Added .flaskenv for local environment configuration
- Updated .gitignore to include .venv and exclude tests/ folder
- Updated requirements.txt to add pytest dependency
- Updated purchasePlaces() to check if the club has enough points before confirming a booking
- Added a new test file with 2 unit tests to verify point validation logic
- Updated purchasePlaces() to check avoid clubs booking more than 12 places per competition
- Added a new test file with 2 unit tests to verify point validation logic
- Updated book() to avoid clubs booking in past competition
- Added a new test file with 2 unit tests
- Added missing line in purchasePlaces() to decrease club points after a valid booking
- Created test to verify:
  - club points decrease when booking succeeds
- Updated index.html to include a simple grey table listing all clubs and their points
- Modified server.py to pass the clubs data to the index template
- Added test_display_clubs_points.py to verify that:
  - the page loads successfully
  - each club name and its points appear correctly in the HTML
- Updated purchasePlaces() to handle invalid inputs:
  • Added a check for empty input
  • Added a try/except block to catch non-numeric values
  • Added a condition to reject zero or negative values

- Created test_invalid_number_of_places_booking.py:
  • Test 1: valid booking (success)
  • Test 2: zero places (error)
  • Test 3: negative places (error)
  • Test 4: empty input (error)
  • Test 5: non-numeric input (error)
- Added validation in purchasePlaces() to prevent users from booking
  more places than the competition has available
- Added test_booking_more_than_available.py to verify:
  • booking above available places shows proper error message
  • competition and club data remain unchanged
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant