You need to sign in to do that
Don't have an account?
magandrez
INVALID_CROSS_REFERENCE_KEY when insert Customer Portal User
Hi there,
I'm trying to create test coverage for a trigger over User object, so, I need to create a User to fire the trigger. I coded a test class following this: http://www.salesforce.com/us/developer/docs/apexcode/index_Left.htm#StartTopic=Content/apex_dml_non_mix_sobjects.htm?SearchType
This is how it looks like:
public class UserTriggerHandlerTest { @isTest (seeAllData=true) static void testUserCreate(){ // Setup test data // This code runs as the system user Profile p = [SELECT Id FROM Profile WHERE Name='Portal User']; Profile p2 = [SELECT Id FROM Profile WHERE Name='System Administrator']; User u = new User(Alias = 'custPort', Email='customer@portal.com', EmailEncodingKey='UTF-8', LastName='Portal', LanguageLocaleKey='en_US', LocaleSidKey='en_US', ProfileId = p.Id, TimeZoneSidKey='America/Los_Angeles', UserName='customer@portal.com'); User u2 = new User(Alias = 'admn', Email='admin@test.com', EmailEncodingKey='UTF-8', LastName='Testing', LanguageLocaleKey='en_US', LocaleSidKey='en_US', ProfileId = p2.Id, TimeZoneSidKey='America/Los_Angeles', UserName='customer@portal.com'); System.runAs(u2) { insert u; } } }
The test fails with the following message:
FATAL_ERROR System.DmlException: Insert failed. First exception on row 0; first error: INVALID_CROSS_REFERENCE_KEY, invalid cross reference id: [] FATAL_ERROR Class.UserTriggerHandlerTest.testUserCreate: line 23, column 1
Any ideas? Does anyone know how to avoid this or any workaround to do test coverage for a trigger over User?
Thanks.
MGA.
with out inserting u2, you are using that user as running user, Insert u2 before u do
Actually you don't have to insert it, according to the documentation I provided.
I believe system.runas(u2) "fakes" the creation of that user for the tests.
MGA
yes, they inserted the user before they used it in system.runas api.
@isTest
private class MixedDML {
static testMethod void MixedDMLExample() {
User u;
Account a;
User thisUser = [SELECT Id FROM User WHERE Id = :UserInfo.getUserId()];
// Insert account as current user
System.runAs (thisUser) {
Profile p = [SELECT Id FROM Profile WHERE Name='Standard User'];
UserRole r = [SELECT Id FROM UserRole WHERE Name='SalesRep'];
u = new User(alias = 'jsmtih', email='jsmith@acme.com',
emailencodingkey='UTF-8', lastname='Smith',
languagelocalekey='en_US',
localesidkey='en_US', profileid = p.Id, userroleid = r.Id,
timezonesidkey='America/Los_Angeles',
username='jsmith@acme.com');
insert u;
a = new Account(name='Acme');
insert a;
}
// Update account as the new user
System.runAs(u) {
a.website = 'www.salesforce.com';
update a;
}
}
}