Skip to content

Commit

Permalink
Export redacted closed account details (#1160)
Browse files Browse the repository at this point in the history
  • Loading branch information
peterdavidhamilton authored May 3, 2024
1 parent 5109ace commit 553086f
Show file tree
Hide file tree
Showing 5 changed files with 151 additions and 3 deletions.
35 changes: 35 additions & 0 deletions app/models/data_analysis/closed_accounts.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
module DataAnalysis
class ClosedAccounts
include ToCsv

class << self
# @return [Array<String>]
def column_names
[
'Closed',
'Setting',
'Custom setting',
'Role',
'Custom role',
'Reason',
'Custom reason',
]
end

# @return [Array<Hash{Symbol => Mixed}>]
def dashboard
User.closed.map do |user|
{
closed_at: user.closed_at.strftime('%Y-%m-%d %H:%M:%S'),
setting_type: user.setting_type,
setting_type_other: user.setting_type_other,
role_type: user.role_type,
role_type_other: user.role_type_other,
closed_reason: user.closed_reason,
closed_reason_custom: user.closed_reason_custom,
}
end
end
end
end
end
1 change: 1 addition & 0 deletions app/services/dashboard.rb
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@ class Dashboard
{ model: 'DataAnalysis::ModulesPerMonth', folder: 'summativequiz', file: 'modules_per_month' },
{ model: 'DataAnalysis::UserOverview', folder: 'overview', file: 'user_overview' },
{ model: 'DataAnalysis::ModuleOverview', folder: 'overview', file: 'module_overview' },
{ model: 'DataAnalysis::ClosedAccounts', folder: 'overview', file: 'closed_accounts' },
{ model: 'DataAnalysis::UserModuleOrder', folder: 'nonlinear', file: 'user_module_order' },
{ model: 'DataAnalysis::UserModuleCompletion', folder: 'nonlinear', file: 'user_module_completion' },
{ model: 'DataAnalysis::UserModuleCompletionCount', folder: 'nonlinear', file: 'user_module_completions_count' },
Expand Down
2 changes: 1 addition & 1 deletion spec/factories/users.rb
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@

trait :closed do
registered
closed_at { '2024-01-08 10:23:40.946267' }
closed_at { '2024-01-08 10:23:40' }
closed_reason { 'other' }
closed_reason_custom { 'I did not find the training useful' }
end
Expand Down
112 changes: 112 additions & 0 deletions spec/models/data_analysis/closed_accounts_spec.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,112 @@
require 'rails_helper'

RSpec.describe DataAnalysis::ClosedAccounts do
let(:headers) do
[
'Closed',
'Setting',
'Custom setting',
'Role',
'Custom role',
'Reason',
'Custom reason',
]
end

let(:rows) do
[
# default
{
closed_at: '2024-01-08 10:23:40',
closed_reason: 'not useful',
closed_reason_custom: nil,
role_type: 'other',
role_type_other: 'Developer',
setting_type: nil,
setting_type_other: 'DfE',
},
{
closed_at: '2024-01-08 10:23:40',
closed_reason: 'no time',
closed_reason_custom: nil,
role_type: 'other',
role_type_other: 'Developer',
setting_type: nil,
setting_type_other: 'DfE',
},
{
closed_at: '2024-01-08 10:23:40',
closed_reason: 'no longer in early years',
closed_reason_custom: nil,
role_type: 'other',
role_type_other: 'Developer',
setting_type: nil,
setting_type_other: 'DfE',
},
{
closed_at: '2024-01-08 10:23:40',
closed_reason: 'too many emails',
closed_reason_custom: nil,
role_type: 'other',
role_type_other: 'Developer',
setting_type: nil,
setting_type_other: 'DfE',
},
{
closed_at: '2024-01-08 10:23:40',
closed_reason: 'prefer not to say',
closed_reason_custom: nil,
role_type: 'other',
role_type_other: 'Developer',
setting_type: nil,
setting_type_other: 'DfE',
},
# custom
{
closed_at: '2024-01-08 10:23:40',
closed_reason: 'other',
closed_reason_custom: 'I did not find the training useful',
role_type: 'other',
role_type_other: 'Developer',
setting_type: nil,
setting_type_other: 'DfE',
},
{
closed_at: '2024-01-08 10:23:40',
closed_reason: 'other',
closed_reason_custom: 'I did not find the training useful',
role_type: 'other',
role_type_other: 'Developer',
setting_type: nil,
setting_type_other: 'DfE',
},
{
closed_at: '2024-01-08 10:23:40',
closed_reason: 'other',
closed_reason_custom: 'I know everything',
role_type: 'other',
role_type_other: 'Developer',
setting_type: nil,
setting_type_other: 'DfE',
},
]
end

before do
# active
create :user, :named
create :user, :registered
# default
create :user, :closed, closed_reason_custom: nil, closed_reason: 'not useful'
create :user, :closed, closed_reason_custom: nil, closed_reason: 'no time'
create :user, :closed, closed_reason_custom: nil, closed_reason: 'no longer in early years'
create :user, :closed, closed_reason_custom: nil, closed_reason: 'too many emails'
create :user, :closed, closed_reason_custom: nil, closed_reason: 'prefer not to say'
# custom
create :user, :closed
create :user, :closed
create :user, :closed, closed_reason: 'other', closed_reason_custom: 'I know everything'
end

it_behaves_like 'a data export model'
end
4 changes: 2 additions & 2 deletions spec/services/dashboard_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -17,8 +17,8 @@
describe '#call' do
let(:data_files) { Dir.glob path.join('*/*/*.csv') }

it 'exports 7 database tables' do
expect(data_files.count).to be 21
describe 'exported files' do
specify { expect(data_files.count).to be 22 }
end

it 'exports data in CSV format' do
Expand Down

0 comments on commit 553086f

Please sign in to comment.