diff --git a/app/models/user.rb b/app/models/user.rb index 66f838a7..ed2715a5 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -114,8 +114,9 @@ class User < ActiveRecord::Base end def setup_role - self.is_admin = true if User.count == 0 - roles << Role.where(name: 'Admin') if User.count == 1 + if User.count == 1 && User.first.email == 'deleted@localhost.osem' + self.is_admin = true + end end # Gets the roles of the user, groups them by role.name and returns the resource(s) of each role diff --git a/spec/controllers/admin/users_controller_spec.rb b/spec/controllers/admin/users_controller_spec.rb index ee1d0410..87759372 100644 --- a/spec/controllers/admin/users_controller_spec.rb +++ b/spec/controllers/admin/users_controller_spec.rb @@ -9,8 +9,9 @@ describe Admin::UsersController do it 'populates an array of users' do user1 = create(:user, email: 'user1@email.osem') user2 = create(:user, email: 'user2@email.osem') + user_deleted = User.find_by(name: 'User deleted') get :index - expect(assigns(:users)).to match_array([user, admin, user1, user2]) + expect(assigns(:users)).to match_array([user_deleted, user, admin, user1, user2]) end it 'renders index template' do get :index diff --git a/spec/models/user_spec.rb b/spec/models/user_spec.rb index 82ee27d2..d92a5433 100644 --- a/spec/models/user_spec.rb +++ b/spec/models/user_spec.rb @@ -4,8 +4,6 @@ describe User do # It is necessary to use bang version of let to build roles before user let!(:user_admin) { create(:user) } - let!(:admin) { create(:admin) } - let!(:participant) { create(:user) } let!(:conference) { create(:conference) } let!(:organizer_role) { create(:organizer_role, resource: conference) } let!(:cfp_role) { create(:cfp_role, resource: conference) } @@ -47,14 +45,32 @@ describe User do it_behaves_like '#role?', :organizer, 'participant', false end - context 'admin' do - it 'assigns second user admin role' do - expect(User.second.is_admin).to be true - end - end - context 'participant' do it_behaves_like '#role?', :user, 'adMin', false end end + + describe 'assigns admin attribute' do + it 'to second user when first user is deleted_user' do + DatabaseCleaner.clean_with(:truncation) + + deleted_user = create(:user, email: 'deleted@localhost.osem', name: 'User deleted') + expect(deleted_user.is_admin).to be false + + user_after_deleted = create(:user) + expect(user_after_deleted.is_admin).to be true + end + end + + describe 'does not assign admin attribute' do + it 'when first user is not deleted_user' do + DatabaseCleaner.clean_with(:truncation) + + first_user = create(:user) + expect(first_user.is_admin).to be false + + second_user = create(:user) + expect(second_user.is_admin).to be false + end + end end diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb index 6380ac98..972e810d 100644 --- a/spec/spec_helper.rb +++ b/spec/spec_helper.rb @@ -58,6 +58,7 @@ RSpec.configure do |config| config.around(:each) do |example| DatabaseCleaner.cleaning do + load "#{Rails.root}/db/seeds.rb" example.run end end