diff --git a/app/services/reporting/account_deletion_rate_report.rb b/app/services/reporting/account_deletion_rate_report.rb index 8413b133886..8e25f860595 100644 --- a/app/services/reporting/account_deletion_rate_report.rb +++ b/app/services/reporting/account_deletion_rate_report.rb @@ -8,8 +8,8 @@ def initialize(report_date = Time.zone.today) def account_deletion_report table = [] - table << ['Deleted Users', 'Total Users', 'Deletion Rate'] - table << [deleted_user_count, users_and_deleted_for_period, deletion_rate] + table << ['Deleted Users', 'Fully Registered Users', 'Deletion Rate'] + table << [deleted_user_count, fully_registered_users, deletion_rate] table end @@ -27,22 +27,21 @@ def account_deletion_emailable_report def deleted_user_count @deleted_user_count ||= Reports::BaseReport.transaction_with_timeout do - DeletedUser.where(user_created_at: start_date..end_date).count + DeletedUser. + where(deleted_at: start_date..end_date). + where('user_created_at < ?', end_date). + count end end - def user_count - @user_count ||= Reports::BaseReport.transaction_with_timeout do - User.where(created_at: start_date..end_date).count + def fully_registered_users + @fully_registered_users ||= Reports::BaseReport.transaction_with_timeout do + RegistrationLog.where(registered_at: start_date..end_date).count end end - def users_and_deleted_for_period - deleted_user_count + user_count - end - def deletion_rate - deleted_user_count.to_f / users_and_deleted_for_period.to_f + deleted_user_count.to_f / fully_registered_users.to_f end def start_date diff --git a/spec/services/reporting/account_deletion_rate_report_spec.rb b/spec/services/reporting/account_deletion_rate_report_spec.rb index 82952ddab9b..a73e7e164b1 100644 --- a/spec/services/reporting/account_deletion_rate_report_spec.rb +++ b/spec/services/reporting/account_deletion_rate_report_spec.rb @@ -24,17 +24,19 @@ it 'returns a report for account deletion rate (last 30 days)' do account_deletion_table = report.account_deletion_report - expected_table = [['Deleted Users', 'Total Users', 'Deletion Rate'], [2, 8, 0.25]] + expected_table = [ + ['Deleted Users', 'Fully Registered Users', 'Deletion Rate'], + [2, 6, 2.0 / 6], + ] expect(account_deletion_table).to eq(expected_table) end end def create_and_delete_accounts - create(:user, :proofed) - create_list(:user, 2) + create_list(:user, 3, :fully_registered) - user = create(:user) + user = create(:user, :fully_registered) DeletedUser.create_from_user(user) user.destroy! end