# frozen_string_literal: true

require 'rails_helper'

describe "DistributedCache extensions" do
  let(:cache) { DistributedCache.new('mytest') }

  it "can defer_get_set" do
    messages = MessageBus.track_publish("/distributed_hash") do
      cache.defer_get_set("key") { "value" }
    end
    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