Show clusters of ancestors in cluster list page
Show both the cluster(s) of the clusterable, and the cluster(s) of ancestor groups.
This commit is contained in:
parent
8b4602041c
commit
7e4f76ea89
|
@ -18,8 +18,8 @@ class Clusters::ClustersController < Clusters::BaseController
|
|||
STATUS_POLLING_INTERVAL = 10_000
|
||||
|
||||
def index
|
||||
clusters = ClustersFinder.new(clusterable, current_user, :all).execute
|
||||
@clusters = clusters.page(params[:page]).per(20)
|
||||
clusters = ClusterAncestorsFinder.new(clusterable.subject, current_user).execute
|
||||
@clusters = Kaminari.paginate_array(clusters).page(params[:page]).per(20)
|
||||
end
|
||||
|
||||
def new
|
||||
|
|
|
@ -0,0 +1,20 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
class ClusterAncestorsFinder
|
||||
def initialize(clusterable, user)
|
||||
@clusterable = clusterable
|
||||
@user = user
|
||||
end
|
||||
|
||||
def execute
|
||||
clusterable.clusters + ancestor_clusters
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
attr_reader :clusterable, :user
|
||||
|
||||
def ancestor_clusters
|
||||
Clusters::Cluster.ancestor_clusters_for_clusterable(clusterable)
|
||||
end
|
||||
end
|
|
@ -0,0 +1,5 @@
|
|||
---
|
||||
title: Show clusters of ancestors in cluster list page
|
||||
merge_request: 22996
|
||||
author:
|
||||
type: changed
|
|
@ -0,0 +1,61 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
require 'spec_helper'
|
||||
|
||||
describe ClusterAncestorsFinder, '#execute' do
|
||||
let(:group) { create(:group) }
|
||||
let(:project) { create(:project, group: group) }
|
||||
let(:user) { create(:user) }
|
||||
|
||||
let!(:project_cluster) do
|
||||
create(:cluster, :provided_by_user, cluster_type: :project_type, projects: [project])
|
||||
end
|
||||
|
||||
let!(:group_cluster) do
|
||||
create(:cluster, :provided_by_user, cluster_type: :group_type, groups: [group])
|
||||
end
|
||||
|
||||
subject { described_class.new(clusterable, user).execute }
|
||||
|
||||
context 'for a project' do
|
||||
let(:clusterable) { project }
|
||||
|
||||
it 'returns the project clusters followed by group clusters' do
|
||||
is_expected.to eq([project_cluster, group_cluster])
|
||||
end
|
||||
|
||||
context 'nested groups', :nested_groups do
|
||||
let(:group) { create(:group, parent: parent_group) }
|
||||
let(:parent_group) { create(:group) }
|
||||
|
||||
let!(:parent_group_cluster) do
|
||||
create(:cluster, :provided_by_user, cluster_type: :group_type, groups: [parent_group])
|
||||
end
|
||||
|
||||
it 'returns the project clusters followed by group clusters ordered ascending the hierarchy' do
|
||||
is_expected.to eq([project_cluster, group_cluster, parent_group_cluster])
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
context 'for a group' do
|
||||
let(:clusterable) { group }
|
||||
|
||||
it 'returns the list of group clusters' do
|
||||
is_expected.to eq([group_cluster])
|
||||
end
|
||||
|
||||
context 'nested groups', :nested_groups do
|
||||
let(:group) { create(:group, parent: parent_group) }
|
||||
let(:parent_group) { create(:group) }
|
||||
|
||||
let!(:parent_group_cluster) do
|
||||
create(:cluster, :provided_by_user, cluster_type: :group_type, groups: [parent_group])
|
||||
end
|
||||
|
||||
it 'returns the list of group clusters ordered ascending the hierarchy' do
|
||||
is_expected.to eq([group_cluster, parent_group_cluster])
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
Loading…
Reference in New Issue