summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRémy Coutable <remy@rymai.me>2016-09-19 15:15:01 +0200
committerRémy Coutable <remy@rymai.me>2016-09-22 11:12:17 +0200
commit29cb161e925f787624e7c6b7bdfdeb4d2462c43a (patch)
tree2ca9abcbf3de4d6b6bcdd47e00357a48c2701574
parent178e2758f685ee124c06d2ce8961950a4d39f013 (diff)
downloadgitlab-ce-29cb161e925f787624e7c6b7bdfdeb4d2462c43a.tar.gz
Re-add the AccessRequestable concern
Signed-off-by: Rémy Coutable <remy@rymai.me>
-rw-r--r--app/models/concerns/access_requestable.rb13
-rw-r--r--app/models/group.rb1
-rw-r--r--app/models/project.rb1
-rw-r--r--spec/models/concerns/access_requestable_spec.rb40
-rw-r--r--spec/models/group_spec.rb7
-rw-r--r--spec/models/project_spec.rb8
6 files changed, 55 insertions, 15 deletions
diff --git a/app/models/concerns/access_requestable.rb b/app/models/concerns/access_requestable.rb
new file mode 100644
index 00000000000..62bc6b809f4
--- /dev/null
+++ b/app/models/concerns/access_requestable.rb
@@ -0,0 +1,13 @@
+# == AccessRequestable concern
+#
+# Contains functionality related to objects that can receive request for access.
+#
+# Used by Project, and Group.
+#
+module AccessRequestable
+ extend ActiveSupport::Concern
+
+ def request_access(user)
+ Members::RequestAccessService.new(self, user).execute
+ end
+end
diff --git a/app/models/group.rb b/app/models/group.rb
index 1f610aef87a..194fa1ffa69 100644
--- a/app/models/group.rb
+++ b/app/models/group.rb
@@ -3,6 +3,7 @@ require 'carrierwave/orm/activerecord'
class Group < Namespace
include Gitlab::ConfigHelper
include Gitlab::VisibilityLevel
+ include AccessRequestable
include Referable
has_many :group_members, -> { where(requested_at: nil) }, dependent: :destroy, as: :source, class_name: 'GroupMember'
diff --git a/app/models/project.rb b/app/models/project.rb
index cebf6199974..35e1d1a25a8 100644
--- a/app/models/project.rb
+++ b/app/models/project.rb
@@ -5,6 +5,7 @@ class Project < ActiveRecord::Base
include Gitlab::ShellAdapter
include Gitlab::VisibilityLevel
include Gitlab::CurrentSettings
+ include AccessRequestable
include Referable
include Sortable
include AfterCommitQueue
diff --git a/spec/models/concerns/access_requestable_spec.rb b/spec/models/concerns/access_requestable_spec.rb
new file mode 100644
index 00000000000..96eee0e8bdd
--- /dev/null
+++ b/spec/models/concerns/access_requestable_spec.rb
@@ -0,0 +1,40 @@
+require 'spec_helper'
+
+describe AccessRequestable do
+ describe 'Group' do
+ describe '#request_access' do
+ let(:group) { create(:group, :public) }
+ let(:user) { create(:user) }
+
+ it { expect(group.request_access(user)).to be_a(GroupMember) }
+ it { expect(group.request_access(user).user).to eq(user) }
+ end
+
+ describe '#access_requested?' do
+ let(:group) { create(:group, :public) }
+ let(:user) { create(:user) }
+
+ before { group.request_access(user) }
+
+ it { expect(group.requesters.exists?(user_id: user)).to be_truthy }
+ end
+ end
+
+ describe 'Project' do
+ describe '#request_access' do
+ let(:project) { create(:empty_project, :public) }
+ let(:user) { create(:user) }
+
+ it { expect(project.request_access(user)).to be_a(ProjectMember) }
+ end
+
+ describe '#access_requested?' do
+ let(:project) { create(:empty_project, :public) }
+ let(:user) { create(:user) }
+
+ before { project.request_access(user) }
+
+ it { expect(project.requesters.exists?(user_id: user)).to be_truthy }
+ end
+ end
+end
diff --git a/spec/models/group_spec.rb b/spec/models/group_spec.rb
index c015147f0db..0b3ef9b98fd 100644
--- a/spec/models/group_spec.rb
+++ b/spec/models/group_spec.rb
@@ -105,13 +105,6 @@ describe Group, models: true do
it { expect(group.human_name).to eq(group.name) }
end
- describe '#request_access' do
- let(:user) { create(:user) }
-
- it { expect(group.request_access(user)).to be_a(GroupMember) }
- it { expect(group.request_access(user).user).to eq(user) }
- end
-
describe '#add_user' do
let(:user) { create(:user) }
before { group.add_user(user, GroupMember::MASTER) }
diff --git a/spec/models/project_spec.rb b/spec/models/project_spec.rb
index b8f268e95c3..98f5305a855 100644
--- a/spec/models/project_spec.rb
+++ b/spec/models/project_spec.rb
@@ -942,14 +942,6 @@ describe Project, models: true do
end
end
- describe '#request_access' do
- let(:project) { create(:empty_project, :public) }
- let(:user) { create(:user) }
-
- it { expect(project.request_access(user)).to be_a(ProjectMember) }
- it { expect(project.request_access(user).user).to eq(user) }
- end
-
describe '.search' do
let(:project) { create(:project, description: 'kitten mittens') }