From 678c9ea6bc81ac1ca10f30e6cf8a185e696b455b Mon Sep 17 00:00:00 2001 From: Mathieu Magnin Date: Wed, 11 Sep 2024 16:48:40 +0200 Subject: [PATCH 1/3] [#10753] Mark email as verified for users who signed in at least once in the last 5 months. --- .gitignore | 1 + ...n_user_signed_in_during_last_5_months.rake | 16 +++++++++++ ...ser_signed_in_during_last_5_months_spec.rb | 28 +++++++++++++++++++ 3 files changed, 45 insertions(+) create mode 100644 lib/tasks/deployment/20240911141817_mark_email_verified_when_user_signed_in_during_last_5_months.rake create mode 100644 spec/lib/tasks/deployment/20240911141817_mark_email_verified_when_user_signed_in_during_last_5_months_spec.rb diff --git a/.gitignore b/.gitignore index a210a1d87..e22760720 100644 --- a/.gitignore +++ b/.gitignore @@ -22,6 +22,7 @@ uploads/* *.swp .envrc .env +.tool-versions storage/ /node_modules /yarn-error.log diff --git a/lib/tasks/deployment/20240911141817_mark_email_verified_when_user_signed_in_during_last_5_months.rake b/lib/tasks/deployment/20240911141817_mark_email_verified_when_user_signed_in_during_last_5_months.rake new file mode 100644 index 000000000..3ef23f4dc --- /dev/null +++ b/lib/tasks/deployment/20240911141817_mark_email_verified_when_user_signed_in_during_last_5_months.rake @@ -0,0 +1,16 @@ +# frozen_string_literal: true + +namespace :after_party do + desc 'Deployment task: mark_email_verified_when_user_signed_in_during_last_5_months' + task mark_email_verified_when_user_signed_in_during_last_5_months: :environment do + affected_users_count = User.where(email_verified_at: nil, sign_in_count: 1..).count + + puts "Processing #{affected_users_count} users signed in during the last 5 months and not verified" + + User.where(email_verified_at: nil, sign_in_count: 1..).update_all(email_verified_at: Time.zone.now) + puts "Done" + + AfterParty::TaskRecord + .create version: AfterParty::TaskRecorder.new(__FILE__).timestamp + end +end diff --git a/spec/lib/tasks/deployment/20240911141817_mark_email_verified_when_user_signed_in_during_last_5_months_spec.rb b/spec/lib/tasks/deployment/20240911141817_mark_email_verified_when_user_signed_in_during_last_5_months_spec.rb new file mode 100644 index 000000000..c2657e955 --- /dev/null +++ b/spec/lib/tasks/deployment/20240911141817_mark_email_verified_when_user_signed_in_during_last_5_months_spec.rb @@ -0,0 +1,28 @@ + +# frozen_string_literal: true + +describe 'after_party:mark_email_verified_when_user_signed_in_during_last_5_months' do + let(:rake_task) { Rake::Task['after_party:mark_email_verified_when_user_signed_in_during_last_5_months'] } + + subject { rake_task.invoke } + after(:each) { rake_task.reenable } + + let(:old_date) { 6.months.ago } + + let!(:user) { create(:user, email_verified_at: nil, sign_in_count: 1) } + let!(:user2) { create(:user, email_verified_at: nil, sign_in_count: 1) } + let!(:user3) { create(:user, email_verified_at: nil, sign_in_count: 0) } + let!(:user4) { create(:user, email_verified_at: old_date, sign_in_count: 1) } + + it 'mark_email_verified_when_user_signed_in_during_last_5_months' do + expect(User.where(email_verified_at: nil, sign_in_count: 1..).count).to eq(2) + + subject + + expect(User.where(email_verified_at: nil, sign_in_count: 1..).count).to eq(0) + expect(user.reload.email_verified_at).to be_present + expect(user2.reload.email_verified_at).to be_present + expect(user3.reload.email_verified_at).to be_nil + expect(user4.reload.email_verified_at).to eq(old_date) + end +end From dfbc1329119ca552f591da25499dcfa7b3619d88 Mon Sep 17 00:00:00 2001 From: Mathieu Magnin Date: Wed, 11 Sep 2024 20:22:22 +0200 Subject: [PATCH 2/3] [#10753] fix test that fails on CI --- ...il_verified_when_user_signed_in_during_last_5_months_spec.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spec/lib/tasks/deployment/20240911141817_mark_email_verified_when_user_signed_in_during_last_5_months_spec.rb b/spec/lib/tasks/deployment/20240911141817_mark_email_verified_when_user_signed_in_during_last_5_months_spec.rb index c2657e955..0546ac0c5 100644 --- a/spec/lib/tasks/deployment/20240911141817_mark_email_verified_when_user_signed_in_during_last_5_months_spec.rb +++ b/spec/lib/tasks/deployment/20240911141817_mark_email_verified_when_user_signed_in_during_last_5_months_spec.rb @@ -23,6 +23,6 @@ describe 'after_party:mark_email_verified_when_user_signed_in_during_last_5_mont expect(user.reload.email_verified_at).to be_present expect(user2.reload.email_verified_at).to be_present expect(user3.reload.email_verified_at).to be_nil - expect(user4.reload.email_verified_at).to eq(old_date) + expect(user4.reload.email_verified_at.to_i).to eq(old_date.to_i) end end From 910f0db7ba69e847ec71e2129614e3e37da96c7e Mon Sep 17 00:00:00 2001 From: Mathieu Magnin Date: Tue, 17 Sep 2024 09:35:35 +0200 Subject: [PATCH 3/3] [#10753] fix missing condition on created at --- ...ified_when_user_signed_in_during_last_5_months.rake | 6 ++++-- ...ed_when_user_signed_in_during_last_5_months_spec.rb | 10 ++++++++-- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/lib/tasks/deployment/20240911141817_mark_email_verified_when_user_signed_in_during_last_5_months.rake b/lib/tasks/deployment/20240911141817_mark_email_verified_when_user_signed_in_during_last_5_months.rake index 3ef23f4dc..63841f7ee 100644 --- a/lib/tasks/deployment/20240911141817_mark_email_verified_when_user_signed_in_during_last_5_months.rake +++ b/lib/tasks/deployment/20240911141817_mark_email_verified_when_user_signed_in_during_last_5_months.rake @@ -3,11 +3,13 @@ namespace :after_party do desc 'Deployment task: mark_email_verified_when_user_signed_in_during_last_5_months' task mark_email_verified_when_user_signed_in_during_last_5_months: :environment do - affected_users_count = User.where(email_verified_at: nil, sign_in_count: 1..).count + users_signed_in_during_last_5_months = User.where(email_verified_at: nil, created_at: 5.months.ago.., sign_in_count: 1..) + + affected_users_count = users_signed_in_during_last_5_months.count puts "Processing #{affected_users_count} users signed in during the last 5 months and not verified" - User.where(email_verified_at: nil, sign_in_count: 1..).update_all(email_verified_at: Time.zone.now) + users_signed_in_during_last_5_months.update_all(email_verified_at: Time.zone.now) puts "Done" AfterParty::TaskRecord diff --git a/spec/lib/tasks/deployment/20240911141817_mark_email_verified_when_user_signed_in_during_last_5_months_spec.rb b/spec/lib/tasks/deployment/20240911141817_mark_email_verified_when_user_signed_in_during_last_5_months_spec.rb index 0546ac0c5..0c3ee6eee 100644 --- a/spec/lib/tasks/deployment/20240911141817_mark_email_verified_when_user_signed_in_during_last_5_months_spec.rb +++ b/spec/lib/tasks/deployment/20240911141817_mark_email_verified_when_user_signed_in_during_last_5_months_spec.rb @@ -13,16 +13,22 @@ describe 'after_party:mark_email_verified_when_user_signed_in_during_last_5_mont let!(:user2) { create(:user, email_verified_at: nil, sign_in_count: 1) } let!(:user3) { create(:user, email_verified_at: nil, sign_in_count: 0) } let!(:user4) { create(:user, email_verified_at: old_date, sign_in_count: 1) } + let!(:user5) do + travel_to(old_date) do + create(:user, email_verified_at: nil, sign_in_count: 1) + end + end it 'mark_email_verified_when_user_signed_in_during_last_5_months' do - expect(User.where(email_verified_at: nil, sign_in_count: 1..).count).to eq(2) + expect(User.where(email_verified_at: nil, sign_in_count: 1.., created_at: 5.months.ago..).count).to eq(2) subject - expect(User.where(email_verified_at: nil, sign_in_count: 1..).count).to eq(0) + expect(User.where(email_verified_at: nil, sign_in_count: 1.., created_at: 5.months.ago..).count).to eq(0) expect(user.reload.email_verified_at).to be_present expect(user2.reload.email_verified_at).to be_present expect(user3.reload.email_verified_at).to be_nil expect(user4.reload.email_verified_at.to_i).to eq(old_date.to_i) + expect(user5.reload.email_verified_at).to be_nil end end