diff --git a/app/models/event.rb b/app/models/event.rb index 0ac54592..92bfeb15 100644 --- a/app/models/event.rb +++ b/app/models/event.rb @@ -13,7 +13,7 @@ class Event < ActiveRecord::Base has_many :event_attachments, dependent: :destroy has_many :users, through: :event_users has_many :speakers, through: :event_users, source: :user - has_many :votes + has_many :votes, dependent: :destroy has_many :voters, through: :votes, source: :user has_many :commercials, as: :commercialable, dependent: :destroy belongs_to :event_type diff --git a/app/models/user.rb b/app/models/user.rb index 77a38301..9ebea407 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -50,6 +50,7 @@ class User < ActiveRecord::Base def setup_role self.is_admin = true if User.count == 0 + roles << Role.where(name: 'Admin') if User.count == 1 end # Gets the roles of the user, groups them by role.name and returns the resource(s) of each role diff --git a/db/migrate/20140801080705_add_users_to_events.rb b/db/migrate/20140801080705_add_users_to_events.rb new file mode 100644 index 00000000..b57c0740 --- /dev/null +++ b/db/migrate/20140801080705_add_users_to_events.rb @@ -0,0 +1,29 @@ +class AddUsersToEvents < ActiveRecord::Migration + class TempEvent < ActiveRecord::Base + self.table_name = 'events' + end + + class TempUser < ActiveRecord::Base + self.table_name = 'users' + end + + class TempEventUser < ActiveRecord::Base + self.table_name = 'event_users' + attr_accessible :event_id, :user_id, :event_role + end + + def up + TempEvent.all.each do |event| + if TempEventUser.where(event_id: event).blank? + # Assign sample user (created in seeds) + user = User.find_by(email: 'deleted@localhost.osem') + TempEventUser.create!(event_id: event.id, user_id: user.id, event_role: 'submitter') + TempEventUser.create!(event_id: event.id, user_id: user.id, event_role: 'speaker') + end + end + end + + def down + raise ActiveRecord::IrreversibleMigration.new('Cannot reverse migration.') + end +end diff --git a/db/seeds.rb b/db/seeds.rb index 91f036d6..5d8d6774 100644 --- a/db/seeds.rb +++ b/db/seeds.rb @@ -6,10 +6,17 @@ # cities = City.create([{ name: 'Chicago' }, { name: 'Copenhagen' }]) # Mayor.create(name: 'Emanuel', city: cities.first) +# Create sample user +user = User.new(email: 'deleted@localhost.osem', name: 'User deleted', + biography: 'Data is no longer available for deleted user.', + password: Devise.friendly_token[0, 20]) +user.skip_confirmation! +user.save! + # Questions -qtype_yesno = QuestionType.create(title: 'Yes/No') -QuestionType.create(title: 'Single Choice') -QuestionType.create(title: 'Multiple Choice') +qtype_yesno = QuestionType.create(title: "Yes/No") +QuestionType.create(title: "Single Choice") +QuestionType.create(title: "Multiple Choice") answer_yes = Answer.create(title: 'Yes') answer_no = Answer.create(title: 'No') diff --git a/spec/models/user_spec.rb b/spec/models/user_spec.rb index be110312..fbae0ef3 100644 --- a/spec/models/user_spec.rb +++ b/spec/models/user_spec.rb @@ -10,6 +10,7 @@ describe User do let!(:organizer_role) { create(:organizer_role, resource: conference) } let!(:cfp_role) { create(:cfp_role, resource: conference) } let!(:organizer) { create(:user, role_ids: [organizer_role.id]) } + let!(:user) { create(:user) } it 'returns the correct role' do expect(user_admin.is_admin).to eq(true) @@ -41,8 +42,8 @@ describe User do end context 'admin' do - it 'assigns first user admin role' do - expect(User.first.is_admin).to be true + it 'assigns second user admin role' do + expect(User.second.is_admin).to be true end end