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

Commit

Permalink
added test for organizer to edit series reg
Browse files Browse the repository at this point in the history
  • Loading branch information
dunkOnIT committed Sep 20, 2024
1 parent e64067a commit 4b4542a
Show file tree
Hide file tree
Showing 3 changed files with 44 additions and 4 deletions.
8 changes: 6 additions & 2 deletions app/services/registration_checker.rb
Original file line number Diff line number Diff line change
Expand Up @@ -74,7 +74,8 @@ def user_can_modify_registration!
raise RegistrationError.new(:unauthorized, ErrorCodes::USER_INSUFFICIENT_PERMISSIONS) unless can_administer_or_current_user?
raise RegistrationError.new(:forbidden, ErrorCodes::USER_EDITS_NOT_ALLOWED) unless @competition_info.registration_edits_allowed? || UserApi.can_administer?(@requester_user_id, @competition_info.id)
raise RegistrationError.new(:unauthorized, ErrorCodes::REGISTRATION_IS_REJECTED) if user_is_rejected?
raise RegistrationError.new(:forbidden, ErrorCodes::ALREADY_REGISTERED_IN_SERIES) if existing_registration_in_series?
raise RegistrationError.new(:forbidden, ErrorCodes::ALREADY_REGISTERED_IN_SERIES) if
existing_registration_in_series? && !UserApi.can_administer?(@requester_user_id, @competition_info.id)
end

def user_is_rejected?
Expand Down Expand Up @@ -173,6 +174,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
raise RegistrationError.new(:forbidden, ErrorCodes::ALREADY_REGISTERED_IN_SERIES) if
new_status == 'accepted' && existing_registration_in_series?

# Otherwise, organizers can make any status change they want to
return if UserApi.can_administer?(@requester_user_id, @competition_info.id)
Expand Down Expand Up @@ -211,7 +214,8 @@ def existing_registration_in_series?
return false if @competition_info.other_series_ids.nil?

@competition_info.other_series_ids.each do |comp_id|
return Registration.find("#{comp_id}-#{@requestee_user_id}").competing_status != 'cancelled'
series_reg = Registration.find("#{comp_id}-#{@requestee_user_id}")
return !%w[cancelled rejected].include?(series_reg.competing_status)
rescue Dynamoid::Errors::RecordNotFound
next
end
Expand Down
2 changes: 1 addition & 1 deletion spec/controllers/registration_controller_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -265,7 +265,7 @@
end
end

describe '#list_admin', :tag do
describe '#list_admin' do
before do
@competition = FactoryBot.build(:competition)
stub_json(CompetitionApi.url(@competition['id']), 200, @competition.except('qualifications'))
Expand Down
38 changes: 37 additions & 1 deletion spec/services/registration_checker_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -1386,7 +1386,7 @@
end
end

it 'cannot move to less than position 1', :tag2 do
it 'cannot move to less than position 1' do
@waiting_list.add(FactoryBot.create(:registration, registration_status: 'waiting_list').user_id)
@waiting_list.add(FactoryBot.create(:registration, registration_status: 'waiting_list').user_id)
@waiting_list.add(FactoryBot.create(:registration, registration_status: 'waiting_list').user_id)
Expand Down Expand Up @@ -1557,6 +1557,42 @@
it_behaves_like 'update succeed: qualification enforced', 'can register when minx average exists for ranking-average', ['minx']
end
end

describe '#update_registration_allowed!.organizer updates series reg' do
it 'organizer cant set status to accepted if attendee is accepted for another series comp' do
cancelled_registration = FactoryBot.create(:registration, registration_status: 'cancelled')
FactoryBot.create(:registration, user_id: cancelled_registration['user_id'], registration_status: 'accepted', competition_id: 'CubingZAWarmup2023')

series_competition_info = CompetitionInfo.new(FactoryBot.build(:competition, :series))

update_request = FactoryBot.build(:update_request, :organizer_for_user, user_id: cancelled_registration[:user_id], competing: { 'status' => 'accepted' })

expect {
RegistrationChecker.update_registration_allowed!(update_request, series_competition_info, update_request['submitted_by'])
}.to raise_error(RegistrationError) do |error|
expect(error.error).to eq(ErrorCodes::ALREADY_REGISTERED_IN_SERIES)
expect(error.http_status).to eq(:forbidden)
end
end

it 'organizer can update admin comment in attendees non-accepted series comp registration' do
cancelled_registration = FactoryBot.create(:registration, registration_status: 'cancelled')
FactoryBot.create(:registration, user_id: cancelled_registration['user_id'], registration_status: 'accepted', competition_id: 'CubingZAWarmup2023')

series_competition_info = CompetitionInfo.new(FactoryBot.build(:competition, :series))

update_request = FactoryBot.build(
:update_request,
:organizer_for_user,
user_id: cancelled_registration[:user_id],
competing: { 'admin_comment' => 'why they were cancelled' }
)

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

describe '#bulk_update' do
Expand Down

0 comments on commit 4b4542a

Please sign in to comment.