Read about our upcoming Code of Conduct on this issue

Commit dbcdf931 authored by Robert Speicher's avatar Robert Speicher
Browse files

Add ProjectFeature check for feature flag

This will allow an explicitly-disabled feature flag to override a
feature being available for a project.

As an extreme example, we could quickly disable issues across all
projects at runtime by running `Feature.disable(:issues)`.
parent 1ecb2622eb54
......@@ -55,6 +55,9 @@ def quoted_access_level_column(feature)
default_value_for :repository_access_level, value: ENABLED, allows_nil: false
def feature_available?(feature, user)
# This feature might not be behind a feature flag at all, so default to true
return false unless ::Feature.enabled?(feature, user, default_enabled: true)
get_permission(user, access_level(feature))
end
......
......@@ -73,6 +73,22 @@
end
end
end
context 'when feature is disabled by a feature flag' do
it 'returns false' do
stub_feature_flags(issues: false)
expect(project.feature_available?(:issues, user)).to eq(false)
end
end
context 'when feature is enabled by a feature flag' do
it 'returns true' do
stub_feature_flags(issues: true)
expect(project.feature_available?(:issues, user)).to eq(true)
end
end
end
context 'repository related features' do
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment