summaryrefslogtreecommitdiff
path: root/spec
diff options
context:
space:
mode:
authorFelipe Artur <felipefac@gmail.com>2016-03-01 12:22:29 -0300
committerFelipe Artur <felipefac@gmail.com>2016-03-10 10:38:36 -0300
commitf2a9ee258e0ee3a6fe0cb614e4b73c56dcd7339d (patch)
tree84e668890ee51355f7ac9275012fbee3e295f5c4 /spec
parent60ddd5ef34686e1ea9edc82a6915a9e4738bee50 (diff)
downloadgitlab-ce-f2a9ee258e0ee3a6fe0cb614e4b73c56dcd7339d.tar.gz
Add permission level to groups
Diffstat (limited to 'spec')
-rw-r--r--spec/finders/groups_finder_spec.rb25
-rw-r--r--spec/helpers/groups_helper.rb15
-rw-r--r--spec/helpers/visibility_level_helper_spec.rb8
-rw-r--r--spec/models/group_spec.rb18
4 files changed, 66 insertions, 0 deletions
diff --git a/spec/finders/groups_finder_spec.rb b/spec/finders/groups_finder_spec.rb
new file mode 100644
index 00000000000..ed24954af7a
--- /dev/null
+++ b/spec/finders/groups_finder_spec.rb
@@ -0,0 +1,25 @@
+require 'spec_helper'
+
+describe GroupsFinder do
+ describe '#execute' do
+ let(:user) { create(:user) }
+ let!(:private_group) { create(:group, visibility_level: 0) }
+ let!(:internal_group) { create(:group, visibility_level: 10) }
+ let!(:public_group) { create(:group, visibility_level: 20) }
+ let(:finder) { described_class.new }
+
+ describe 'execute' do
+ describe 'without a user' do
+ subject { finder.execute }
+
+ it { is_expected.to eq([public_group]) }
+ end
+
+ describe 'with a user' do
+ subject { finder.execute(user) }
+
+ it { is_expected.to eq([public_group, internal_group]) }
+ end
+ end
+ end
+end
diff --git a/spec/helpers/groups_helper.rb b/spec/helpers/groups_helper.rb
index 4ea90a80a92..01ec9e5a07f 100644
--- a/spec/helpers/groups_helper.rb
+++ b/spec/helpers/groups_helper.rb
@@ -18,4 +18,19 @@ describe GroupsHelper do
expect(group_icon(group.path)).to match('group_avatar.png')
end
end
+
+ describe 'permissions' do
+ let(:group) { create(:group) }
+ let!(:user) { create(:user) }
+
+ before do
+ allow(self).to receive(:current_user).and_return(user)
+ allow(self).to receive(:can?) { true }
+ end
+
+ it 'checks user ability to change permissions' do
+ expect(self).to receive(:can?).with(user, :change_visibility_level, group)
+ can_change_group_visibility_level?(group)
+ end
+ end
end
diff --git a/spec/helpers/visibility_level_helper_spec.rb b/spec/helpers/visibility_level_helper_spec.rb
index cd7596a763d..ef60ef75fbe 100644
--- a/spec/helpers/visibility_level_helper_spec.rb
+++ b/spec/helpers/visibility_level_helper_spec.rb
@@ -8,6 +8,7 @@ describe VisibilityLevelHelper do
end
let(:project) { build(:project) }
+ let(:group) { build(:group) }
let(:personal_snippet) { build(:personal_snippet) }
let(:project_snippet) { build(:project_snippet) }
@@ -19,6 +20,13 @@ describe VisibilityLevelHelper do
end
end
+ context 'used with a Group' do
+ it 'delegates groups to #group_visibility_level_description' do
+ expect(visibility_level_description(Gitlab::VisibilityLevel::PRIVATE, group))
+ .to match /group/i
+ end
+ end
+
context 'called with a Snippet' do
it 'delegates snippets to #snippet_visibility_level_description' do
expect(visibility_level_description(Gitlab::VisibilityLevel::INTERNAL, project_snippet))
diff --git a/spec/models/group_spec.rb b/spec/models/group_spec.rb
index 3c995053eec..25aa77dc4e8 100644
--- a/spec/models/group_spec.rb
+++ b/spec/models/group_spec.rb
@@ -56,6 +56,24 @@ describe Group, models: true do
end
end
+ describe 'scopes' do
+ let!(:private_group) { create(:group, visibility_level: 0) }
+ let!(:internal_group) { create(:group, visibility_level: 10) }
+ let!(:public_group) { create(:group, visibility_level: 20) }
+
+ describe 'public_only' do
+ subject { described_class.public_only }
+
+ it{ is_expected.to eq([public_group]) }
+ end
+
+ describe 'public_and_internal_only' do
+ subject { described_class.public_and_internal_only }
+
+ it{ is_expected.to eq([public_group, internal_group]) }
+ end
+ end
+
describe '#to_reference' do
it 'returns a String reference to the object' do
expect(group.to_reference).to eq "@#{group.name}"