From 06cb48534db649c9178e275d894d18f7327f90c7 Mon Sep 17 00:00:00 2001
From: Adam Hegyi <ahegyi@gitlab.com>
Date: Wed, 13 Jan 2021 13:37:12 +0100
Subject: [PATCH] Enable devops_adoption feature flag conditionally

This change enables the devops_adoption_feature flag by default if the
feature is already in use.
---
 app/views/admin/dev_ops_report/show.html.haml |  3 +-
 ...ops-adoption-ff-when-feature-is-in-use.yml |  5 +++
 .../dev_ops_report/show.html.haml_spec.rb     | 35 +++++++++++++++++++
 3 files changed, 42 insertions(+), 1 deletion(-)
 create mode 100644 ee/changelogs/unreleased/enable-devops-adoption-ff-when-feature-is-in-use.yml
 create mode 100644 ee/spec/views/admin/dev_ops_report/show.html.haml_spec.rb

diff --git a/app/views/admin/dev_ops_report/show.html.haml b/app/views/admin/dev_ops_report/show.html.haml
index 733c0de9fe978..7659f02bdce12 100644
--- a/app/views/admin/dev_ops_report/show.html.haml
+++ b/app/views/admin/dev_ops_report/show.html.haml
@@ -3,7 +3,8 @@
 
 .container
   .gl-mt-3
-    - if Gitlab.ee? && Feature.enabled?(:devops_adoption_feature, default_enabled: false) && License.feature_available?(:devops_adoption)
+    - feature_already_in_use = Analytics::DevopsAdoption::Segment.any?
+    - if Gitlab.ee? && Feature.enabled?(:devops_adoption_feature, default_enabled: feature_already_in_use) && License.feature_available?(:devops_adoption)
       = render_if_exists 'admin/dev_ops_report/devops_tabs'
     - else
       = render 'report'
diff --git a/ee/changelogs/unreleased/enable-devops-adoption-ff-when-feature-is-in-use.yml b/ee/changelogs/unreleased/enable-devops-adoption-ff-when-feature-is-in-use.yml
new file mode 100644
index 0000000000000..18930976ed152
--- /dev/null
+++ b/ee/changelogs/unreleased/enable-devops-adoption-ff-when-feature-is-in-use.yml
@@ -0,0 +1,5 @@
+---
+title: Enable DevOps Adoption Report feature flag if any Segments already exist
+merge_request: 51602
+author:
+type: other
diff --git a/ee/spec/views/admin/dev_ops_report/show.html.haml_spec.rb b/ee/spec/views/admin/dev_ops_report/show.html.haml_spec.rb
new file mode 100644
index 0000000000000..65bc1efc3e5fc
--- /dev/null
+++ b/ee/spec/views/admin/dev_ops_report/show.html.haml_spec.rb
@@ -0,0 +1,35 @@
+# frozen_string_literal: true
+
+require 'spec_helper'
+
+RSpec.describe 'admin/dev_ops_report/show.html.haml' do
+  include Devise::Test::ControllerHelpers
+
+  before do
+    stub_licensed_features(devops_adoption: true)
+  end
+
+  context 'when no segment record is present' do
+    it 'disables the feature' do
+      expect(Feature).to receive(:enabled?).with(:devops_adoption_feature, default_enabled: false).and_return(false)
+
+      render
+
+      expect(rendered).not_to have_selector('#devops-adoption')
+    end
+  end
+
+  context 'when at least one segment record is present' do
+    before do
+      create(:devops_adoption_segment)
+    end
+
+    it 'enables the feature' do
+      expect(Feature).to receive(:enabled?).with(:devops_adoption_feature, default_enabled: true).and_return(true)
+
+      render
+
+      expect(rendered).to have_selector('#devops-adoption')
+    end
+  end
+end
-- 
GitLab