feat: New script for booking test function in shell and python
This commit is contained in:
@@ -190,18 +190,18 @@ class TestCrossFitBookerIsSessionBookable:
|
||||
assert result is False
|
||||
|
||||
|
||||
class TestCrossFitBookerRunBookingCycle:
|
||||
"""Test cases for run_booking_cycle method"""
|
||||
class TestCrossFitBookerExcuteCycle:
|
||||
"""Test cases for execute_cycle method"""
|
||||
|
||||
@patch('crossfit_booker.CrossFitBooker.get_available_sessions')
|
||||
@patch('crossfit_booker.CrossFitBooker.is_session_bookable')
|
||||
@patch('crossfit_booker.CrossFitBooker.matches_preferred_session')
|
||||
@patch('crossfit_booker.CrossFitBooker.book_session')
|
||||
async def test_run_booking_cycle_no_sessions(self, mock_book_session, mock_matches_preferred, mock_is_bookable, mock_get_sessions):
|
||||
"""Test run_booking_cycle with no available sessions"""
|
||||
async def test_execute_cycle_no_sessions(self, mock_book_session, mock_matches_preferred, mock_is_bookable, mock_get_sessions):
|
||||
"""Test execute_cycle with no available sessions"""
|
||||
mock_get_sessions.return_value = {"success": False}
|
||||
booker = CrossFitBooker()
|
||||
await booker.run_booking_cycle(datetime.now(pytz.timezone("Europe/Paris")))
|
||||
await booker.execute_cycle(datetime.now(pytz.timezone("Europe/Paris")))
|
||||
mock_get_sessions.assert_called_once()
|
||||
mock_book_session.assert_not_called()
|
||||
|
||||
@@ -209,8 +209,8 @@ class TestCrossFitBookerRunBookingCycle:
|
||||
@patch('crossfit_booker.CrossFitBooker.is_session_bookable')
|
||||
@patch('crossfit_booker.CrossFitBooker.matches_preferred_session')
|
||||
@patch('crossfit_booker.CrossFitBooker.book_session')
|
||||
async def test_run_booking_cycle_with_sessions(self, mock_book_session, mock_matches_preferred, mock_is_bookable, mock_get_sessions):
|
||||
"""Test run_booking_cycle with available sessions"""
|
||||
async def test_execute_cycle_with_sessions(self, mock_book_session, mock_matches_preferred, mock_is_bookable, mock_get_sessions):
|
||||
"""Test execute_cycle with available sessions"""
|
||||
# Use current date for the session to ensure it falls within 0-2 day window
|
||||
current_time = datetime.now(pytz.timezone("Europe/Paris"))
|
||||
session_date = current_time.date()
|
||||
@@ -233,7 +233,7 @@ class TestCrossFitBookerRunBookingCycle:
|
||||
mock_book_session.return_value = True
|
||||
|
||||
booker = CrossFitBooker()
|
||||
await booker.run_booking_cycle(current_time)
|
||||
await booker.execute_cycle(current_time)
|
||||
|
||||
mock_get_sessions.assert_called_once()
|
||||
mock_is_bookable.assert_called_once()
|
||||
@@ -245,22 +245,22 @@ class TestCrossFitBookerRun:
|
||||
"""Test cases for run method"""
|
||||
|
||||
@patch('crossfit_booker.CrossFitBooker.login')
|
||||
@patch('crossfit_booker.CrossFitBooker.run_booking_cycle')
|
||||
async def test_run_auth_failure(self, mock_run_booking_cycle, mock_login):
|
||||
@patch('crossfit_booker.CrossFitBooker.execute_cycle')
|
||||
async def test_run_auth_failure(self, mock_execute_cycle, mock_login):
|
||||
"""Test run with authentication failure"""
|
||||
mock_login.return_value = False
|
||||
booker = CrossFitBooker()
|
||||
with patch.object(booker, 'run', new=booker.run) as mock_run:
|
||||
await booker.run()
|
||||
mock_login.assert_called_once()
|
||||
mock_run_booking_cycle.assert_not_called()
|
||||
mock_execute_cycle.assert_not_called()
|
||||
|
||||
@patch('crossfit_booker.CrossFitBooker.login')
|
||||
@patch('crossfit_booker.CrossFitBooker.run_booking_cycle')
|
||||
@patch('crossfit_booker.CrossFitBooker.execute_cycle')
|
||||
@patch('crossfit_booker.CrossFitBooker.quit')
|
||||
@patch('time.sleep')
|
||||
@patch('datetime.datetime')
|
||||
async def test_run_booking_outside_window(self, mock_datetime, mock_sleep, mock_quit, mock_run_booking_cycle, mock_login):
|
||||
async def test_run_booking_outside_window(self, mock_datetime, mock_sleep, mock_quit, mock_execute_cycle, mock_login):
|
||||
"""Test run with booking outside window"""
|
||||
mock_login.return_value = True
|
||||
mock_quit.return_value = None # Prevent actual exit
|
||||
@@ -292,8 +292,8 @@ class TestCrossFitBookerRun:
|
||||
# Verify login was called
|
||||
mock_login.assert_called_once()
|
||||
|
||||
# Verify run_booking_cycle was NOT called since we're outside the booking window
|
||||
mock_run_booking_cycle.assert_not_called()
|
||||
# Verify execute_cycle was NOT called since we're outside the booking window
|
||||
mock_execute_cycle.assert_not_called()
|
||||
|
||||
# Verify quit was called (due to KeyboardInterrupt)
|
||||
mock_quit.assert_called_once()
|
||||
|
||||
Reference in New Issue
Block a user