summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorShinya Maeda <shinya@gitlab.com>2017-10-06 02:45:15 +0900
committerShinya Maeda <shinya@gitlab.com>2017-10-06 02:45:15 +0900
commit6712762b9d6e0391b1a38ca17cc3d982a336bbf9 (patch)
treebbb3b008409a18aca0bbd86480ac4b52eb33668e
parentd27b113b49c90ba7d184f0d7965b63e32d260ebf (diff)
downloadgitlab-ce-6712762b9d6e0391b1a38ca17cc3d982a336bbf9.tar.gz
Add ClusterPresenter. Fix Static Analysys.
-rw-r--r--app/controllers/projects/clusters_controller.rb2
-rw-r--r--app/models/gcp/cluster.rb1
-rw-r--r--app/presenters/gcp/cluster_presenter.rb9
-rw-r--r--app/views/projects/clusters/show.html.haml2
-rw-r--r--spec/controllers/projects/clusters_controller_spec.rb20
-rw-r--r--spec/presenters/gcp/cluster_presenter_spec.rb35
6 files changed, 56 insertions, 13 deletions
diff --git a/app/controllers/projects/clusters_controller.rb b/app/controllers/projects/clusters_controller.rb
index bd286b87a29..77644602b72 100644
--- a/app/controllers/projects/clusters_controller.rb
+++ b/app/controllers/projects/clusters_controller.rb
@@ -81,7 +81,7 @@ class Projects::ClustersController < Projects::ApplicationController
private
def cluster
- @cluster ||= project.cluster
+ @cluster ||= project.cluster.present(current_user: current_user)
end
def create_params
diff --git a/app/models/gcp/cluster.rb b/app/models/gcp/cluster.rb
index 0e8b920741d..18bd6a6dcb4 100644
--- a/app/models/gcp/cluster.rb
+++ b/app/models/gcp/cluster.rb
@@ -1,6 +1,7 @@
module Gcp
class Cluster < ActiveRecord::Base
extend Gitlab::Gcp::Model
+ include Presentable
belongs_to :project, inverse_of: :cluster
belongs_to :user
diff --git a/app/presenters/gcp/cluster_presenter.rb b/app/presenters/gcp/cluster_presenter.rb
new file mode 100644
index 00000000000..f7908f92a37
--- /dev/null
+++ b/app/presenters/gcp/cluster_presenter.rb
@@ -0,0 +1,9 @@
+module Gcp
+ class ClusterPresenter < Gitlab::View::Presenter::Delegated
+ presents :cluster
+
+ def gke_cluster_url
+ "https://console.cloud.google.com/kubernetes/clusters/details/#{gcp_cluster_zone}/#{gcp_cluster_name}"
+ end
+ end
+end
diff --git a/app/views/projects/clusters/show.html.haml b/app/views/projects/clusters/show.html.haml
index 48d9835d588..b7b4c3c389c 100644
--- a/app/views/projects/clusters/show.html.haml
+++ b/app/views/projects/clusters/show.html.haml
@@ -37,7 +37,7 @@
%label
= s_('ClusterIntegration|Google container engine')
%p
- - link_gke = link_to(s_('ClusterIntegration|Google Container Engine'), '', target: '_blank', rel: 'noopener noreferrer')
+ - link_gke = link_to(s_('ClusterIntegration|Google Container Engine'), @cluster.gke_cluster_url, target: '_blank', rel: 'noopener noreferrer')
= s_('ClusterIntegration|Manage your cluster by visiting %{link_gke}').html_safe % { link_gke: link_gke }
.hidden.js-cluster-error.alert.alert-danger{ role: 'alert' }
diff --git a/spec/controllers/projects/clusters_controller_spec.rb b/spec/controllers/projects/clusters_controller_spec.rb
index af182a20f14..604b92caca6 100644
--- a/spec/controllers/projects/clusters_controller_spec.rb
+++ b/spec/controllers/projects/clusters_controller_spec.rb
@@ -100,9 +100,8 @@ describe Projects::ClustersController do
describe 'POST create' do
subject do
- post :create, params.merge(
- namespace_id: project.namespace,
- project_id: project)
+ post :create, params.merge(namespace_id: project.namespace,
+ project_id: project)
end
context 'when not logged' do
@@ -117,12 +116,12 @@ describe Projects::ClustersController do
end
context 'when all required parameters are set' do
- let(:params) do
+ let(:params) do
{
cluster: {
gcp_cluster_name: 'new-cluster',
- gcp_project_id: '111',
- }
+ gcp_project_id: '111'
+ }
}
end
@@ -140,7 +139,7 @@ describe Projects::ClustersController do
context 'when not all required parameters are set' do
render_views
- let(:params) do
+ let(:params) do
{
cluster: {
project_namespace: 'some namespace'
@@ -221,10 +220,9 @@ describe Projects::ClustersController do
let(:params) { {} }
subject do
- put :update, params.merge(
- namespace_id: project.namespace,
- project_id: project,
- id: cluster)
+ put :update, params.merge(namespace_id: project.namespace,
+ project_id: project,
+ id: cluster)
end
context 'when logged as master' do
diff --git a/spec/presenters/gcp/cluster_presenter_spec.rb b/spec/presenters/gcp/cluster_presenter_spec.rb
new file mode 100644
index 00000000000..8d86dc31582
--- /dev/null
+++ b/spec/presenters/gcp/cluster_presenter_spec.rb
@@ -0,0 +1,35 @@
+require 'spec_helper'
+
+describe Gcp::ClusterPresenter do
+ let(:project) { create(:project) }
+ let(:cluster) { create(:gcp_cluster, project: project) }
+
+ subject(:presenter) do
+ described_class.new(cluster)
+ end
+
+ it 'inherits from Gitlab::View::Presenter::Delegated' do
+ expect(described_class.superclass).to eq(Gitlab::View::Presenter::Delegated)
+ end
+
+ describe '#initialize' do
+ it 'takes a cluster and optional params' do
+ expect { presenter }.not_to raise_error
+ end
+
+ it 'exposes cluster' do
+ expect(presenter.cluster).to eq(cluster)
+ end
+
+ it 'forwards missing methods to cluster' do
+ expect(presenter.gcp_cluster_zone).to eq(cluster.gcp_cluster_zone)
+ end
+ end
+
+ describe '#gke_cluster_url' do
+ subject { described_class.new(cluster).gke_cluster_url }
+
+ it { is_expected.to include(cluster.gcp_cluster_zone) }
+ it { is_expected.to include(cluster.gcp_cluster_name) }
+ end
+end