DEV: ensure rebaking works even when some users have inconsistent data (#30261)

* DEV: add db consistency check for UserEmail

* DEV: add db consistency check for UserAvatar

* DEV: ignore inconsistent data related to user avatars when deciding whether to rebake old posts


Co-authored-by: Alan Guo Xiang Tan <gxtan1990@gmail.com>

---------

Co-authored-by: Alan Guo Xiang Tan <gxtan1990@gmail.com>
This commit is contained in:
Kelv
2024-12-16 19:48:25 +08:00
committed by GitHub
parent ce8c2ef6d9
commit 04ba5baec0
7 changed files with 118 additions and 2 deletions

View File

@ -63,4 +63,26 @@ RSpec.describe UserEmail do
expect(user.user_emails.count).to eq 3
end
end
describe ".ensure_consistency!" do
context "when some users have no primary emails" do
it "creates primary emails for the users without a primary email" do
user_with_primary_email = Fabricate(:user)
user_without_primary_email = Fabricate(:user)
user_without_any_email = Fabricate(:user)
user_without_primary_email.primary_email.update_column(:primary, false)
user_without_any_email.user_emails.delete_all
original_email_of_user_with_primary_email = user_with_primary_email.primary_email.email
described_class.ensure_consistency!
expect(user_without_primary_email.reload.primary_email).to be_present
expect(user_without_any_email.reload.primary_email).to be_present
expect(
user_with_primary_email.reload.primary_email.email,
).to eq original_email_of_user_with_primary_email
end
end
end
end