Sha256: 64f48b99e70ca017807f8c4b11c9e9756cac7f153b37095efe6c73720a84c72f

Contents?: true

Size: 1.79 KB

Versions: 7

Compression:

Stored size: 1.79 KB

Contents

# frozen_string_literal: true

require "spec_helpers"

describe Wayfarer::Redis::Barrier, redis: true do
  let(:url) { "https://example.com" }
  subject(:barrier) { Wayfarer::Redis::Barrier.new("batch") }

  describe "#redis_key" do
    it "returns the expected Redis key" do
      expect(barrier.redis_key).to eq("wayfarer-barrier-batch")
    end
  end

  describe "#reset!" do
    it "resets seen URLs" do
      barrier.seen?(url)
      barrier.reset!
      expect(barrier.seen?(url)).to be false
    end
  end

  describe "#seen?" do
    context "with seen URL" do
      before { barrier.seen?(url) }

      it "returns true" do
        expect(barrier.seen?(url)).to be(true)
      end
    end

    context "with unseen URL" do
      it "returns false" do
        expect(barrier.seen?(url)).to be(false)
      end
    end
  end

  describe "#peek" do
    let(:seen_urls) { %w[https://yahoo.com https://google.com] }
    let(:unseen_urls) { %w[https://w3c.org https://nasa.gov] }

    before do
      allow(Wayfarer::Redis::Version).to receive(:determine).and_return(redis_version)

      seen_urls.each do |url|
        barrier.seen?(url)
      end
    end

    context "Redis >= 6.2.0" do
      let(:redis_version) { [6, 2, 5] }

      it "returns membership" do
        urls = [*seen_urls, *unseen_urls]
        expect(barrier.peek(urls)).to eq([true, true, false, false])
      end
    end

    context "Redis < 6.2.0" do
      let(:redis_version) { [2, 6, 10] }

      it "returns membership" do
        urls = [*seen_urls, *unseen_urls]
        expect(barrier.peek(urls)).to eq([true, true, false, false])
      end
    end
  end

  describe "#unsee" do
    it "removes a seen URL" do
      barrier.seen?(url)
      expect {
        barrier.unsee(url)
      }.to change { barrier.seen?(url) }.to(false)
    end
  end
end

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
wayfarer-0.4.6 spec/redis/barrier_spec.rb
wayfarer-0.4.5 spec/redis/barrier_spec.rb
wayfarer-0.4.4 spec/redis/barrier_spec.rb
wayfarer-0.4.3 spec/redis/barrier_spec.rb
wayfarer-0.4.2 spec/redis/barrier_spec.rb
wayfarer-0.4.1 spec/redis/barrier_spec.rb
wayfarer-0.4.0 spec/redis/barrier_spec.rb