# frozen_string_literal: true RSpec.describe DistributedCache do let(:cache) { described_class.new("mytest") } it "can defer_get_set" do messages = MessageBus.track_publish("/distributed_hash") { cache.defer_get_set("key") { "value" } } expect(messages.size).to eq(1) expect(cache["key"]).to eq("value") end it "works correctly for nil values" do block_called_counter = 0 messages = MessageBus.track_publish("/distributed_hash") do 2.times do cache.defer_get_set("key") do block_called_counter += 1 nil end end end expect(block_called_counter).to eq(1) expect(messages.size).to eq(1) expect(cache["key"]).to eq(nil) end end