summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Kozono <mkozono@gmail.com>2018-09-24 12:29:22 -0700
committerMichael Kozono <mkozono@gmail.com>2018-09-24 12:29:22 -0700
commit74ae135888f55c17f6c53bcba9c1ca979a33724e (patch)
tree4035eda9d5a80652b5e6748d5355245363b7ee19
parenta54a5d9f39df505fe7c68e14c693553bd29bd725 (diff)
downloadgitlab-ce-mk/improve-usage-of-request-store.tar.gz
Refactor Feature.flipper methodmk/improve-usage-of-request-store
* Fix typo in context 'when request store is active' * Rearrange test since the instance variable always gets set now, even if RequestStore is active
-rw-r--r--lib/feature.rb6
-rw-r--r--spec/lib/feature_spec.rb20
2 files changed, 12 insertions, 14 deletions
diff --git a/lib/feature.rb b/lib/feature.rb
index a8324d99c10..0e90ad9a333 100644
--- a/lib/feature.rb
+++ b/lib/feature.rb
@@ -72,11 +72,7 @@ class Feature
end
def flipper
- if Gitlab::SafeRequestStore.active?
- Gitlab::SafeRequestStore[:flipper] ||= build_flipper_instance
- else
- @flipper ||= build_flipper_instance
- end
+ @flipper ||= (Gitlab::SafeRequestStore[:flipper] ||= build_flipper_instance)
end
def build_flipper_instance
diff --git a/spec/lib/feature_spec.rb b/spec/lib/feature_spec.rb
index 48c0ba8a653..9d56c62ae57 100644
--- a/spec/lib/feature_spec.rb
+++ b/spec/lib/feature_spec.rb
@@ -91,7 +91,11 @@ describe Feature do
end
describe '.flipper' do
- shared_examples 'a memoized Flipper instance' do
+ before do
+ described_class.instance_variable_set(:@flipper, nil)
+ end
+
+ context 'when request store is inactive' do
it 'memoizes the Flipper instance' do
expect(Flipper).to receive(:new).once.and_call_original
@@ -101,16 +105,14 @@ describe Feature do
end
end
- context 'when request store is inactive' do
- before do
+ context 'when request store is active', :request_store do
+ it 'memoizes the Flipper instance' do
+ expect(Flipper).to receive(:new).once.and_call_original
+
+ described_class.flipper
described_class.instance_variable_set(:@flipper, nil)
+ described_class.flipper
end
-
- it_behaves_like 'a memoized Flipper instance'
- end
-
- context 'when request store is inactive', :request_store do
- it_behaves_like 'a memoized Flipper instance'
end
end