From 283e868ef523185b0ee314b9e2164599780d888b Mon Sep 17 00:00:00 2001
From: Dmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>
Date: Thu, 29 Dec 2016 19:18:05 +0200
Subject: [PATCH] Refactor nested group related code

* Simplify code around group parent access check
* Rename 'Nested groups' to 'Subgroups' tab at group#show page

Signed-off-by: Dmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>
---
 app/services/groups/create_service.rb | 14 ++++----------
 app/views/groups/show.html.haml       |  5 ++---
 spec/features/groups_spec.rb          |  2 +-
 3 files changed, 7 insertions(+), 14 deletions(-)

diff --git a/app/services/groups/create_service.rb b/app/services/groups/create_service.rb
index 9a630aee626..febeb661fb5 100644
--- a/app/services/groups/create_service.rb
+++ b/app/services/groups/create_service.rb
@@ -12,17 +12,11 @@ module Groups
         return @group
       end
 
-      parent_id = params[:parent_id]
+      if @group.parent && !can?(current_user, :admin_group, @group.parent)
+        @group.parent = nil
+        @group.errors.add(:parent_id, 'manage access required to create subgroup')
 
-      if parent_id
-        parent = Group.find(parent_id)
-
-        unless can?(current_user, :admin_group, parent)
-          @group.parent_id = nil
-          @group.errors.add(:parent_id, 'manage access required to create subgroup')
-
-          return @group
-        end
+        return @group
       end
 
       @group.name ||= @group.path.dup
diff --git a/app/views/groups/show.html.haml b/app/views/groups/show.html.haml
index a3cd333373e..9ef88f233c5 100644
--- a/app/views/groups/show.html.haml
+++ b/app/views/groups/show.html.haml
@@ -35,7 +35,7 @@
       - if @nested_groups.present?
         %li
           = link_to "#groups", 'data-toggle' => 'tab' do
-            Nested Groups
+            Subgroups
     .nav-controls
       = form_tag request.path, method: :get, class: 'project-filter-form', id: 'project-filter-form' do |f|
         = search_field_tag :filter_projects, nil, placeholder: 'Filter by name', class: 'projects-list-filter form-control', spellcheck: false
@@ -55,5 +55,4 @@
     - if @nested_groups.present?
       .tab-pane#groups
         %ul.content-list
-          - @nested_groups.each do |group|
-            = render 'shared/groups/group', group: group
+          = render partial: 'shared/groups/group', collection: @nested_groups
diff --git a/spec/features/groups_spec.rb b/spec/features/groups_spec.rb
index d865a71f04b..a515c92db37 100644
--- a/spec/features/groups_spec.rb
+++ b/spec/features/groups_spec.rb
@@ -115,7 +115,7 @@ feature 'Group', feature: true do
 
     it 'has nested groups tab with nested groups inside' do
       visit path
-      click_link 'Nested Groups'
+      click_link 'Subgroups'
 
       expect(page).to have_content(nested_group.full_name)
     end
-- 
GitLab