diff --git a/app/models/account.rb b/app/models/account.rb index 5ca3b3629..6c951f326 100644 --- a/app/models/account.rb +++ b/app/models/account.rb @@ -11,6 +11,11 @@ class Account < ApplicationRecord end end + # This lets us use the account as a generic card container. See +Entropy::Configuration+. + def cards + Card.all + end + def slug "/#{tenant}" end diff --git a/app/models/entropy/configuration.rb b/app/models/entropy/configuration.rb index 4ed13d597..b8960d3ab 100644 --- a/app/models/entropy/configuration.rb +++ b/app/models/entropy/configuration.rb @@ -1,9 +1,16 @@ class Entropy::Configuration < ApplicationRecord belongs_to :container, polymorphic: true + after_commit :touch_all_container_cards_later + class << self def default Account.sole.default_entropy_configuration end end + + private + def touch_all_container_cards_later + Card::TouchAllJob.perform_later(container) + end end diff --git a/test/models/entropy/configuration_test.rb b/test/models/entropy/configuration_test.rb new file mode 100644 index 000000000..015e8b1de --- /dev/null +++ b/test/models/entropy/configuration_test.rb @@ -0,0 +1,20 @@ +require "test_helper" + +class Entropy::ConfigurationTest < ActiveSupport::TestCase + test "touch cards when configuration changes for collection container" do + collection = collections(:writebook) + config = collection.entropy_configuration || collection.create_entropy_configuration!(auto_postpone_period: 30.days) + + assert_enqueued_with(job: Card::TouchAllJob, args: [ collection ]) do + config.update!(auto_postpone_period: 15.days) + end + end + + test "touch cards when configuration changes for account container" do + account = Account.sole + + assert_enqueued_with(job: Card::TouchAllJob, args: [ account ]) do + account.default_entropy_configuration.update!(auto_postpone_period: 45.days) + end + end +end