discourse-ai/spec/tasks/scan_spec.rb

39 lines
1.2 KiB
Ruby

# frozen_string_literal: true
RSpec.describe "ai:spam rake tasks" do
let!(:topic1) { Fabricate(:topic, created_at: 2.days.ago) }
let!(:post1) { Fabricate(:post, topic: topic1, created_at: 2.days.ago) }
let!(:topic2) { Fabricate(:topic, created_at: 1.hour.ago) }
let!(:post2) { Fabricate(:post, topic: topic2, created_at: 1.hour.ago) }
describe "ai:spam:scan_posts" do
it "enqueues posts within date range" do
freeze_time do
start_date = 1.day.ago.to_s
end_date = Time.now.to_s
expect_enqueued_with(job: :ai_spam_scan, args: { post_id: post2.id }) do
Rake::Task["ai:spam:scan_posts"].invoke(start_date, end_date)
end
expect_not_enqueued_with(job: :ai_spam_scan, args: { post_id: post1.id })
end
end
end
describe "ai:spam:scan_topics" do
it "enqueues first posts of topics within date range" do
freeze_time do
start_date = 1.day.ago.to_s
end_date = Time.now.to_s
expect_enqueued_with(job: :ai_spam_scan, args: { post_id: topic2.first_post.id }) do
Rake::Task["ai:spam:scan_topics"].invoke(start_date, end_date)
end
expect_not_enqueued_with(job: :ai_spam_scan, args: { post_id: topic1.first_post.id })
end
end
end
end