discourse/spec/models/web_crawler_request_spec.rb
Sam 83f1a13374
DEV: stop leaking data into tables during test ()
This amends it so our cached counting reliant specs run in synchronize mode

When running async there are situations where data is left over in the table
after a transactional test. This means that repeat runs of the test suite
fail.
2023-05-06 07:15:33 +10:00

37 lines
933 B
Ruby

# frozen_string_literal: true
RSpec.describe WebCrawlerRequest do
before do
CachedCounting.reset
CachedCounting.enable
end
after do
CachedCounting.reset
CachedCounting.disable
end
it "can log crawler requests" do
freeze_time
d1 = Time.now.utc.to_date
4.times { WebCrawlerRequest.increment!("Googlebot") }
WebCrawlerRequest.increment!("Bingbot")
freeze_time 1.day.from_now
d2 = Time.now.utc.to_date
WebCrawlerRequest.increment!("Googlebot")
WebCrawlerRequest.increment!("Superbot")
CachedCounting.flush
expect(WebCrawlerRequest.find_by(date: d2, user_agent: "Googlebot").count).to eq(1)
expect(WebCrawlerRequest.find_by(date: d2, user_agent: "Superbot").count).to eq(1)
expect(WebCrawlerRequest.find_by(date: d1, user_agent: "Googlebot").count).to eq(4)
expect(WebCrawlerRequest.find_by(date: d1, user_agent: "Bingbot").count).to eq(1)
end
end