From 254ff07af75ad097413dc8ac5b4830b159690251 Mon Sep 17 00:00:00 2001 From: Dayne Date: Tue, 8 Sep 2020 17:05:03 -0700 Subject: [PATCH] Purging user deletes the associated Census Inaccuracy Investigations --- dashboard/test/factories/census_factories.rb | 4 ++-- .../test/helpers/delete_accounts_helper_test.rb | 15 +++++++++++++++ lib/cdo/delete_accounts_helper.rb | 3 +++ 3 files changed, 20 insertions(+), 2 deletions(-) diff --git a/dashboard/test/factories/census_factories.rb b/dashboard/test/factories/census_factories.rb index 44a624986d434..bbb78b022a30a 100644 --- a/dashboard/test/factories/census_factories.rb +++ b/dashboard/test/factories/census_factories.rb @@ -535,9 +535,9 @@ end factory :census_inaccuracy_investigation, class: 'Census::CensusInaccuracyInvestigation' do - user {build :user} + user {build :teacher} notes "Some notes from my investigation" - census_submission {build :census_your_school2017v7} + census_submission {build :census_your_school2017v7, submitter_email_address: user&.email} trait :without_submission do census_submission nil diff --git a/dashboard/test/helpers/delete_accounts_helper_test.rb b/dashboard/test/helpers/delete_accounts_helper_test.rb index a38ec49dc10ce..2931fe9e47074 100644 --- a/dashboard/test/helpers/delete_accounts_helper_test.rb +++ b/dashboard/test/helpers/delete_accounts_helper_test.rb @@ -659,6 +659,21 @@ def run(*_args, &_block) assert_logged "Removed 1 CensusSubmissionFormMap" end + test "deletes census_inaccuracy_investigation associated census_submissions associated with user email" do + census_inaccuracy_investigation = create :census_inaccuracy_investigation + id = census_inaccuracy_investigation.id + user = census_inaccuracy_investigation.user + refute_empty Census::CensusInaccuracyInvestigation.where(id: id), + "Expected at least one CensusInaccuracyInvestigation under this email" + + purge_user user + + assert_empty Census::CensusInaccuracyInvestigation.where(id: id), + "Rows are actually gone, not just anonymized" + + assert_logged "Removed 1 CensusInaccuracyInvestigation" + end + test "leaves no SchoolInfos referring to the deleted CensusSubmissions" do user = create :teacher email = user.email diff --git a/lib/cdo/delete_accounts_helper.rb b/lib/cdo/delete_accounts_helper.rb index 871f538ecf107..ca85fa927d3c3 100644 --- a/lib/cdo/delete_accounts_helper.rb +++ b/lib/cdo/delete_accounts_helper.rb @@ -225,8 +225,11 @@ def remove_census_submissions(email) @log.puts "Removing CensusSubmission" census_submissions = Census::CensusSubmission.where(submitter_email_address: email) csfms = Census::CensusSubmissionFormMap.where(census_submission_id: census_submissions.pluck(:id)) + ciis = Census::CensusInaccuracyInvestigation.where(census_submission_id: census_submissions.pluck(:id)) + deleted_cii_count = ciis.delete_all deleted_csfm_count = csfms.delete_all deleted_submissions_count = census_submissions.delete_all + @log.puts "Removed #{deleted_cii_count} CensusInaccuracyInvestigation" if deleted_cii_count > 0 @log.puts "Removed #{deleted_csfm_count} CensusSubmissionFormMap" if deleted_csfm_count > 0 @log.puts "Removed #{deleted_submissions_count} CensusSubmission" if deleted_submissions_count > 0 end