Commit 852b5613 authored by Stan Hu's avatar Stan Hu

Fix namespaces_helper reporting multiple groups

parent 0085b76f
...@@ -14,8 +14,11 @@ module NamespacesHelper ...@@ -14,8 +14,11 @@ module NamespacesHelper
extra_group = Group.find(extra_group) if Namespace.find(extra_group).kind == 'group' extra_group = Group.find(extra_group) if Namespace.find(extra_group).kind == 'group'
end end
if extra_group && extra_group.is_a?(Group) && (!Group.exists?(name: extra_group.name) || Ability.allowed?(current_user, :read_group, extra_group)) if extra_group && extra_group.is_a?(Group)
groups |= [extra_group] # Avoid duplicate groups if one already exists by that name
existing_group = Group.find_by(name: extra_group.name)
extra_group = existing_group if existing_group
groups |= [extra_group] if Ability.allowed?(current_user, :read_group, extra_group)
end end
options = [] options = []
......
...@@ -31,6 +31,15 @@ describe NamespacesHelper do ...@@ -31,6 +31,15 @@ describe NamespacesHelper do
expect(options).to include(user.name) expect(options).to include(user.name)
end end
it 'avoids duplicate groups when extra_group is used' do
allow(helper).to receive(:current_user).and_return(admin)
options = helper.namespaces_options(user_group.id, display_path: true, extra_group: build(:group, name: admin_group.name))
expect(options.scan("data-name=\"#{admin_group.name}\"").count).to eq(1)
expect(options).to include(admin_group.name)
end
it 'returns only groups if groups_only option is true' do it 'returns only groups if groups_only option is true' do
allow(helper).to receive(:current_user).and_return(user) allow(helper).to receive(:current_user).and_return(user)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment