diff --git a/config/mastodon.yml b/config/mastodon.yml index c1c17403681..e0f736eb594 100644 --- a/config/mastodon.yml +++ b/config/mastodon.yml @@ -10,3 +10,5 @@ shared: version: metadata: <%= ENV.fetch('MASTODON_VERSION_METADATA', nil) %> prerelease: <%= ENV.fetch('MASTODON_VERSION_PRERELEASE', nil) %> +test: + experimental_features: <%= [ENV.fetch('EXPERIMENTAL_FEATURES', nil), 'testing_only'].compact.join(',') %> diff --git a/lib/mastodon/feature.rb b/lib/mastodon/feature.rb index 18e6dc96390..650f1d7b8cc 100644 --- a/lib/mastodon/feature.rb +++ b/lib/mastodon/feature.rb @@ -19,8 +19,8 @@ module Mastodon::Feature super end - def respond_to_missing?(name) - name.to_s.end_with?('_enabled?') + def respond_to_missing?(name, include_all = false) + name.to_s.end_with?('_enabled?') || super end end end diff --git a/spec/lib/mastodon/feature_spec.rb b/spec/lib/mastodon/feature_spec.rb index a7fe4fe90b9..f8236d89599 100644 --- a/spec/lib/mastodon/feature_spec.rb +++ b/spec/lib/mastodon/feature_spec.rb @@ -3,28 +3,23 @@ require 'rails_helper' RSpec.describe Mastodon::Feature do - around do |example| - original_value = Rails.configuration.x.mastodon.experimental_features - Rails.configuration.x.mastodon.experimental_features = 'fasp,fetch_all_replies' - example.run - Rails.configuration.x.mastodon.experimental_features = original_value - end - - describe '::fasp_enabled?' do - subject { described_class.fasp_enabled? } - - it { is_expected.to be true } - end - - describe '::fetch_all_replies_enabled?' do - subject { described_class.fetch_all_replies_enabled? } + describe '::testing_only_enabled?' do + subject { described_class.testing_only_enabled? } it { is_expected.to be true } end describe '::unspecified_feature_enabled?' do - subject { described_class.unspecified_feature_enabled? } + context 'when example is not tagged with a feature' do + subject { described_class.unspecified_feature_enabled? } - it { is_expected.to be false } + it { is_expected.to be false } + end + + context 'when example is tagged with a feature', feature: 'unspecified_feature' do + subject { described_class.unspecified_feature_enabled? } + + it { is_expected.to be true } + end end end diff --git a/spec/support/feature_flags.rb b/spec/support/feature_flags.rb new file mode 100644 index 00000000000..186711163b7 --- /dev/null +++ b/spec/support/feature_flags.rb @@ -0,0 +1,8 @@ +# frozen_string_literal: true + +RSpec.configure do |config| + config.before(:example, :feature) do |example| + feature = example.metadata[:feature] + allow(Mastodon::Feature).to receive(:"#{feature}_enabled?").and_return(true) + end +end