From 2e7169ede7cbdd84df81e2fef0b2c4c6d074aa7b Mon Sep 17 00:00:00 2001 From: Stella Rouzi Date: Sat, 30 Aug 2014 12:12:27 +0300 Subject: [PATCH 1/5] Make second user admin --- app/models/user.rb | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/app/models/user.rb b/app/models/user.rb index 66f838a7..a58ee40a 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -114,8 +114,7 @@ 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 + self.is_admin = true if User.count == 1 end # Gets the roles of the user, groups them by role.name and returns the resource(s) of each role From 0d51220a8c9a3bde6ad2026a0a919e519153f5f4 Mon Sep 17 00:00:00 2001 From: Stella Rouzi Date: Sat, 30 Aug 2014 23:16:38 +0300 Subject: [PATCH 2/5] load seeds before tests --- spec/controllers/admin/users_controller_spec.rb | 3 ++- spec/spec_helper.rb | 1 + 2 files changed, 3 insertions(+), 1 deletion(-) 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/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 From 57c73f9eaedf743f5bf7f84a52641b9934de8d24 Mon Sep 17 00:00:00 2001 From: Stella Rouzi Date: Fri, 12 Sep 2014 08:47:50 +0300 Subject: [PATCH 3/5] make user an admin only if user is the first one after the deleted user. --- app/models/user.rb | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/app/models/user.rb b/app/models/user.rb index a58ee40a..ed2715a5 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -114,7 +114,9 @@ class User < ActiveRecord::Base end def setup_role - self.is_admin = true 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 From 08c7e6a79a8de08466017fcbc6d2a8b63769bac8 Mon Sep 17 00:00:00 2001 From: Stella Rouzi Date: Tue, 7 Oct 2014 11:20:23 +0300 Subject: [PATCH 4/5] tests for admin attribute assignment only to 2nd user, if 1rst is the deleted user. --- spec/models/user_spec.rb | 33 ++++++++++++++++++++++++--------- 1 file changed, 24 insertions(+), 9 deletions(-) diff --git a/spec/models/user_spec.rb b/spec/models/user_spec.rb index 82ee27d2..a784cddd 100644 --- a/spec/models/user_spec.rb +++ b/spec/models/user_spec.rb @@ -4,13 +4,10 @@ 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) } let!(:organizer) { create(:user, role_ids: [organizer_role.id]) } - let!(:user) { create(:user) } it 'User.for_ichain_username raises exception if user is disabled' do user.is_disabled = true @@ -47,14 +44,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 From 3adec924317dd5c26261e2fd64ef8891974870cd Mon Sep 17 00:00:00 2001 From: Stella Date: Wed, 12 Nov 2014 18:31:42 +0200 Subject: [PATCH 5/5] add user in tests, it is used for ichain testing --- spec/models/user_spec.rb | 1 + 1 file changed, 1 insertion(+) diff --git a/spec/models/user_spec.rb b/spec/models/user_spec.rb index a784cddd..d92a5433 100644 --- a/spec/models/user_spec.rb +++ b/spec/models/user_spec.rb @@ -8,6 +8,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 'User.for_ichain_username raises exception if user is disabled' do user.is_disabled = true