diff --git a/app/models/sponsor.rb b/app/models/sponsor.rb index a4ab7caa7..0f40b2033 100644 --- a/app/models/sponsor.rb +++ b/app/models/sponsor.rb @@ -53,7 +53,9 @@ class Sponsor < ApplicationRecord mount_uploader(:avatar, AvatarUploader) def coach_spots - number_of_coaches || (seats / 2.0).round + return number_of_coaches if number_of_coaches.present? + + seats.present? ? (seats / 2.0).round : nil end def self.latest diff --git a/spec/models/sponsor_spec.rb b/spec/models/sponsor_spec.rb index dd56f1ae5..a68275d05 100644 --- a/spec/models/sponsor_spec.rb +++ b/spec/models/sponsor_spec.rb @@ -64,4 +64,24 @@ .with_values(%i[hidden standard bronze silver gold community]) end end + + describe '#coach_spots' do + it 'returns number_of_coaches when present' do + sponsor = Fabricate.build(:sponsor, number_of_coaches: 4, seats: 10) + + expect(sponsor.coach_spots).to eq(4) + end + + it 'falls back to half the seats rounded' do + sponsor = Fabricate.build(:sponsor, number_of_coaches: nil, seats: 15) + + expect(sponsor.coach_spots).to eq(8) + end + + it 'does not raise when both seats and number_of_coaches are missing' do + sponsor = Fabricate.build(:sponsor, number_of_coaches: nil, seats: nil) + + expect(sponsor.coach_spots).to be_nil + end + end end