42 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			Ruby
		
	
	
	
			
		
		
	
	
			42 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			Ruby
		
	
	
	
| # frozen_string_literal: true
 | |
| 
 | |
| require "spec_helper"
 | |
| 
 | |
| RSpec.describe Gitlab::Cache, :request_store do
 | |
|   describe "#fetch_once" do
 | |
|     subject do
 | |
|       proc do
 | |
|         described_class.fetch_once([:test, "key"], expires_in: 10.minutes) do
 | |
|           "return value"
 | |
|         end
 | |
|       end
 | |
|     end
 | |
| 
 | |
|     it "fetches from the cache once" do
 | |
|       expect(Rails.cache).to receive(:fetch).once.with([:test, "key"], expires_in: 10.minutes).and_call_original
 | |
| 
 | |
|       expect(subject.call).to eq("return value")
 | |
|       expect(subject.call).to eq("return value")
 | |
|     end
 | |
| 
 | |
|     it "always returns from the request store" do
 | |
|       expect(Gitlab::SafeRequestStore).to receive(:fetch).twice.with([:test, "key"]).and_call_original
 | |
| 
 | |
|       expect(subject.call).to eq("return value")
 | |
|       expect(subject.call).to eq("return value")
 | |
|     end
 | |
|   end
 | |
| 
 | |
|   describe '.delete' do
 | |
|     let(:key) { %w{a cache key} }
 | |
| 
 | |
|     subject(:delete) { described_class.delete(key) }
 | |
| 
 | |
|     it 'calls Rails.cache.delete' do
 | |
|       expect(Rails.cache).to receive(:delete).with(key)
 | |
| 
 | |
|       delete
 | |
|     end
 | |
|   end
 | |
| end
 |