From 21940d1edf1604f192957691e99677d191380543 Mon Sep 17 00:00:00 2001 From: Yorick Peterse Date: Mon, 8 Oct 2018 16:24:40 +0200 Subject: 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 --- spec/lib/gitlab/gon_helper_spec.rb | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 spec/lib/gitlab/gon_helper_spec.rb (limited to 'spec/lib/gitlab/gon_helper_spec.rb') diff --git a/spec/lib/gitlab/gon_helper_spec.rb b/spec/lib/gitlab/gon_helper_spec.rb new file mode 100644 index 00000000000..c6f09ca2112 --- /dev/null +++ b/spec/lib/gitlab/gon_helper_spec.rb @@ -0,0 +1,32 @@ +# 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 -- cgit v1.2.1