summaryrefslogtreecommitdiff
path: root/spec/helpers/admin
diff options
context:
space:
mode:
Diffstat (limited to 'spec/helpers/admin')
-rw-r--r--spec/helpers/admin/user_actions_helper_spec.rb105
1 files changed, 105 insertions, 0 deletions
diff --git a/spec/helpers/admin/user_actions_helper_spec.rb b/spec/helpers/admin/user_actions_helper_spec.rb
new file mode 100644
index 00000000000..7ccd9a4fe3e
--- /dev/null
+++ b/spec/helpers/admin/user_actions_helper_spec.rb
@@ -0,0 +1,105 @@
+# frozen_string_literal: true
+
+require "spec_helper"
+
+RSpec.describe Admin::UserActionsHelper do
+ describe '#admin_actions' do
+ let_it_be(:current_user) { build(:user) }
+
+ subject { helper.admin_actions(user) }
+
+ before do
+ allow(helper).to receive(:current_user).and_return(current_user)
+ allow(helper).to receive(:can?).with(current_user, :destroy_user, user).and_return(true)
+ end
+
+ context 'the user is a bot' do
+ let_it_be(:user) { build(:user, :bot) }
+
+ it { is_expected.to be_empty }
+ end
+
+ context 'the current user and user are the same' do
+ let_it_be(:user) { build(:user) }
+ let_it_be(:current_user) { user }
+
+ it { is_expected.to contain_exactly("edit") }
+ end
+
+ context 'the user is a standard user' do
+ let_it_be(:user) { create(:user) }
+
+ it { is_expected.to contain_exactly("edit", "block", "deactivate", "delete", "delete_with_contributions") }
+ end
+
+ context 'the user is an admin user' do
+ let_it_be(:user) { create(:user, :admin) }
+
+ it { is_expected.to contain_exactly("edit", "block", "deactivate", "delete", "delete_with_contributions") }
+ end
+
+ context 'the user is blocked by LDAP' do
+ let_it_be(:user) { create(:omniauth_user, :ldap_blocked) }
+
+ it { is_expected.to contain_exactly("edit", "ldap", "delete", "delete_with_contributions") }
+ end
+
+ context 'the user is blocked pending approval' do
+ let_it_be(:user) { create(:user, :blocked_pending_approval) }
+
+ it { is_expected.to contain_exactly("edit", "approve", "reject") }
+ end
+
+ context 'the user is blocked' do
+ let_it_be(:user) { create(:user, :blocked) }
+
+ it { is_expected.to contain_exactly("edit", "unblock", "delete", "delete_with_contributions") }
+ end
+
+ context 'the user is deactivated' do
+ let_it_be(:user) { create(:user, :deactivated) }
+
+ it { is_expected.to contain_exactly("edit", "block", "activate", "delete", "delete_with_contributions") }
+ end
+
+ context 'the user is locked' do
+ let_it_be(:user) { create(:user) }
+
+ before do
+ user.lock_access!
+ end
+
+ it {
+ is_expected.to contain_exactly(
+ "edit",
+ "block",
+ "deactivate",
+ "unlock",
+ "delete",
+ "delete_with_contributions"
+ )
+ }
+ end
+
+ context 'the current_user does not have permission to delete the user' do
+ let_it_be(:user) { build(:user) }
+
+ before do
+ allow(helper).to receive(:can?).with(current_user, :destroy_user, user).and_return(false)
+ end
+
+ it { is_expected.to contain_exactly("edit", "block", "deactivate") }
+ end
+
+ context 'the user is a sole owner of a group' do
+ let_it_be(:group) { create(:group) }
+ let_it_be(:user) { create(:user) }
+
+ before do
+ group.add_owner(user)
+ end
+
+ it { is_expected.to contain_exactly("edit", "block", "deactivate") }
+ end
+ end
+end