diff --git a/app/controllers/invitation_controller.rb b/app/controllers/invitation_controller.rb index 24e42224f..e8a37e7bc 100644 --- a/app/controllers/invitation_controller.rb +++ b/app/controllers/invitation_controller.rb @@ -9,6 +9,6 @@ def set_invitation end def has_remaining_seats? invitation - invitation.sessions.seats > invitation.sessions.attending_invitations.length + invitation.sessions.host.seats > invitation.sessions.attending_invitations.length end end diff --git a/app/models/sponsor.rb b/app/models/sponsor.rb index cb6007caf..a786c389e 100644 --- a/app/models/sponsor.rb +++ b/app/models/sponsor.rb @@ -3,7 +3,7 @@ class Sponsor < ActiveRecord::Base has_many :sponsor_sessions has_many :sessions, through: :sponsor_sessions - validates :name, :address, :avatar, :website, presence: true + validates :name, :address, :avatar, :website, :seats, presence: true scope :latest, -> { order("updated_at desc").limit(7) } end diff --git a/db/migrate/20131112221451_remove_seats_from_sessions.rb b/db/migrate/20131112221451_remove_seats_from_sessions.rb new file mode 100644 index 000000000..abc6a52e4 --- /dev/null +++ b/db/migrate/20131112221451_remove_seats_from_sessions.rb @@ -0,0 +1,5 @@ +class RemoveSeatsFromSessions < ActiveRecord::Migration + def change + remove_column :sessions, :seats, :integer + end +end diff --git a/db/migrate/20131112221641_add_seats_to_sponsor.rb b/db/migrate/20131112221641_add_seats_to_sponsor.rb new file mode 100644 index 000000000..8ba06f6c5 --- /dev/null +++ b/db/migrate/20131112221641_add_seats_to_sponsor.rb @@ -0,0 +1,5 @@ +class AddSeatsToSponsor < ActiveRecord::Migration + def change + add_column :sponsors, :seats, :integer, default: 15 + end +end diff --git a/db/schema.rb b/db/schema.rb index 8f7107ee9..bd0cd7b60 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -11,7 +11,7 @@ # # It's strongly recommended that you check this file into your version control system. -ActiveRecord::Schema.define(version: 20131111024701) do +ActiveRecord::Schema.define(version: 20131112221641) do create_table "addresses", force: true do |t| t.string "flat" @@ -106,7 +106,6 @@ t.datetime "date_and_time" t.datetime "created_at" t.datetime "updated_at" - t.integer "seats", default: 15 end create_table "sponsor_sessions", force: true do |t| @@ -127,6 +126,7 @@ t.datetime "updated_at" t.string "avatar" t.string "website" + t.integer "seats", default: 15 end end diff --git a/spec/fabricators/session_fabricator.rb b/spec/fabricators/session_fabricator.rb index 1a39c0fb5..2f210789a 100644 --- a/spec/fabricators/session_fabricator.rb +++ b/spec/fabricators/session_fabricator.rb @@ -1,5 +1,7 @@ Fabricator(:sessions) do - seats 1 date_and_time { DateTime.now+2.days } title "Course title" + after_build do |sessions| + Fabricate(:sponsor_session, sessions: sessions, sponsor: Fabricate(:sponsor), host: true ) + end end diff --git a/spec/fabricators/sponsor_session_fabricator.rb b/spec/fabricators/sponsor_session_fabricator.rb index a24e5e4a0..24c52b3d7 100644 --- a/spec/fabricators/sponsor_session_fabricator.rb +++ b/spec/fabricators/sponsor_session_fabricator.rb @@ -1,8 +1,2 @@ Fabricator(:sponsor_session) do - sponsor - sessions end - -Fabricator(:hosted_session, from: :sponsor_session) do - host true -end \ No newline at end of file diff --git a/spec/features/accepting_invitation_spec.rb b/spec/features/accepting_invitation_spec.rb index d9199611e..8184451a1 100644 --- a/spec/features/accepting_invitation_spec.rb +++ b/spec/features/accepting_invitation_spec.rb @@ -7,7 +7,7 @@ let(:accepting_invitation_path) { accept_invitation_path(invitation) } let(:rejecting_invitation_path) { reject_invitation_path(invitation) } - let(:set_no_available_slots) { invitation.sessions.update_attribute(:seats, 0) } + let(:set_no_available_slots) { invitation.sessions.host.update_attribute(:seats, 0) } it_behaves_like "invitation route" diff --git a/spec/models/sessions_spec.rb b/spec/models/sessions_spec.rb index 29ec041f5..b82c589fd 100644 --- a/spec/models/sessions_spec.rb +++ b/spec/models/sessions_spec.rb @@ -6,7 +6,6 @@ it { should respond_to(:title) } it { should respond_to(:description) } it { should respond_to(:date_and_time) } - it { should respond_to(:seats) } it { should respond_to(:sponsors) } it { should respond_to(:sponsor_sessions)} diff --git a/spec/models/sponsor_session_spec.rb b/spec/models/sponsor_session_spec.rb index 4809e56c5..d08552000 100644 --- a/spec/models/sponsor_session_spec.rb +++ b/spec/models/sponsor_session_spec.rb @@ -1,7 +1,7 @@ require 'spec_helper' describe SponsorSession do - subject(:sponsor_session) { Fabricate(:hosted_session) } + let!(:session) { Fabricate(:sessions) } context 'when the session has more than one host' do let(:other_sponsor) { Fabricate(:sponsor) } @@ -9,7 +9,7 @@ let(:another_host_session) do Fabricate.build(:sponsor_session, sponsor: other_sponsor, - sessions: sponsor_session.sessions, + sessions: session, host: true) end @@ -17,16 +17,13 @@ end context '#scopes' do - let!(:hosted_session) { Fabricate(:hosted_session) } it '#hosts' do expect(SponsorSession.hosts.length).to eq(1) end - describe '#for_session' do - let(:session) { hosted_session.sessions } - - it { expect(SponsorSession.for_session(session.id).length).to eq(1) } + it '#for_session' do + expect(SponsorSession.for_session(session.id).length).to eq(1) end end end \ No newline at end of file diff --git a/spec/models/sponsor_spec.rb b/spec/models/sponsor_spec.rb index 6f3b5b1b4..9e3d09ba6 100644 --- a/spec/models/sponsor_spec.rb +++ b/spec/models/sponsor_spec.rb @@ -9,6 +9,7 @@ it { should respond_to(:sessions) } it { should respond_to(:sponsor_sessions) } it { should respond_to(:avatar) } + it { should respond_to(:seats) } it { should be_valid } context 'validations' do @@ -38,6 +39,12 @@ it{ should_not be_valid } it{ should have(1).error_on(:avatar) } end + + describe '#seats' do + before { sponsor.seats = nil } + + it { should have(1).error_on(:seats) } + end end end