function readOnly(count){ }
Starting November 20, the site will be set to read-only. On December 4, 2023,
forum discussions will move to the Trailblazer Community.
+ Start a Discussion
ckellieckellie 

Help with Apex Test Class

I am trying to write my first Apex test class and am running into problems. When I test the code I am receiving one test failure and am getting the following the error message:

 

System.QueryException: List has no rows for assignment to SObject

 Stack Trace:

Class.testTriggerUpdateOppRevised5.UpdateOppRevisedTest: line 6, column 10 External entry point 

 

Here is my test class code:

 

 

@isTestprivate class testTriggerUpdateOppRevised5 { static testMethod void UpdateOppRevisedTest() { Task t = new task (subject='Generate Re-Quote'); t = [select Id, subject from Task where id = :t.id]; system.debug(t.subject); system.assertEquals('Generate Re-Quote',T.Subject); //Setup User User u1 = [select id from user where alias = 'auser']; //Run as U1 System.RunAs(u1) {List<Generate_Re_Quote__c> deleteName = new List<Generate_Re_Quote__c>(); //Clean up data System.debug('Setting up testing - deleting any mileage records for ' +UserInfo.getUserName() + ' from today'); deleteName = [SELECT Name from Generate_Re_Quote__c WHERE createdDate = TODAY and createdById = :u1.id]; if(!deleteName.isEmpty()) { delete deleteName; }System.debug('Inserting TestGenerate... (single record validation)'); Generate_Re_Quote__c testName = new Generate_Re_Quote__c(name = 'Robert', Requested_Date_To_Complete_Re_Quote__c = date.parse('12/12/2008'), Opportunity_Name__c = 'Test', What_Needs_to_be_re_Quoted__c = 'nothing' ); insert testName; //validate single insert /*for (Generate_re_Quote__c grq:[select Opportunity_Name__c FROM Generate_Re_Quote__c WHERE createdDate = TODAY and createdByid = :u1.id and Requested_Date_To_Complete_Re_Quote__c != null]);*/ //{grq != null; // System.assertEquals(grq !=null); //end RunAs(u1)*/ // validate single insert }}}

 

 Here is my  Apex Trigger the code is testing:

 

 

trigger UpdateOppRevised5 on Generate_Re_Quote__c(Before Insert, Before Update){ Set<Id> oppIds = new Set<Id>(); for(Generate_Re_Quote__c g : trigger.new){ System.debug('**** 0 opp id : '+g.Opportunity_Name__c); oppIds.add(g.Opportunity_Name__c); } System.debug('****1 : Opp Id size '+ oppIds.size()); List<OpportunityTeamMember> Otms = [Select id, opportunityid, TeamMemberRole,UserId from OpportunityTeamMember where OpportunityId in:oppIds and TeamMemberRole = 'Product Specialist']; System.debug('****2 : Otms size '+ oppIds.size()); if (Otms.size() > 0) { List<Task> tasks = new List<Task>(); Map<id, OpportunityTeamMember> mOtms = new map<id, OpportunityTeamMember>(); for(OpportunityTeamMember o: Otms) { mOtms.put(o.opportunityid, o); } //Loop through the records and create a task //Loop through the records and create a task id userid; for(Generate_Re_Quote__c g : trigger.new){ userid= mOtms.get(g.Opportunity_Name__c).UserId; system.debug('UserId: ' + userid); Task t = new Task(whatID =trigger.new[0].Opportunity_Name__c, ActivityDate=trigger.new[0].Requested_Date_To_Complete_Re_Quote__c, Description=trigger.new[0].What_needs_to_be_Re_quoted__c, subject='Generate Re-Quote', ownerid= userid); Database.DMLOptions dmlo = new Database.DMLOptions(); dmlo.EmailHeader.triggerUserEmail = true; database.insert(t, dmlo); Tasks.add(t); } }}

 

What am I missing in the test class and can anyone help me with a code sample?

 

Thank you very much. 

 

Best Answer chosen by Admin (Salesforce Developers) 
dmchengdmcheng
I think the actual email encoding key value is just "ISO-8859-1", not "ISO-8859-1, ISO-LATIN-1"  If you query the User table in the IDE or Excel, that's what shows.

All Answers

dmchengdmcheng
Can you repost your code in a more readable format? 
SJTECH2009SJTECH2009

In test Method u are  not inserting Task Record

 

 

 

after Task t = new task (subject='Generate Re-Quote');  

 

write--> insert t;

 

  t = [select Id, subject from Task where id = :t.id];

ckellieckellie

Thak you very much for this help. My next error says:

 

INVALID_OR_NULL_FOR_RESTRICTED_PICKLIST, Email Encoding: bad value for restricted picklist field: ISO-8859-1, ISO-LATIN-1: [EmailEncodingKey]

 

Stack Trace:

 

Class.testTriggerUpdateOppRevised5.UpdateOppRevisedTest: line 15, column 5 External entry point

 

Here is my code formatted better (Sorry about the previous format mangling):

 

@isTest private class testTriggerUpdateOppRevised5 { static testMethod void UpdateOppRevisedTest() { Task t = new task (subject='Generate Re-Quote'); insert t; t = [select Id, subject from Task where id = :t.id]; system.debug(t.subject); system.assertEquals('Generate Re-Quote',T.Subject); //Setup User User u1 = new user (Username = ' test@key.net', LastName ='test', email='test@key.net', communityNickname='test', TimeZoneSidKey='America/Los_Angeles', LocaleSidKey='', EmailEncodingKey='ISO-8859-1, ISO-LATIN-1', ProfileId='00e30000000gAkF', LanguageLocaleKey='English' ); insert u1; u1 = [select id from user where alias = 'ckellie']; //Run as U1 System.RunAs(u1) {List<Generate_Re_Quote__c> deleteName = new List<Generate_Re_Quote__c>(); //Clean up data System.debug('Setting up testing - deleting any mileage records for ' +UserInfo.getUserName() + ' from today'); deleteName = [SELECT Name from Generate_Re_Quote__c WHERE createdDate = TODAY and createdById = :u1.id]; if(!deleteName.isEmpty()) { delete deleteName; }System.debug('Inserting TestGenerate... (single record validation)'); Generate_Re_Quote__c testName = new Generate_Re_Quote__c(name = 'Robert', Requested_Date_To_Complete_Re_Quote__c = date.parse('12/12/2008'), Opportunity_Name__c = 'Test', What_Needs_to_be_re_Quoted__c = 'nothing' ); insert testName; //validate single insert /*for (Generate_re_Quote__c grq:[select Opportunity_Name__c FROM Generate_Re_Quote__c WHERE createdDate = TODAY and createdByid = :u1.id and Requested_Date_To_Complete_Re_Quote__c != null]);*/ //{grq != null; // System.assertEquals(grq !=null); //end RunAs(u1)*/ // validate single insert } } }

 

Thanks,

 

Chris

dmchengdmcheng
I think the actual email encoding key value is just "ISO-8859-1", not "ISO-8859-1, ISO-LATIN-1"  If you query the User table in the IDE or Excel, that's what shows.
This was selected as the best answer
ckellieckellie
This did the trick. Thank you for your help.