Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'spec/tooling/danger/experiments_spec.rb')
-rw-r--r--spec/tooling/danger/experiments_spec.rb59
1 files changed, 59 insertions, 0 deletions
diff --git a/spec/tooling/danger/experiments_spec.rb b/spec/tooling/danger/experiments_spec.rb
new file mode 100644
index 00000000000..85f8060a3ec
--- /dev/null
+++ b/spec/tooling/danger/experiments_spec.rb
@@ -0,0 +1,59 @@
+# frozen_string_literal: true
+
+require 'gitlab-dangerfiles'
+require 'gitlab/dangerfiles/spec_helper'
+
+require_relative '../../../tooling/danger/experiments'
+
+RSpec.describe Tooling::Danger::Experiments, feature_category: :tooling do
+ include_context "with dangerfile"
+
+ let(:fake_danger) { DangerSpecHelper.fake_danger.include(described_class) }
+
+ subject(:experiments) { fake_danger.new(helper: fake_helper) }
+
+ describe '#removed_experiments' do
+ let(:removed_experiments_yml_files) do
+ [
+ 'config/feature_flags/experiment/tier_badge.yml',
+ 'ee/config/feature_flags/experiment/direct_to_trial.yml'
+ ]
+ end
+
+ let(:deleted_files) do
+ [
+ 'app/models/model.rb',
+ 'app/assets/javascripts/file.js'
+ ] + removed_experiments_yml_files
+ end
+
+ it 'returns names of removed experiments' do
+ expect(experiments.removed_experiments).to eq(%w[tier_badge direct_to_trial])
+ end
+ end
+
+ describe '#class_files_removed?' do
+ let(:removed_experiments_name) { current_experiment_with_class_files_example }
+
+ context 'when yml file is deleted but not class file' do
+ let(:deleted_files) { ["config/feature_flags/experiment/#{removed_experiments_name}.yml"] }
+
+ it 'returns false' do
+ expect(experiments.class_files_removed?).to eq(false)
+ end
+ end
+
+ context 'when yml file is deleted but no corresponding class file exists' do
+ let(:deleted_files) { ["config/feature_flags/experiment/fake_experiment.yml"] }
+
+ it 'returns true' do
+ expect(experiments.class_files_removed?).to eq(true)
+ end
+ end
+ end
+
+ def current_experiment_with_class_files_example
+ path = Dir.glob("app/experiments/*.rb").last
+ File.basename(path).chomp('_experiment.rb')
+ end
+end