gitlab-org--gitlab-foss/spec/lib/gitlab/gon_helper_spec.rb
Yorick Peterse 21940d1edf
Support pushing of feature flags to the frontend
This adds a method to Gitlab::GonHelper called
`push_frontend_feature_flag`. This method can be used to easily expose
the state of a feature flag to Javascript code. For example, using this
method we may write the following controller code:

    before_action do
      push_frontend_feature_flag(:vim_bindings)
    end

    def index
      # ...
    end

    def edit
      # ...
    end

In Javascript we can then check the state of the flag as follows:

    if ( gon.features.vimBindings ) {
      // ...
    }

Fixes https://gitlab.com/gitlab-org/release/framework/issues/17
2018-10-11 17:06:19 +02:00

32 lines
677 B
Ruby

# frozen_string_literal: true
require 'spec_helper'
describe Gitlab::GonHelper do
let(:helper) do
Class.new do
include Gitlab::GonHelper
end.new
end
describe '#push_frontend_feature_flag' do
it 'pushes a feature flag to the frontend' do
gon = instance_double('gon')
allow(helper)
.to receive(:gon)
.and_return(gon)
expect(Feature)
.to receive(:enabled?)
.with(:my_feature_flag, 10)
.and_return(true)
expect(gon)
.to receive(:push)
.with({ features: { 'myFeatureFlag' => true } }, true)
helper.push_frontend_feature_flag(:my_feature_flag, 10)
end
end
end