diff options
author | Lin Jen-Shin <godfat@godfat.org> | 2018-06-26 12:58:51 +0300 |
---|---|---|
committer | Lin Jen-Shin <godfat@godfat.org> | 2018-06-26 12:58:51 +0300 |
commit | d5a1910f0ce24cf88bc7f0279904a8d5088e2ffa (patch) | |
tree | 735aa5278bd547f8d83d6cfbb92e9aef4681a9c7 | |
parent | 2024522b51ae672df3b04ec0ed3d17eefcb45264 (diff) |
Port Namespace#root_ancestor to CE
-rw-r--r-- | app/models/namespace.rb | 4 | ||||
-rw-r--r-- | spec/models/namespace_spec.rb | 13 |
2 files changed, 17 insertions, 0 deletions
diff --git a/app/models/namespace.rb b/app/models/namespace.rb index 52fe529c016..7034c633268 100644 --- a/app/models/namespace.rb +++ b/app/models/namespace.rb @@ -228,6 +228,10 @@ class Namespace < ActiveRecord::Base parent.present? end + def root_ancestor + ancestors.reorder(nil).find_by(parent_id: nil) + end + def subgroup? has_parent? end diff --git a/spec/models/namespace_spec.rb b/spec/models/namespace_spec.rb index 18b01c3e6b7..70f1a1c8b38 100644 --- a/spec/models/namespace_spec.rb +++ b/spec/models/namespace_spec.rb @@ -655,6 +655,19 @@ describe Namespace do end end + describe '#root_ancestor' do + it 'returns the top most ancestor', :nested_groups do + root_group = create(:group) + nested_group = create(:group, parent: root_group) + deep_nested_group = create(:group, parent: nested_group) + very_deep_nested_group = create(:group, parent: deep_nested_group) + + expect(nested_group.root_ancestor).to eq(root_group) + expect(deep_nested_group.root_ancestor).to eq(root_group) + expect(very_deep_nested_group.root_ancestor).to eq(root_group) + end + end + describe '#remove_exports' do let(:legacy_project) { create(:project, :with_export, :legacy_storage, namespace: namespace) } let(:hashed_project) { create(:project, :with_export, namespace: namespace) } |