Teach Project about #all_clusters

This returns a union of the project level clusters and group level
clusters associated with this project.
This commit is contained in:
Thong Kuah 2018-11-25 21:26:28 +13:00
parent 703233e1e9
commit 9c5977c821
3 changed files with 28 additions and 0 deletions

View file

@ -4,6 +4,7 @@ module Clusters
class Cluster < ActiveRecord::Base
include Presentable
include Gitlab::Utils::StrongMemoize
include FromUnion
self.table_name = 'clusters'

View file

@ -1061,6 +1061,12 @@ class Project < ActiveRecord::Base
path
end
def all_clusters
group_clusters = Clusters::Cluster.joins(:groups).where(cluster_groups: { group_id: ancestors_upto } )
Clusters::Cluster.from_union([clusters, group_clusters])
end
def items_for(entity)
case entity
when 'issue' then

View file

@ -3984,6 +3984,27 @@ describe Project do
end
end
describe '#all_clusters' do
let(:project) { create(:project) }
let(:cluster) { create(:cluster, cluster_type: :project_type, projects: [project]) }
subject { project.all_clusters }
it 'returns project level cluster' do
expect(subject).to eq([cluster])
end
context 'project belongs to a group' do
let(:group_cluster) { create(:cluster, :group) }
let(:group) { group_cluster.group }
let(:project) { create(:project, group: group) }
it 'returns clusters for groups of this project' do
expect(subject).to contain_exactly(cluster, group_cluster)
end
end
end
def rugged_config
rugged_repo(project.repository).config
end