diff options
author | Matija Čupić <matteeyah@gmail.com> | 2017-12-05 18:55:20 +0100 |
---|---|---|
committer | Matija Čupić <matteeyah@gmail.com> | 2017-12-05 18:55:20 +0100 |
commit | ce210c4a735a31c4c3b07d2d0ba46be2091d1b0d (patch) | |
tree | 96b3c34605b763609e0e201ee039eea0a92b4ccb | |
parent | ee7feab5b427e1c780beb1a47c737bb3ee652591 (diff) | |
parent | fc4f3164a6ba8e5ae1bb0792ea7f1ebb4753ccb4 (diff) | |
download | gitlab-ce-ce210c4a735a31c4c3b07d2d0ba46be2091d1b0d.tar.gz |
Merge branch 'list-multiple-clusters' into multiple-clusters-single-list
-rw-r--r-- | app/helpers/clusters_helper.rb | 5 | ||||
-rw-r--r-- | app/presenters/clusters/cluster_presenter.rb | 4 | ||||
-rw-r--r-- | app/views/projects/clusters/_cluster.html.haml | 4 | ||||
-rw-r--r-- | app/views/projects/clusters/index.html.haml | 2 | ||||
-rw-r--r-- | spec/features/projects/clusters_spec.rb | 23 | ||||
-rw-r--r-- | spec/helpers/clusters_helper_spec.rb | 45 | ||||
-rw-r--r-- | spec/presenters/clusters/cluster_presenter_spec.rb | 40 |
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 |