Skip to content

Conversation

@elof-dev
Copy link

Summary

This pull request is to fix a new issue found. The application crashes when clubs.json or competitions.json not found or invalid format.

Changes Made

  • Refactored club and competition loading to use a shared function with error handling for missing files, malformed JSON, and missing keys
  • Added unit tests to verify the behavior and error logging when invalid or missing JSON files

Testing

4 tests created and executed successfully using pytest
test1 : File not found -> warning logged, empty list returned
test2 : File found but invalid JSON structure -> warning logged, empty list returned
test3 : File found but key clubs is missing -> warning logged, empty list returned
test4 : Valid file with correct structure -> data returned correctly

- 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
- Update server.py to add cumulative validation to purchasePlaces()
- Update existing test file with:
  • cumulative booking rejected (6 + 7)
  • cumulative booking accepted (6 + 5)
- Updated showSummary() and purchasePlaces() to use the club from the session rather than form data, preventing users from booking on behalf of other clubs.
- Removed the club field from the booking.html form
- Updated conftest.py to add the session logic
- Updated test_book_place_with_enough_point, just to change the name of the club in the test (club A, because it's club A in the confest session)
- Created test_session_secure_club_auth to ensure bookings are made for the logged-in club only.
- Refactored club and competition loading to use a shared function with error handling for missing files, malformed JSON, and missing keys
- Added unit tests to verify the behavior and error logging when invalid or missing JSON files
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