Allow blank values to be stored in reactive cache

Reactive caching concern was using .present? to determine if it got
a valid value from the cache. This returns false for values such as
false, [], {}. Change this check to !.nil? instead.
This commit is contained in:
Reuben Pereira 2019-02-18 11:24:00 +00:00 committed by Nick Thomas
parent 1d22968958
commit 0e7a9e46d2
4 changed files with 17 additions and 4 deletions

View File

@ -76,7 +76,7 @@ module ReactiveCaching
begin
data = Rails.cache.read(full_reactive_cache_key(*args))
yield data if data.present?
yield data unless data.nil?
rescue InvalidateReactiveCache
refresh_reactive_cache!(*args)
nil

View File

@ -0,0 +1,5 @@
---
title: Allow empty values such as [] to be stored in reactive cache
merge_request: 25283
author:
type: fixed

View File

@ -25,7 +25,7 @@ describe ReactiveCaching, :use_clean_rails_memory_store_caching do
def result
with_reactive_cache do |data|
data / 2
data
end
end
end
@ -64,7 +64,7 @@ describe ReactiveCaching, :use_clean_rails_memory_store_caching do
stub_reactive_cache(instance, 4)
end
it { is_expected.to eq(2) }
it { is_expected.to eq(4) }
it 'does not enqueue a background worker' do
expect(ReactiveCachingWorker).not_to receive(:perform_async)
@ -94,6 +94,14 @@ describe ReactiveCaching, :use_clean_rails_memory_store_caching do
end
end
end
context 'when cache contains non-nil but blank value' do
before do
stub_reactive_cache(instance, false)
end
it { is_expected.to eq(false) }
end
end
describe '#clear_reactive_cache!' do

View File

@ -10,7 +10,7 @@ module ReactiveCachingHelpers
def stub_reactive_cache(subject = nil, data = nil, *qualifiers)
allow(ReactiveCachingWorker).to receive(:perform_async)
allow(ReactiveCachingWorker).to receive(:perform_in)
write_reactive_cache(subject, data, *qualifiers) if data
write_reactive_cache(subject, data, *qualifiers) unless data.nil?
end
def synchronous_reactive_cache(subject)