* Softrun rubocop * Hardrun rubocop (-A) * Change a rubocop rule * Add missing cops * Undo & redo rubocop -A
65 lines
2 KiB
Ruby
65 lines
2 KiB
Ruby
require "rails_helper"
|
|
|
|
RSpec.describe "Api::V1::FeatureFlagsController" do
|
|
let(:flag) { "test_flag" }
|
|
let(:params) { { flag: flag } }
|
|
let(:headers) { { "Accept" => "application/vnd.forem.api-v1+json" } }
|
|
|
|
it "is not available in the production environment" do
|
|
# We really need an ActiveSupport::StringInquirer here
|
|
# rubocop:disable Rails/Inquiry
|
|
allow(Rails).to receive(:env).and_return("production".inquiry)
|
|
# rubocop:enable Rails/Inquiry
|
|
|
|
expect do
|
|
post api_feature_flags_path, params: params, headers: headers
|
|
end.to raise_error(ActionController::RoutingError)
|
|
end
|
|
|
|
context "when toggling feature flags" do
|
|
before { FeatureFlag.add(flag) }
|
|
|
|
after { FeatureFlag.remove(flag) }
|
|
|
|
it "can enable a disabled feature flag" do
|
|
FeatureFlag.disable(flag)
|
|
|
|
expect do
|
|
post api_feature_flags_path, params: params, headers: headers
|
|
end.to change { FeatureFlag.enabled?(flag) }.from(false).to(true)
|
|
end
|
|
|
|
it "keeps the flag enabled when it was already enabled" do
|
|
FeatureFlag.enable(flag)
|
|
|
|
expect do
|
|
post api_feature_flags_path, params: params, headers: headers
|
|
end.not_to change { FeatureFlag.enabled?(flag) }.from(true)
|
|
end
|
|
|
|
it "can disable an enabled feature flag" do
|
|
FeatureFlag.enable(flag)
|
|
|
|
expect do
|
|
delete api_feature_flags_path, params: params, headers: headers
|
|
end.to change { FeatureFlag.enabled?(flag) }.from(true).to(false)
|
|
end
|
|
|
|
it "keeps the flag disabled when it was already disabled" do
|
|
FeatureFlag.disable(flag)
|
|
|
|
expect do
|
|
delete api_feature_flags_path, params: params, headers: headers
|
|
end.not_to change { FeatureFlag.enabled?(flag) }.from(false)
|
|
end
|
|
|
|
it "shows the current value of a feature flag" do
|
|
FeatureFlag.enable(flag)
|
|
|
|
get api_feature_flags_path(flag: flag), headers: headers
|
|
|
|
parsed_response = response.parsed_body
|
|
expect(parsed_response[flag]).to be true
|
|
end
|
|
end
|
|
end
|