# frozen_string_literal: true

describe CustomWizard::Cache do
  it "writes and reads values to the cache" do
    CustomWizard::Cache.new("list").write([1, 2, 3])
    expect(CustomWizard::Cache.new("list").read).to eq([1, 2, 3])
  end

  it "deletes values from the cache" do
    CustomWizard::Cache.new("list").delete
    expect(CustomWizard::Cache.new("list").read).to eq(nil)
  end

  describe "#wrap" do
    before { @raw = [1, 2, 3] }

    def list
      CustomWizard::Cache.wrap("list") { @raw }
    end

    it "returns value from passed block" do
      expect(list).to eq([1, 2, 3])
    end

    it "returns cached value" do
      cached = list
      @raw = [3, 2, 1]
      expect(list).to eq(cached)
    end
  end
end