diff --git a/app/services/registration_checker.rb b/app/services/registration_checker.rb index d49cc1bc..9faae9fb 100644 --- a/app/services/registration_checker.rb +++ b/app/services/registration_checker.rb @@ -173,7 +173,8 @@ def validate_update_status! raise RegistrationError.new(:unprocessable_entity, ErrorCodes::INVALID_REQUEST_DATA) unless Registration::REGISTRATION_STATES.include?(new_status) 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' && Registration.accepted_competitors_count(@competition_info.competition_id) == @competition_info.competitor_limit && + @competition_info.competitor_limit != 0 raise RegistrationError.new(:forbidden, ErrorCodes::ALREADY_REGISTERED_IN_SERIES) if new_status == 'accepted' && existing_registration_in_series? diff --git a/spec/services/registration_checker_spec.rb b/spec/services/registration_checker_spec.rb index f1262875..0c02fc39 100644 --- a/spec/services/registration_checker_spec.rb +++ b/spec/services/registration_checker_spec.rb @@ -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' })