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

feature_flag_spec.rb « features « graphql « spec - gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
blob: b06718eb16ae82d76cb7117cba5effb9c962b6e8 (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
# frozen_string_literal: true

require 'spec_helper'

RSpec.describe 'Graphql Field feature flags' do
  include GraphqlHelpers
  include Graphql::ResolverFactories

  let_it_be(:user) { create(:user) }

  let(:feature_flag) { 'test_feature' }
  let(:test_object) { double(name: 'My name') }
  let(:query_string) { '{ item { name } }' }
  let(:result) { execute_query(query_type)['data'] }

  before do
    skip_feature_flags_yaml_validation
  end

  subject { result }

  describe 'Feature flagged field' do
    let(:type) { type_factory }

    let(:query_type) do
      query_factory do |query|
        query.field :item, type, null: true, _deprecated_feature_flag: feature_flag, resolver: new_resolver(test_object)
      end
    end

    it 'checks YAML definition for default_enabled' do
      # Exception is indicative of a check for YAML definition
      expect { subject }.to raise_error(Feature::InvalidFeatureFlagError, /The feature flag YAML definition for '#{feature_flag}' does not exist/)
    end

    context 'skipping YAML check' do
      before do
        skip_default_enabled_yaml_check
      end

      it 'returns the value when feature is enabled' do
        expect(subject['item']).to eq('name' => test_object.name)
      end

      it 'returns nil when the feature is disabled' do
        stub_feature_flags(feature_flag => false)

        expect(subject).to be_nil
      end
    end
  end
end