21940d1edf
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
32 lines
677 B
Ruby
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
|