Skip to content

Commit

Permalink
SRCH-1282 - raketask populate first last name (#546)
Browse files Browse the repository at this point in the history
* SRCH-1282 - raketask populate first last name

* fix code climate feedback

* remove extra space
  • Loading branch information
peggles2 committed Mar 5, 2020
1 parent f1ddc4b commit 81b26e8
Show file tree
Hide file tree
Showing 5 changed files with 92 additions and 1 deletion.
16 changes: 16 additions & 0 deletions lib/tasks/populate_user.rake
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
# frozen_string_literal: true

namespace :usasearch do
namespace :populate_user_fields do
desc 'populate first and last name in the user table'
task :update_first_last_name, [:path] => [:environment] do |_t, args|
CSV.foreach(args.path, headers: true) do |row|
record = row.to_h
@user = User.find_by(email: record['Email'])
@user&.update!(first_name: record['First Name'], last_name: record['Last Name'])
puts "updating #{record['Email']} with " \
"#{record['First Name']} #{record['Last Name']}"
end
end
end
end
5 changes: 5 additions & 0 deletions spec/fixtures/csv/users.csv
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
Email,First Name,Last Name
no_first_last_name_1@email.gov,Homer,Simpson
no_first_last_name_2@email.gov,Seymour,Skinner
no_first_last_name_3@email.gov,Ned,Flanders
no_first_last_name_4@email.gov,Nelson,Muntz
17 changes: 17 additions & 0 deletions spec/fixtures/users.yml
Original file line number Diff line number Diff line change
Expand Up @@ -191,3 +191,20 @@ no_organization_name:
organization_name: ''
persistence_token: cedf2dac3e2d0e7223d8d1ae126c5a18e021ad9bc6dd0a2f01677e907b3e0a1802d82273fe3ac061b5fd80209ea39632c0a9e3081a1d43bb7ced9884d7754b62
approval_status: approved

no_first_last_name_1:
<<: *DEFAULTS
email: no_first_last_name_1@email.gov

no_first_last_name_2:
<<: *DEFAULTS
email: no_first_last_name_2@email.gov

no_first_last_name_3:
<<: *DEFAULTS
email: no_first_last_name_3@email.gov

no_first_last_name_4:
<<: *DEFAULTS
email: no_first_last_name_4@email.gov

53 changes: 53 additions & 0 deletions spec/lib/tasks/poplate_user_spec.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
require 'spec_helper'

describe 'Populate user rake tasks' do

before(:all) do
@rake = Rake::Application.new
Rake.application = @rake
Rake.application.rake_require('tasks/populate_user')
Rake::Task.define_task(:environment)
end

let(:user1) { users(:no_first_last_name_1) }
let(:user2) { users(:no_first_last_name_2) }
let(:user3) { users(:no_first_last_name_3) }
let(:user4) { users(:no_first_last_name_4) }

let(:csv_file_path) do
Rails.root.join(Rails.root.to_s,
'spec',
'fixtures',
'csv', 'users.csv')
end

describe 'usasearch:populate_user_fields:update_first_last_name' do
let(:task_name) { 'usasearch:populate_user_fields:update_first_last_name' }

before do
@rake[task_name].reenable
end

it "has 'environment' as a prereq" do
expect(@rake[task_name].prerequisites).to include('environment')
end

it 'populates the first name' do
@rake[task_name].invoke(csv_file_path)

expect(user1.first_name).to eq 'Homer'
expect(user2.first_name).to eq 'Seymour'
expect(user3.first_name).to eq 'Ned'
expect(user4.first_name).to eq 'Nelson'
end

it 'populates the last name' do
@rake[task_name].invoke(csv_file_path)

expect(user1.last_name).to eq 'Simpson'
expect(user2.last_name).to eq 'Skinner'
expect(user3.last_name).to eq 'Flanders'
expect(user4.last_name).to eq 'Muntz'
end
end
end
2 changes: 1 addition & 1 deletion spec/lib/tasks/user_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -92,7 +92,7 @@
describe 'usasearch:user:warn_set_to_not_approved' do
let(:users) { User.approved.not_active_since(76.days.ago.to_date) }
let(:not_approved_users) { User.not_approved.not_active_since(76.days.ago.to_date)}
let(:task_name) { "usasearch:user:warn_set_to_not_approved" }
let(:task_name) { 'usasearch:user:warn_set_to_not_approved' }

before do
@rake[task_name].reenable
Expand Down

0 comments on commit 81b26e8

Please sign in to comment.