Rearrange specs for frequency
This commit is contained in:
parent
8f04d82ae7
commit
6c3fd0f088
|
@ -36,47 +36,6 @@ RSpec.describe Jobs::EnqueueReminders do
|
||||||
assert_reminders_enqueued(0)
|
assert_reminders_enqueued(0)
|
||||||
end
|
end
|
||||||
|
|
||||||
it "does not enqueue a reminder if it's too soon" do
|
|
||||||
user.upsert_custom_fields(PendingAssignsReminder::REMINDED_AT => 2.days.ago)
|
|
||||||
assign_multiple_tasks_to(user)
|
|
||||||
|
|
||||||
assert_reminders_enqueued(0)
|
|
||||||
end
|
|
||||||
|
|
||||||
it "enqueues a reminder if the user was reminded more than a month ago" do
|
|
||||||
user.upsert_custom_fields(PendingAssignsReminder::REMINDED_AT => 31.days.ago)
|
|
||||||
assign_multiple_tasks_to(user)
|
|
||||||
|
|
||||||
assert_reminders_enqueued(1)
|
|
||||||
end
|
|
||||||
|
|
||||||
it "does not enqueue reminders if the remind frequency is set to never" do
|
|
||||||
SiteSetting.remind_assigns_frequency = 0
|
|
||||||
assign_multiple_tasks_to(user)
|
|
||||||
|
|
||||||
assert_reminders_enqueued(0)
|
|
||||||
end
|
|
||||||
|
|
||||||
it "does not enqueue reminders if the topic was just assigned to the user" do
|
|
||||||
just_assigned = DateTime.now
|
|
||||||
assign_multiple_tasks_to(user, assigned_on: just_assigned)
|
|
||||||
|
|
||||||
assert_reminders_enqueued(0)
|
|
||||||
end
|
|
||||||
|
|
||||||
it "enqueues a reminder when the user overrides the global frequency" do
|
|
||||||
SiteSetting.remind_assigns_frequency = 0
|
|
||||||
user.custom_fields.merge!(
|
|
||||||
PendingAssignsReminder::REMINDERS_FREQUENCY =>
|
|
||||||
RemindAssignsFrequencySiteSettings::DAILY_MINUTES,
|
|
||||||
)
|
|
||||||
user.save_custom_fields
|
|
||||||
|
|
||||||
assign_multiple_tasks_to(user)
|
|
||||||
|
|
||||||
assert_reminders_enqueued(1)
|
|
||||||
end
|
|
||||||
|
|
||||||
it "doesn't count assigns from deleted topics" do
|
it "doesn't count assigns from deleted topics" do
|
||||||
deleted_post = Fabricate(:post)
|
deleted_post = Fabricate(:post)
|
||||||
assign_one_task_to(user, post: deleted_post)
|
assign_one_task_to(user, post: deleted_post)
|
||||||
|
@ -87,6 +46,49 @@ RSpec.describe Jobs::EnqueueReminders do
|
||||||
assert_reminders_enqueued(0)
|
assert_reminders_enqueued(0)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
describe "assignment frequency" do
|
||||||
|
it "does not enqueue a reminder if it's too soon" do
|
||||||
|
user.upsert_custom_fields(PendingAssignsReminder::REMINDED_AT => 1.days.ago)
|
||||||
|
assign_multiple_tasks_to(user)
|
||||||
|
|
||||||
|
assert_reminders_enqueued(0)
|
||||||
|
end
|
||||||
|
|
||||||
|
it "enqueues a reminder if the user was reminded more than a month ago" do
|
||||||
|
user.upsert_custom_fields(PendingAssignsReminder::REMINDED_AT => 31.days.ago)
|
||||||
|
assign_multiple_tasks_to(user)
|
||||||
|
|
||||||
|
assert_reminders_enqueued(1)
|
||||||
|
end
|
||||||
|
|
||||||
|
it "does not enqueue reminders if the remind frequency is set to never" do
|
||||||
|
SiteSetting.remind_assigns_frequency = 0
|
||||||
|
assign_multiple_tasks_to(user)
|
||||||
|
|
||||||
|
assert_reminders_enqueued(0)
|
||||||
|
end
|
||||||
|
|
||||||
|
it "does not enqueue reminders if the topic was just assigned to the user" do
|
||||||
|
just_assigned = DateTime.now
|
||||||
|
assign_multiple_tasks_to(user, assigned_on: just_assigned)
|
||||||
|
|
||||||
|
assert_reminders_enqueued(0)
|
||||||
|
end
|
||||||
|
|
||||||
|
it "enqueues a reminder when the user overrides the global frequency" do
|
||||||
|
SiteSetting.remind_assigns_frequency = 0
|
||||||
|
user.custom_fields.merge!(
|
||||||
|
PendingAssignsReminder::REMINDERS_FREQUENCY =>
|
||||||
|
RemindAssignsFrequencySiteSettings::DAILY_MINUTES,
|
||||||
|
)
|
||||||
|
user.save_custom_fields
|
||||||
|
|
||||||
|
assign_multiple_tasks_to(user)
|
||||||
|
|
||||||
|
assert_reminders_enqueued(1)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
def assert_reminders_enqueued(expected_amount)
|
def assert_reminders_enqueued(expected_amount)
|
||||||
expect { subject.execute({}) }.to change(Jobs::RemindUser.jobs, :size).by(expected_amount)
|
expect { subject.execute({}) }.to change(Jobs::RemindUser.jobs, :size).by(expected_amount)
|
||||||
end
|
end
|
||||||
|
|
Loading…
Reference in New Issue