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

experiments_spec.rb « danger « tooling « spec - gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
blob: 7c4921670a35fba0caf49f3c30b048605d0e4d11 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
# frozen_string_literal: true

require 'fast_spec_helper'
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