# frozen_string_literal: true

RSpec.describe "Multisite SiteSettings", type: :multisite do
  def cache(name, namespace: true)
    DistributedCache.new(name, namespace: namespace)
  end

  context "without namespace" do
    let(:cache1) { cache("test", namespace: false) }

    it "does not leak state across multisite" do
      cache1["default"] = true

      expect(cache1.hash).to eq("default" => true)

      test_multisite_connection("second") do
        message =
          MessageBus
            .track_publish(DistributedCache::Manager::CHANNEL_NAME) { cache1["second"] = true }
            .first

        expect(message.data[:hash_key]).to eq("test")
        expect(message.data[:op]).to eq(:set)
        expect(message.data[:key]).to eq("second")
        expect(message.data[:value]).to eq(true)
      end

      expect(cache1.hash).to eq("default" => true, "second" => true)
    end
  end
end