diff --git a/app/models/sponsor.rb b/app/models/sponsor.rb index 72df8db49..e6c97a0fe 100644 --- a/app/models/sponsor.rb +++ b/app/models/sponsor.rb @@ -34,6 +34,8 @@ class Sponsor < ActiveRecord::Base validates :level, inclusion: { in: Sponsor.levels.keys } validates :name, :address, :avatar, :website, :level, presence: true validate :website_is_url, if: :website? + validates :number_of_coaches, presence: true, numericality: { greater_than_or_equal_to: 0, only_integer: true } + validates :seats, presence: true, numericality: { greater_tha_or_equal_to: 0, only_integer: true } default_scope -> { order('updated_at desc') } scope :active, -> { where.not(level: 'hidden') } diff --git a/spec/controllers/admin/sponsors_controller_spec.rb b/spec/controllers/admin/sponsors_controller_spec.rb index f5235628b..4da2f7e65 100644 --- a/spec/controllers/admin/sponsors_controller_spec.rb +++ b/spec/controllers/admin/sponsors_controller_spec.rb @@ -36,7 +36,7 @@ expect do post :create, sponsor: { - name: 'name', website: 'https://example.com', seats: 40, + name: 'name', website: 'https://example.com', seats: 40, number_of_coaches: 1, address: address, avatar: avatar } end.to change(Sponsor, :count).by(1) @@ -48,7 +48,7 @@ expect do post :create, sponsor: { - name: 'name', website: 'https://example.com', seats: 40, + name: 'name', website: 'https://example.com', seats: 40, number_of_coaches: 1, address: address, avatar: avatar, contact_ids: [member.id, member1.id] } end.to change(Sponsor, :count).by(1) @@ -60,7 +60,7 @@ expect do post :create, sponsor: { - name: 'name', website: 'https://example.com', seats: 40, + name: 'name', website: 'https://example.com', seats: 40, number_of_coaches: 1, address: address, avatar: avatar, contact_ids: [member.id, member1.id] } end.to change(Sponsor, :count).by(1) @@ -72,7 +72,7 @@ expect do post :create, sponsor: { - name: 'name', website: 'https://example.com', seats: 40, + name: 'name', website: 'https://example.com', seats: 40, number_of_coaches: 1, address: Fabricate(:address, latitude: '54.47474', longitude: '-0.12345'), avatar: avatar, members: [] } diff --git a/spec/fabricators/sponsor_fabricator.rb b/spec/fabricators/sponsor_fabricator.rb index 80f336a83..762fd74ca 100644 --- a/spec/fabricators/sponsor_fabricator.rb +++ b/spec/fabricators/sponsor_fabricator.rb @@ -10,6 +10,8 @@ website { "http://#{Faker::Internet.domain_name}" } avatar { Rack::Test::UploadedFile.new(Rails.root.join('app', 'assets', 'images', 'sponsors', sponsor_image), 'image/png') } address + seats { Faker::Number.between(from: 1, to: 50) } + number_of_coaches { Faker::Number.between(from: 1, to: 50) } end Fabricator(:sponsor_full, from: :sponsor) do diff --git a/spec/fabricators/workshop_fabricator.rb b/spec/fabricators/workshop_fabricator.rb index 388d3dd6d..584243c20 100644 --- a/spec/fabricators/workshop_fabricator.rb +++ b/spec/fabricators/workshop_fabricator.rb @@ -7,7 +7,7 @@ workshop: workshop, sponsor: Fabricate(:sponsor, seats: transients[:student_count] || 10, - number_of_coaches: transients[:coach_count || 10]), + number_of_coaches: transients[:coach_count] || 10), host: true) end diff --git a/spec/features/admin/manage_sponsor_spec.rb b/spec/features/admin/manage_sponsor_spec.rb index afef974bd..d5846323b 100644 --- a/spec/features/admin/manage_sponsor_spec.rb +++ b/spec/features/admin/manage_sponsor_spec.rb @@ -18,6 +18,7 @@ fill_in 'Website', with: 'https://www.sponsorname.com/' attach_file('Avatar', Rails.root + 'spec/support/codebar-logo.png') fill_in 'Student spots', with: 20 + fill_in 'Coach spots', with: 1 select "Bronze", from: "Level" click_on 'Create sponsor' @@ -34,6 +35,7 @@ fill_in 'Website', with: 'https://www.sponsorname.com/' attach_file('Avatar', Rails.root + 'spec/support/codebar-logo.png') fill_in 'Student spots', with: 20 + fill_in 'Coach spots', with: 1 click_on 'Create sponsor' @@ -49,6 +51,7 @@ fill_in 'Website', with: 'https://www.sponsorname.com/' attach_file('Avatar', Rails.root + 'spec/support/codebar-logo.png') fill_in 'Student spots', with: 20 + fill_in 'Coach spots', with: 1 click_on 'Create sponsor' diff --git a/spec/features/coach_accepting_invitation_spec.rb b/spec/features/coach_accepting_invitation_spec.rb index b24cc8e48..d9c662aa0 100644 --- a/spec/features/coach_accepting_invitation_spec.rb +++ b/spec/features/coach_accepting_invitation_spec.rb @@ -8,7 +8,10 @@ let(:reject_invitation_route) { reject_invitation_path(invitation) } let(:accept_invitation_route) { accept_invitation_path(invitation) } - let(:set_no_available_slots) { invitation.workshop.host.update_attribute(:seats, 0) } + let(:set_no_available_slots) do + invitation.workshop.host.update_attribute(:seats, 0) + invitation.workshop.host.update_attribute(:number_of_coaches, 0) + end before(:each) do login(member)