summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatija Čupić <matteeyah@gmail.com>2017-12-05 18:55:20 +0100
committerMatija Čupić <matteeyah@gmail.com>2017-12-05 18:55:20 +0100
commitce210c4a735a31c4c3b07d2d0ba46be2091d1b0d (patch)
tree96b3c34605b763609e0e201ee039eea0a92b4ccb
parentee7feab5b427e1c780beb1a47c737bb3ee652591 (diff)
parentfc4f3164a6ba8e5ae1bb0792ea7f1ebb4753ccb4 (diff)
downloadgitlab-ce-ce210c4a735a31c4c3b07d2d0ba46be2091d1b0d.tar.gz
Merge branch 'list-multiple-clusters' into multiple-clusters-single-list
-rw-r--r--app/helpers/clusters_helper.rb5
-rw-r--r--app/presenters/clusters/cluster_presenter.rb4
-rw-r--r--app/views/projects/clusters/_cluster.html.haml4
-rw-r--r--app/views/projects/clusters/index.html.haml2
-rw-r--r--spec/features/projects/clusters_spec.rb23
-rw-r--r--spec/helpers/clusters_helper_spec.rb45
-rw-r--r--spec/presenters/clusters/cluster_presenter_spec.rb40
7 files changed, 61 insertions, 62 deletions
diff --git a/app/helpers/clusters_helper.rb b/app/helpers/clusters_helper.rb
deleted file mode 100644
index f8281c893fa..00000000000
--- a/app/helpers/clusters_helper.rb
+++ /dev/null
@@ -1,5 +0,0 @@
-module ClustersHelper
- def can_toggle_cluster?(cluster)
- can?(current_user, :update_cluster, cluster) && cluster.created?
- end
-end
diff --git a/app/presenters/clusters/cluster_presenter.rb b/app/presenters/clusters/cluster_presenter.rb
index 01cb59d0d44..a424da5ab24 100644
--- a/app/presenters/clusters/cluster_presenter.rb
+++ b/app/presenters/clusters/cluster_presenter.rb
@@ -5,5 +5,9 @@ module Clusters
def gke_cluster_url
"https://console.cloud.google.com/kubernetes/clusters/details/#{provider.zone}/#{name}" if gcp?
end
+
+ def can_toggle_cluster?
+ can?(current_user, :update_cluster, cluster) && created?
+ end
end
end
diff --git a/app/views/projects/clusters/_cluster.html.haml b/app/views/projects/clusters/_cluster.html.haml
index d292d68386c..18ca01d2d49 100644
--- a/app/views/projects/clusters/_cluster.html.haml
+++ b/app/views/projects/clusters/_cluster.html.haml
@@ -13,9 +13,9 @@
.table-mobile-header{ role: "rowheader" }
.table-mobile-content
%button{ type: "button",
- class: "js-toggle-cluster-list project-feature-toggle #{'is-checked' if cluster.enabled?} #{'is-disabled' if !can_toggle_cluster?(cluster)}",
+ class: "js-toggle-cluster-list project-feature-toggle #{'is-checked' if cluster.enabled?} #{'is-disabled' if !cluster.can_toggle_cluster?}",
"aria-label": s_("ClusterIntegration|Toggle Cluster"),
- disabled: !can_toggle_cluster?(cluster),
+ disabled: !cluster.can_toggle_cluster?,
data: { "enabled-text": s_("ClusterIntegration|Active"),
"disabled-text": s_("ClusterIntegration|Inactive"),
endpoint: namespace_project_cluster_path(@project.namespace, @project, cluster, format: :json) } }
diff --git a/app/views/projects/clusters/index.html.haml b/app/views/projects/clusters/index.html.haml
index c991a8db331..f14ec0594dd 100644
--- a/app/views/projects/clusters/index.html.haml
+++ b/app/views/projects/clusters/index.html.haml
@@ -20,5 +20,5 @@
= s_("ClusterIntegration|Project namespace")
.table-section.section-10{ role: "rowheader" }
- @clusters.each do |cluster|
- = render "cluster", cluster: cluster
+ = render "cluster", cluster: cluster.present(current_user: current_user)
= paginate @clusters, theme: "gitlab"
diff --git a/spec/features/projects/clusters_spec.rb b/spec/features/projects/clusters_spec.rb
index e3dae6e0607..3eb15b0d5f6 100644
--- a/spec/features/projects/clusters_spec.rb
+++ b/spec/features/projects/clusters_spec.rb
@@ -25,32 +25,37 @@ feature 'Clusters', :js do
context 'when user has a cluster and visits cluster index page' do
let!(:cluster) { create(:cluster, :project, :provided_by_gcp) }
let(:project) { cluster.project }
-
+
before do
visit project_clusters_path(project)
end
-
+
it 'user sees a disabled add cluster button ' do
expect(page).to have_selector('.js-add-cluster.disabled')
end
-
+
+ it 'user sees a table with one cluster' do
+ # One is the header row, the other the cluster row
+ expect(page).to have_selector('.gl-responsive-table-row', count: 2)
+ end
+
context 'inline update of cluster' do
it 'user can update cluster' do
expect(page).to have_selector('.js-toggle-cluster-list')
end
-
+
context 'with sucessfull request' do
it 'user sees updated cluster' do
expect do
page.find('.js-toggle-cluster-list').click
wait_for_requests
end.to change { cluster.reload.enabled }
-
+
expect(page).not_to have_selector('.is-checked')
expect(cluster.reload).not_to be_enabled
end
end
-
+
context 'with failed request' do
it 'user sees not update cluster and error message' do
expect_any_instance_of(Clusters::UpdateService).to receive(:execute).and_call_original
@@ -64,16 +69,16 @@ feature 'Clusters', :js do
end
end
end
-
+
context 'when user clicks on a cluster' do
before do
click_link cluster.name
end
-
+
it 'user sees a cluster details page' do
expect(page).to have_button('Save')
expect(page.find(:css, '.cluster-name').value).to eq(cluster.name)
end
end
- end
+ end
end
diff --git a/spec/helpers/clusters_helper_spec.rb b/spec/helpers/clusters_helper_spec.rb
deleted file mode 100644
index 459fdfdc5a4..00000000000
--- a/spec/helpers/clusters_helper_spec.rb
+++ /dev/null
@@ -1,45 +0,0 @@
-require 'spec_helper'
-
-describe ClustersHelper do
- let(:cluster) { create(:cluster) }
-
- describe '.can_toggle_cluster' do
- let(:user) { create(:user) }
-
- before do
- allow(helper).to receive(:current_user).and_return(user)
- end
-
- subject { helper.can_toggle_cluster?(cluster) }
-
- context 'when user can update' do
- before do
- allow(helper).to receive(:can?).with(any_args).and_return(true)
- end
-
- context 'when cluster is created' do
- before do
- allow(cluster).to receive(:created?).and_return(true)
- end
-
- it { is_expected.to eq(true) }
- end
-
- context 'when cluster is not created' do
- before do
- allow(cluster).to receive(:created?).and_return(false)
- end
-
- it { is_expected.to eq(false) }
- end
- end
-
- context 'when user can not update' do
- before do
- allow(helper).to receive(:can?).with(any_args).and_return(false)
- end
-
- it { is_expected.to eq(false) }
- end
- end
-end
diff --git a/spec/presenters/clusters/cluster_presenter_spec.rb b/spec/presenters/clusters/cluster_presenter_spec.rb
index 48d4f3671c5..e96dbfb73c0 100644
--- a/spec/presenters/clusters/cluster_presenter_spec.rb
+++ b/spec/presenters/clusters/cluster_presenter_spec.rb
@@ -31,4 +31,44 @@ describe Clusters::ClusterPresenter do
it { is_expected.to include(cluster.provider.zone) }
it { is_expected.to include(cluster.name) }
end
+
+ describe '#can_toggle_cluster' do
+ let(:user) { create(:user) }
+
+ before do
+ allow(cluster).to receive(:current_user).and_return(user)
+ end
+
+ subject { described_class.new(cluster).can_toggle_cluster? }
+
+ context 'when user can update' do
+ before do
+ allow_any_instance_of(described_class).to receive(:can?).with(user, :update_cluster, cluster).and_return(true)
+ end
+
+ context 'when cluster is created' do
+ before do
+ allow(cluster).to receive(:created?).and_return(true)
+ end
+
+ it { is_expected.to eq(true) }
+ end
+
+ context 'when cluster is not created' do
+ before do
+ allow(cluster).to receive(:created?).and_return(false)
+ end
+
+ it { is_expected.to eq(false) }
+ end
+ end
+
+ context 'when user can not update' do
+ before do
+ allow_any_instance_of(described_class).to receive(:can?).with(user, :update_cluster, cluster).and_return(false)
+ end
+
+ it { is_expected.to eq(false) }
+ end
+ end
end