Merge branch 'next-minor' into develop
This commit is contained in:
commit
2a60cb30a1
6 changed files with 60 additions and 4 deletions
|
|
@ -13,6 +13,8 @@
|
|||
# 0.7.6.0
|
||||
|
||||
## Refactor
|
||||
* 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
|
||||
|
||||
|
|
|
|||
|
|
@ -40,10 +40,11 @@ class AccountMigration < ApplicationRecord
|
|||
|
||||
dispatch if locally_initiated?
|
||||
dispatch_contacts if remotely_initiated?
|
||||
update(completed_at: Time.zone.now)
|
||||
end
|
||||
|
||||
def performed?
|
||||
old_person.closed_account?
|
||||
!completed_at.nil?
|
||||
end
|
||||
|
||||
# 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 AddPollParticipationsUniqueIndexOnAuthorAndPoll < ActiveRecord::Migration[5.1]
|
||||
def change
|
||||
reversible do |change|
|
||||
change.up do
|
||||
duplicate_query = "WHERE a1.poll_id = a2.poll_id AND a1.author_id = a2.author_id AND a1.id > a2.id"
|
||||
if AppConfig.postgres?
|
||||
execute("DELETE FROM poll_participations AS a1 USING poll_participations AS a2 #{duplicate_query}")
|
||||
else
|
||||
execute("DELETE a1 FROM poll_participations a1, poll_participations a2 #{duplicate_query}")
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
add_index :poll_participations, %i[poll_id author_id], unique: true
|
||||
remove_index :poll_participations, :poll_id
|
||||
end
|
||||
end
|
||||
|
|
@ -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
|
||||
end
|
||||
|
||||
it "calls old_person.closed_account?" do
|
||||
expect(account_migration.old_person).to receive(:closed_account?)
|
||||
account_migration.performed?
|
||||
it "is truthy when completed_at is set" do
|
||||
expect(FactoryGirl.create(:account_migration, completed_at: Time.zone.now).performed?).to be_truthy
|
||||
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
|
||||
|
||||
|
|
|
|||
|
|
@ -24,6 +24,16 @@ describe PollParticipation, type: :model do
|
|||
bob.participate_in_poll!(status, poll.poll_answers.first)
|
||||
}.to_not raise_error
|
||||
end
|
||||
|
||||
it "has unique DB index for author-person" do
|
||||
pp = FactoryGirl.create(:poll_participation)
|
||||
pp2 = FactoryGirl.create(:poll_participation, author: pp.author)
|
||||
expect {
|
||||
# rubocop:disable Rails/SkipsModelValidations
|
||||
pp2.update_attribute(:poll_id, pp.poll_id)
|
||||
# rubocop:enable Rails/SkipsModelValidations
|
||||
}.to raise_error ActiveRecord::RecordNotUnique
|
||||
end
|
||||
end
|
||||
|
||||
it_behaves_like "it is relayable" do
|
||||
|
|
|
|||
Loading…
Reference in a new issue