Skip to content
This repository has been archived by the owner on Jan 3, 2025. It is now read-only.

Commit

Permalink
Allow organizers to approve registrations when there is no competitor…
Browse files Browse the repository at this point in the history
… limit (#722)

* handle case where no competitor limit is set

* rubocop

* simplification and shifting compeitor limit check

* not assigning the competitor count separately like a fool
  • Loading branch information
dunkOnIT authored Oct 29, 2024
1 parent bff0ec7 commit 13704e8
Show file tree
Hide file tree
Showing 3 changed files with 14 additions and 2 deletions.
5 changes: 4 additions & 1 deletion app/services/registration_checker.rb
Original file line number Diff line number Diff line change
Expand Up @@ -172,8 +172,11 @@ def validate_update_status!
current_status = @registration.competing_status

raise RegistrationError.new(:unprocessable_entity, ErrorCodes::INVALID_REQUEST_DATA) unless Registration::REGISTRATION_STATES.include?(new_status)

competitor_limit = @competition_info.competitor_limit
raise RegistrationError.new(:forbidden, ErrorCodes::COMPETITOR_LIMIT_REACHED) if
new_status == 'accepted' && Registration.accepted_competitors_count(@competition_info.competition_id) == @competition_info.competitor_limit
new_status == 'accepted' && competitor_limit > 0 && Registration.accepted_competitors_count(@competition_info.competition_id) >= competitor_limit

raise RegistrationError.new(:forbidden, ErrorCodes::ALREADY_REGISTERED_IN_SERIES) if
new_status == 'accepted' && existing_registration_in_series?

Expand Down
2 changes: 1 addition & 1 deletion lib/competition_info.rb
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ def guest_limit
end

def registration_open?
@competition_json['registration_open'] <= Time.now && @competition_json['registration_close'] > Time.now
@competition_json['registration_open'] <= Time.now.utc && @competition_json['registration_close'] > Time.now.utc
end

def using_wca_payment?
Expand Down
9 changes: 9 additions & 0 deletions spec/services/registration_checker_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -1104,6 +1104,15 @@
.not_to raise_error
end

it 'organizer can accept registrations if there is no limit' do
registration = FactoryBot.create(:registration, registration_status: 'pending')
competition_info = CompetitionInfo.new(FactoryBot.build(:competition, competitor_limit: 0))
update_request = FactoryBot.build(:update_request, :organizer_for_user, user_id: registration[:user_id], competing: { 'status' => 'accepted' })

expect { RegistrationChecker.update_registration_allowed!(update_request, competition_info, update_request['submitted_by']) }
.not_to raise_error
end

it 'user can change state to cancelled' do
override_registration = FactoryBot.create(:registration, user_id: 188000, registration_status: 'waiting_list')
update_request = FactoryBot.build(:update_request, user_id: override_registration[:user_id], competing: { 'status' => 'cancelled' })
Expand Down

0 comments on commit 13704e8

Please sign in to comment.