You need to sign in to do that
Don't have an account?
Test class failing on Deployment Validation
I am fairly new to Apex classes and triggers, but I am finding my feet with the code I have recently written.
Having written and tested the code I am now trying to deploy it in the main org, but I get an error when I try to validate it.
The most frustrating thing is that the validation error is being triggered by some code previously written by a developer - it seems that some validation rules, introduced since the developer wrote his code, are causing the problem.
What I don't understand is that I seem to have fixed the problem but am still getting the error message.
Here is the error:
Failure Message: "System.DmlException: Update failed. First exception on row 0 with id 0062000000JZehyAAD; first error: FIELD_CUSTOM_VALIDATION_EXCEPTION, Please enter an email address on the contact page before closing deal.: []", Failure Stack Trace: "Class.TestTriggers.Test_AllTriggers: line 82, column 9 External entry point"
And here is the test class that seems to be causing the issue:
@IsTest private class TestTriggers { static testMethod void Test_AllTriggers(){ //Create an SRT for user 2020 mgt in Aug SRT__c srt = New SRT__c(Name='Test SRT',User__c='00520000001BboG',Date__c=System.Today(),New_Business_Target__c=10000,Online_Target__c=1000); insert srt; //Integer lastMonth = Date.month(srt.Date__c)-1; Date d = srt.Date__c;//Date.newInstance(Date.year(srt.Date__c), , pInteger) d = d.AddMonths(-1); SRT__c srtLastMonth = New SRT__c(Name='Test SRT',User__c='00520000001BboG',Date__c=d,New_Business_Target__c=10000,Online_Target__c=1000); insert srtLastMonth; srt.Last_Month_s_SRT__c=srtLastMonth.id; update srt; SRT__c srtTest = [Select OwnerId,User__c from SRT__c where Id = :srt.id]; //Add an account User u = [select id from user where lastname = 'burns' and isactive=true limit 1]; Account acc = New Account(Name='Adam test',OwnerId=u.id,Billingstreet='asa',BillingPostalCode='test',Billingcity='test',billingcountry='United Kingdom'); Insert acc; //Get delegate record type Id List<Schema.RecordTypeInfo> contactRecordTypeInfos = Contact.SobjectType.getDescribe().getRecordTypeInfos(); RecordType rt; for(Schema.RecordTypeInfo item : contactRecordTypeInfos){ if(item.getName()=='Delegate'){ rt = New RecordType(id=item.getRecordTypeId()) ; } } //Add a contact Contact con = New Contact(AccountID= acc.Id,RecordTYpeId=rt.id,Lastname='Tester',Email='test@test.com'); insert con; String conOwnerId = [select ownerid from contact where id = :con.id].ownerid; System.debug('Account Owner ID' + acc.OwnerId); System.debug('Contact Owner ID' + conOwnerId); System.assert(acc.Ownerid <> conOwnerId); //Add an opportunity List<Opportunity> oppArray = New List<Opportunity>(); oppArray.add(New Opportunity(AccountId=acc.Id,Name='Opp Test',CloseDate=System.today(),Stagename='No ANswer')); oppArray.add(New Opportunity(AccountId=acc.Id,Name='Opp Test',CloseDate=System.today(),Stagename='No ANswer')); //Opportunity opp = New Opportunity(AccountId=acc.Id,Name='Opp Test',CloseDate=System.today(),Stagename='No ANswer'); Opportunity opp = New Opportunity(AccountId=acc.Id,Name='Opp Test',CloseDate=System.today(),Stagename='No ANswer'); insert opp; //insert oppArray; list<id> oppId = New list<id>(); for(integer i = 0;i<oppArray.size();i++){ oppId.add(oppArray[i].id); } System.debug('|||||' + oppId); Opportunity oppTest = [select name,deal_ref__c from opportunity where id = :opp.Id]; //oppTest[0].CDSOpportunity__c =true; //oppTest[1].CDSOpportunity__c =true; //update oppTest; System.debug('@@@@@@' + oppTest); System.assert(oppTest.Name == oppTest.Deal_Ref__c); // Add an item //create an event/Issue Issue_Year__c ei = New Issue_Year__c(Name='Test',Description__c = 'Test Desc',Product__c='CFO',Date__c=System.today(),Mag_or_Event__c='Mag',Online__c='No', Copy_Deadline__c=System.today()); insert ei; List<Schema.RecordTypeInfo> itemRecordTypeInfos = Item__c.SobjectType.getDescribe().getRecordTypeInfos(); for(Schema.RecordTypeInfo item : itemRecordTypeInfos){ if(item.getName()=='Delegate'){ rt = New RecordType(id=item.getRecordTypeId()) ; } } opp.StageName = 'Closed - Awaiting Approval'; opp.Invoice_Address__c = 'Company'; opp.Address_Invoice_to_contact_above__c = 'yes'; update opp; Item__c item = New Item__c(Payment_terms__c='7 days',Probability__c=100,RecordTYpeId = rt.Id,Attendee__c=con.id,Name='Item Test',Opportunity__c=opp.id,Item_Sold__c='delegate',Event_Issue__c=ei.id); insert item; Item__c itemTest = [Select Line_Number__c from Item__c where id = :item.id]; System.assert(itemTest.Line_Number__c == 1); Integer contactAttendanceCounter = [select count() from ContactAttendance__c where Contact__c = :con.id]; System.Assert(contactAttendanceCounter==1); //Change the opportunity to be closed won opp.StageName = 'Closed test'; //opp.Probability = 100; Update opp; opp.StageName = 'Closed Won'; Update opp; item.Overide_Deal_Date__c = d.addYears(2); update item; //opp.CDSOpportunity__c = true; //update opp; opp.StageName = 'Closed test'; update opp; delete item; delete opp; } }
As you can see, I have set the email address on the contact page here:
//Add a contact
Contact con = New Contact(AccountID= acc.Id,RecordTYpeId=rt.id,Lastname='Tester',Email='test@test.com');
insert con;
So what am I doing wrong?
Thanks for your help.
Quick fix: deactivate the related validation rules. and deploy again. After that, enable those validation.
Regards,
All Answers
Quick fix: deactivate the related validation rules. and deploy again. After that, enable those validation.
Regards,
Thanks for that - I should have thought of it!
I have now deployed successfully!
:smileyvery-happy: