# frozen_string_literal: true

RSpec.shared_examples_for "stats cacheable" do
  describe "fetch_cached_stats" do
    after { Discourse.redis.del(described_class.stats_cache_key) }

    it "returns the cached stats" do
      stats = described_class.fetch_stats.to_json
      Discourse.redis.set(described_class.stats_cache_key, stats)
      expect(described_class.fetch_cached_stats).to eq(JSON.parse(stats))
    end

    it "returns fetches the stats if stats has not been cached" do
      freeze_time

      Discourse.redis.del(described_class.stats_cache_key)
      expect(described_class.fetch_cached_stats).to eq(
        JSON.parse(described_class.fetch_stats.to_json),
      )
    end
  end

  describe "fetch_stats" do
    it "has not been implemented" do
      expect { described_class.fetch_stats }.to_not raise_error
    end
  end
end