handle nil sis_communication_channels appropriately

refs sis batch id 8860, error report 2538380

Change-Id: I6576ee0a38fc163e88746d753ddd3400b54f21c9
Reviewed-on: https://gerrit.instructure.com/5712
Reviewed-by: Brian Palmer <brianp@instructure.com>
Tested-by: Hudson <hudson@instructure.com>
This commit is contained in:
JT Olds 2011-09-17 14:45:27 -06:00 committed by Brian Palmer
parent 7c11fdc668
commit 9016452480
2 changed files with 30 additions and 1 deletions

View File

@ -167,7 +167,7 @@ module SIS
if comm.user_id != pseudo.user_id
add_warning(csv, "E-mail address #{row['email']} for user #{row['login_id']} is already claimed; ignoring")
else
pseudo.sis_communication_channel.destroy if pseudo.sis_communication_channel != comm
pseudo.sis_communication_channel.destroy if pseudo.sis_communication_channel != comm and !pseudo.sis_communication_channel.nil?
pseudo.sis_communication_channel = comm
pseudo.communication_channel_id = comm.id
comm.do_delayed_jobs_immediately = true

View File

@ -903,6 +903,35 @@ describe SIS::SisCsv do
p.communication_channel_id.should == user1.communication_channels.unretired.first.id
end
it "should work when a communication channel already exists, but there's no sis_communication_channel" do
importer = process_csv_data_cleanly(
"user_id,login_id,first_name,last_name,email,status",
"user_1,user1,User,Uno,,active"
)
p = Pseudonym.find_by_unique_id('user1')
user1 = p.user
user1.last_name.should == "Uno"
user1.pseudonyms.count.should == 1
p.communication_channel_id.should be_nil
user1.communication_channels.count.should == 0
p.sis_communication_channel_id.should be_nil
user1.communication_channels.create!(:path => 'user2@example.com', :path_type => 'email') { |cc| cc.workflow_state = 'active' }
importer = process_csv_data_cleanly(
"user_id,login_id,first_name,last_name,email,status",
"user_1,user1,User,Uno,user2@example.com,active"
)
p.reload
user1.reload
user1.pseudonyms.count.should == 1
user1.communication_channels.count.should == 1
user1.communication_channels.unretired.count.should == 1
p.communication_channel_id.should_not be_nil
user1.communication_channels.unretired.first.path.should == 'user2@example.com'
p.sis_communication_channel_id.should == p.communication_channel_id
p.communication_channel_id.should == user1.communication_channels.unretired.first.id
end
end
context 'enrollment importing' do