summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatija Čupić <matteeyah@gmail.com>2018-01-27 17:32:10 +0100
committerMatija Čupić <matteeyah@gmail.com>2018-01-27 17:32:10 +0100
commitec6c5833b62df7ff1fe69d4b874762713b4068a5 (patch)
treea754fff5484fa1ef88dd46b0ad4fa86b23d1d25f
parentd77181d5b5d79e085f9888ac42606ac9db3fc4cf (diff)
downloadgitlab-ce-ec6c5833b62df7ff1fe69d4b874762713b4068a5.tar.gz
Implement CalloutsHelper
-rw-r--r--app/helpers/callouts_helper.rb11
-rw-r--r--spec/helpers/callouts_helper_spec.rb45
2 files changed, 56 insertions, 0 deletions
diff --git a/app/helpers/callouts_helper.rb b/app/helpers/callouts_helper.rb
new file mode 100644
index 00000000000..e435879ee43
--- /dev/null
+++ b/app/helpers/callouts_helper.rb
@@ -0,0 +1,11 @@
+module CalloutsHelper
+ def show_gke_cluster_integration_callout?(kube_feature_name, project)
+ !user_dismissed?(kube_feature_name) && project.team.master?(current_user)
+ end
+
+ private
+
+ def user_dismissed?(feature_name)
+ Callout.find_by(user: current_user, feature_name: feature_name).dismissed_state?
+ end
+end
diff --git a/spec/helpers/callouts_helper_spec.rb b/spec/helpers/callouts_helper_spec.rb
new file mode 100644
index 00000000000..feabbf33ef6
--- /dev/null
+++ b/spec/helpers/callouts_helper_spec.rb
@@ -0,0 +1,45 @@
+require "spec_helper"
+
+describe CalloutsHelper do
+ let(:user) { create(:user) }
+
+ before do
+ allow(helper).to receive(:current_user).and_return(user)
+ end
+
+ describe '.show_gke_cluster_integration_callout?' do
+ let(:project) { create(:project) }
+
+ subject { helper.show_gke_cluster_integration_callout?('test_name', project) }
+
+ context 'when user has not dismissed' do
+ before do
+ allow(helper).to receive(:user_dismissed?).and_return(false)
+ end
+
+ context 'when user is master' do
+ before do
+ allow(project).to receive_message_chain(:team, :master?).and_return(true)
+ end
+
+ it { is_expected.to be true }
+ end
+
+ context 'when user is not master' do
+ before do
+ allow(project).to receive_message_chain(:team, :master?).and_return(false)
+ end
+
+ it { is_expected.to be false }
+ end
+ end
+
+ context 'when user dismissed' do
+ before do
+ allow(helper).to receive(:user_dismissed?).and_return(true)
+ end
+
+ it { is_expected.to be false }
+ end
+ end
+end