a6eb928688
If not, it can happen that the bundlers remains in a delivered state even when it is not covering its window anymore because it has been delivered.
51 lines
1.5 KiB
Ruby
51 lines
1.5 KiB
Ruby
require "test_helper"
|
|
|
|
class User::SettingsTest < ActiveSupport::TestCase
|
|
setup do
|
|
@user = users(:david)
|
|
@settings = @user.settings
|
|
end
|
|
|
|
test "changing the bundle email frequency to never will cancel pending bundles" do
|
|
@settings.update!(bundle_email_frequency: :every_few_hours)
|
|
bundle = @user.notification_bundles.create!
|
|
@settings.update!(bundle_email_frequency: :never)
|
|
assert_nil Notification::Bundle.find_by(id: bundle.id)
|
|
end
|
|
|
|
test "changing the bundle email frequency will deliver pending bundles" do
|
|
bundle = @user.notification_bundles.create!
|
|
assert bundle.pending?
|
|
|
|
freeze_time Time.current do
|
|
perform_enqueued_jobs only: Notification::Bundle::DeliverJob do
|
|
@settings.update!(bundle_email_frequency: :daily)
|
|
end
|
|
|
|
assert bundle.reload.delivered?
|
|
assert_equal Time.current, bundle.ends_at
|
|
end
|
|
end
|
|
|
|
test "changing other settings will not affect pending bundles" do
|
|
bundle = @user.notification_bundles.create!
|
|
|
|
perform_enqueued_jobs only: Notification::Bundle::DeliverJob do
|
|
@settings.update!(updated_at: 1.hour.from_now)
|
|
end
|
|
|
|
assert bundle.reload.pending?
|
|
end
|
|
|
|
test "bundling_emails?" do
|
|
@settings.update!(bundle_email_frequency: :never)
|
|
assert_not @user.settings.bundling_emails?
|
|
|
|
@settings.update!(bundle_email_frequency: :every_few_hours)
|
|
assert @user.settings.bundling_emails?
|
|
|
|
@user.update!(role: :system)
|
|
assert_not @user.settings.bundling_emails?
|
|
end
|
|
end
|