diff options
-rw-r--r-- | app/finders/clusters_finder.rb | 30 | ||||
-rw-r--r-- | spec/finders/clusters_finder_spec.rb | 10 |
2 files changed, 25 insertions, 15 deletions
diff --git a/app/finders/clusters_finder.rb b/app/finders/clusters_finder.rb index 2b29c7bdf12..26bae3193da 100644 --- a/app/finders/clusters_finder.rb +++ b/app/finders/clusters_finder.rb @@ -1,19 +1,29 @@ class ClustersFinder + attr_reader :project, :user, :scope + def initialize(project, user, scope) @project = project @user = user - @scope = scope + @scope = scope || :active end def execute - clusters = case @scope - when :all - @project.clusters - when :enabled - @project.clusters.enabled - when :disabled - @project.clusters.disabled - end - clusters.map { |cluster| cluster.present(current_user: @user) } + clusters = project.clusters + filter_by_scope(clusters) + end + + private + + def filter_by_scope(clusters) + case @scope.to_sym + when :all + clusters + when :inactive + clusters.disabled + when :active + clusters.enabled + else + raise "Invalid scope #{@scope}" + end end end diff --git a/spec/finders/clusters_finder_spec.rb b/spec/finders/clusters_finder_spec.rb index 29fb3846d03..3e7bbbe39c4 100644 --- a/spec/finders/clusters_finder_spec.rb +++ b/spec/finders/clusters_finder_spec.rb @@ -15,19 +15,19 @@ describe ClustersFinder do context 'when scope is all' do let(:scope) { :all } - it { is_expected.to eq(project.clusters.to_a) } + it { is_expected.to eq(project.clusters) } end context 'when scope is enabled' do - let(:scope) { :enabled } + let(:scope) { :active } - it { is_expected.to eq(project.clusters.enabled.to_a) } + it { is_expected.to eq(project.clusters.enabled) } end context 'when scope is disabled' do - let(:scope) { :disabled } + let(:scope) { :inactive } - it { is_expected.to eq(project.clusters.disabled.to_a) } + it { is_expected.to eq(project.clusters.disabled) } end end end |