Add completed_at to account_migrations
Use completed_at datetime field as an indication of a performed migration closes #7805
This commit is contained in:
parent
e9f6dbdffd
commit
cb294fd3f4
4 changed files with 30 additions and 4 deletions
|
|
@ -2,6 +2,7 @@
|
||||||
|
|
||||||
## Refactor
|
## Refactor
|
||||||
* Add unique index to poll participations on `poll_id` and `author_id` [#7798](https://github.com/diaspora/diaspora/pull/7798)
|
* Add unique index to poll participations on `poll_id` and `author_id` [#7798](https://github.com/diaspora/diaspora/pull/7798)
|
||||||
|
* Add 'completed at' date to account migrations [#7805](https://github.com/diaspora/diaspora/pull/7805)
|
||||||
|
|
||||||
## Bug fixes
|
## Bug fixes
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -40,10 +40,11 @@ class AccountMigration < ApplicationRecord
|
||||||
|
|
||||||
dispatch if locally_initiated?
|
dispatch if locally_initiated?
|
||||||
dispatch_contacts if remotely_initiated?
|
dispatch_contacts if remotely_initiated?
|
||||||
|
update(completed_at: Time.zone.now)
|
||||||
end
|
end
|
||||||
|
|
||||||
def performed?
|
def performed?
|
||||||
old_person.closed_account?
|
!completed_at.nil?
|
||||||
end
|
end
|
||||||
|
|
||||||
# We assume that migration message subscribers are people that are subscribed to a new user profile updates.
|
# We assume that migration message subscribers are people that are subscribed to a new user profile updates.
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,19 @@
|
||||||
|
# frozen_string_literal: true
|
||||||
|
|
||||||
|
class AddCompletedAtToAccountMigration < ActiveRecord::Migration[5.1]
|
||||||
|
def change
|
||||||
|
add_column :account_migrations, :completed_at, :datetime, default: nil
|
||||||
|
|
||||||
|
reversible do |change|
|
||||||
|
change.up do
|
||||||
|
set_completed_at_for_closed_accounts
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def set_completed_at_for_closed_accounts
|
||||||
|
# rubocop:disable Rails/SkipsModelValidations
|
||||||
|
AccountMigration.joins(:old_person).where(people: {closed_account: true}).update_all(completed_at: Time.zone.now)
|
||||||
|
# rubocop:enable Rails/SkipsModelValidations
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
@ -61,9 +61,14 @@ describe AccountMigration, type: :model do
|
||||||
}.to change(account_migration, :performed?).to be_truthy
|
}.to change(account_migration, :performed?).to be_truthy
|
||||||
end
|
end
|
||||||
|
|
||||||
it "calls old_person.closed_account?" do
|
it "is truthy when completed_at is set" do
|
||||||
expect(account_migration.old_person).to receive(:closed_account?)
|
expect(FactoryGirl.create(:account_migration, completed_at: Time.zone.now).performed?).to be_truthy
|
||||||
account_migration.performed?
|
end
|
||||||
|
|
||||||
|
it "is falsey when completed_at is null" do
|
||||||
|
account_migration = FactoryGirl.create(:account_migration, completed_at: nil)
|
||||||
|
account_migration.old_person.lock_access!
|
||||||
|
expect(account_migration.performed?).to be_falsey
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue