You need to sign in to do that
Don't have an account?

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.
All Answers
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];
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