diff options
author | Rémy Coutable <remy@rymai.me> | 2016-09-19 15:15:01 +0200 |
---|---|---|
committer | Rémy Coutable <remy@rymai.me> | 2016-09-22 11:12:17 +0200 |
commit | 29cb161e925f787624e7c6b7bdfdeb4d2462c43a (patch) | |
tree | 2ca9abcbf3de4d6b6bcdd47e00357a48c2701574 | |
parent | 178e2758f685ee124c06d2ce8961950a4d39f013 (diff) | |
download | gitlab-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.rb | 13 | ||||
-rw-r--r-- | app/models/group.rb | 1 | ||||
-rw-r--r-- | app/models/project.rb | 1 | ||||
-rw-r--r-- | spec/models/concerns/access_requestable_spec.rb | 40 | ||||
-rw-r--r-- | spec/models/group_spec.rb | 7 | ||||
-rw-r--r-- | spec/models/project_spec.rb | 8 |
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') } |