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

System.LimitException: Too many query rows: 50001
I'm suddenly getting this error when pushing unrelated code to production. The class in question has been working fine for over a year. The error lines are anywhere it says tstcont.submitCase();
@isTest
class TestWeb2CaseCont {
static testMethod void testCaseWithContact(){
Account a = TestUtils.getAccount('ut Acc1');
insert a;
Contact ct = TestUtils.getContact(a, 'ut Contact1');
ct.Email = 'utContact1@testclass.com';
insert ct;
Web2CaseCont tstcont = new Web2CaseCont();
tstcont.c.SuppliedEmail = ct.Email;
tstcont.submitCase();
System.assertEquals(ct.Id, tstcont.c.ContactId);
System.assertEquals(a.Id, tstcont.c.AccountId);
}
static testMethod void testCaseWithoutContact(){
Web2CaseCont tstcont = new Web2CaseCont();
tstcont.submitCase();
System.assertEquals(tstcont.c.ContactId, null);
System.assertEquals(tstcont.c.AccountId, null);
}
static testMethod void testPageParameters(){
Test.setCurrentPageReference(new PageReference('Page.Web2Case'));
System.currentPageReference().getParameters().put('pline', 'None');
System.currentPageReference().getParameters().put('Origin', 'None');
System.currentPageReference().getParameters().put('co', 'None');
Web2CaseCont tstcont = new Web2CaseCont();
tstcont.submitCase();
System.assertEquals(tstcont.c.Product_Line__c,'None' );
System.assertEquals(tstcont.c.Origin,'None' );
System.assertEquals(tstcont.c.SuppliedCompany,'None' );
}
static testMethod void testAttachment(){
Attachment att = new Attachment();
att.Name = 'ut attachment';
att.Body = Blob.valueOf(att.Name);
Web2CaseCont tstcont = new Web2CaseCont();
tstCont.att = att;
tstcont.submitCase();
}
static testMethod void testFailure(){
Web2CaseCont tstcont = new Web2CaseCont();
tstcont.c = null;
tstcont.submitCase();
System.assertEquals(tstcont.msg, System.label.WebCaseFailure );
}
}
@isTest
class TestWeb2CaseCont {
static testMethod void testCaseWithContact(){
Account a = TestUtils.getAccount('ut Acc1');
insert a;
Contact ct = TestUtils.getContact(a, 'ut Contact1');
ct.Email = 'utContact1@testclass.com';
insert ct;
Web2CaseCont tstcont = new Web2CaseCont();
tstcont.c.SuppliedEmail = ct.Email;
tstcont.submitCase();
System.assertEquals(ct.Id, tstcont.c.ContactId);
System.assertEquals(a.Id, tstcont.c.AccountId);
}
static testMethod void testCaseWithoutContact(){
Web2CaseCont tstcont = new Web2CaseCont();
tstcont.submitCase();
System.assertEquals(tstcont.c.ContactId, null);
System.assertEquals(tstcont.c.AccountId, null);
}
static testMethod void testPageParameters(){
Test.setCurrentPageReference(new PageReference('Page.Web2Case'));
System.currentPageReference().getParameters().put('pline', 'None');
System.currentPageReference().getParameters().put('Origin', 'None');
System.currentPageReference().getParameters().put('co', 'None');
Web2CaseCont tstcont = new Web2CaseCont();
tstcont.submitCase();
System.assertEquals(tstcont.c.Product_Line__c,'None' );
System.assertEquals(tstcont.c.Origin,'None' );
System.assertEquals(tstcont.c.SuppliedCompany,'None' );
}
static testMethod void testAttachment(){
Attachment att = new Attachment();
att.Name = 'ut attachment';
att.Body = Blob.valueOf(att.Name);
Web2CaseCont tstcont = new Web2CaseCont();
tstCont.att = att;
tstcont.submitCase();
}
static testMethod void testFailure(){
Web2CaseCont tstcont = new Web2CaseCont();
tstcont.c = null;
tstcont.submitCase();
System.assertEquals(tstcont.msg, System.label.WebCaseFailure );
}
}
I don't see any SOQL in this code, so it must be in tstcont.submitCase();
Why now and not before? Because you likely have more records now then when the program was developed, and the original development did not take into consideration the SFDC limits.
try{
c.SuppliedName = c.SuppliedFirstName__c + ' ' + c.SuppliedLastName__c;
List<Contact> cnt = [Select Id, Account.Id from Contact where Email =: c.SuppliedEmail];
if((!cnt.isEmpty()) && (cnt.size() == 1)){
c.ContactId = cnt.get(0).Id;
c.AccountId = cnt.get(0).Account.Id;
}
How can I limit the number of records returned here?
List<Contact> cnt = [Select Id, Account.Id from Contact where Email =: c.SuppliedEmail LIMIT 40000];
Do you have the seeAllData=true for the test classes?