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

apex Class Test : System.QueryException: SOQL offset must be a non-negative value
I have test class
@isTest
public class ListeAppelsTest
{
public static List<Campaign> newCampaign;
static void init() {
newCampaign = new List<Campaign>();
}
public static testMethod void ListeAppels()
{
// Set test page passing initial parameters.
PageReference aPage = Page.ListeAppels;
aPage.getParameters().put('filterCampaignId', '999');
aPage.getParameters().put('filterStatus', '1');
aPage.getParameters().put('filterUserId', '0');
aPage.getParameters().put('filterSearch', '0678945312');
integer counter = 0;
test.setCurrentPage(aPage);
init();
Test.startTest();
//---------------------------------------------------------
List<Account> accounts = new List<Account>();
List<Contact> contacts = new List<Contact>();
List<CampaignMember> campaignMembers = new List<CampaignMember>();
Campaign csource = new Campaign (
Name = 'CSource' , Nom_Evenement__c='Agence'
);
insert csource;
for (Integer i=1;i<40; i++) {
Campaign c = new Campaign (
Name = 'Test' + i, Nom_Evenement__c='Agence', CampagneSource__c=csource.id
);
newCampaign.add(c);
}
insert newCampaign;
Integer i = 0;
for(Campaign campaign : newCampaign) {
for(Integer index = 0; index < 3; index++){
Account act1 = new Account(Name = 'Test'+index+i, Description=campaign.Id);
accounts.add(act1);
}
i++;
}
insert accounts;
for(Account account: accounts){
Contact cntct = new Contact(LastName = account.Name,phone='0678945313', mobilephone='0678945313',accountId = account.Id, Email='testContact@domain.com', Description = account.Description,Type_de_contact__c='Speaker');
contacts.add(cntct);
}
insert contacts;
Integer integ = 0;
for(Contact contact: contacts){
integ++;
String happel = null;
String pappel = null;
if(integ ==1){
pappel='2';
} else if(integ==2){
pappel=':2';
}else if(integ==3){
pappel='44:99';
}else if(integ==4){
pappel='aa:99';
}else if(integ==5){
pappel='aa:bb';
} else
if(integ ==11){
happel='2';
} else if(integ==12){
happel=':2';
}else if(integ==13){
happel='44:99';
}else if(integ==14){
happel='aa:99';
}else if(integ==15){
happel='aa:bb';
}
CampaignMember cm = null;
if(integ<=5) {
cm= New CampaignMember(CampaignId=contact.Description,ContactId=contact.Id,Status='Sent', Heure_Dernier_Appel__c=pappel);
} else if (integ >= 10 && integ <= 15) {
cm= New CampaignMember(CampaignId=contact.Description,ContactId=contact.Id,Status='Sent', Heure_Prochain_Appel__c=happel);
} else {
cm= New CampaignMember(CampaignId=contact.Description,ContactId=contact.Id,Status='Sent');
}
campaignMembers.add(cm);
}
insert campaignMembers;
// Récuperation des CampaignMembers en Base
List<Id> newCampaignIds = new List<Id>();
for (Campaign C : newCampaign) {
newCampaignIds.add(C.Id);
}
newCampaign = [
SELECT Id, Name
FROM Campaign
WHERE Id IN :newCampaignIds
];
upsert newCampaign;
//---------------------------------------------------------
Account act = new Account();
act = new Account(Name = 'Test0');
upsert act;
Apexpages.StandardController sc = new Apexpages.standardController(act);
// Instantiate the extension
ListeAppels ext = new ListeAppels();
CampaignMembers = ext.sortListCM(campaignMembers);
ext.getData();
ext.UpdateRecords();
ext.userOwnerGroup();
ext.getBooleanValue('Non');
ext.getBooleanValue('Oui');
ext.Next();
ext.End();
ext.Previous();
ext.Beginning();
ext.getDisablePrevious();
ext.getDisableNext();
ext.getCampaignIDList();
ext.getDisableNext();
ext.getDisablePrevious();
ext.getTotalPages();
ext.getCmTotal();
ext.getPageNumber();
Boolean bln = ext.getBooleanValue('Oui');
bln = ext.getBooleanValue('Non');
string url = ext.getSfInstance() ;
Set<Id> usersForGroup = ext.usersForGroup;
List<SelectOption> CampaignItems = new List<SelectOption>();
CampaignItems.add(new SelectOption('', '-- Campagne --'));
// System.assertEquals(CampaignItems, ext.getCampaignItems());
List<SelectOption> StatusItems = new List<SelectOption>();
Schema.DescribeFieldResult fieldResult = CampaignMember.Status.getDescribe();
List<Schema.PicklistEntry> plv = fieldResult.getPickListValues();
StatusItems.add(new SelectOption('', '-- Statut --'));
for (Schema.PickListEntry s: plv){
StatusItems.add(new SelectOption(s.getValue(), s.getLabel()));
}
// System.assertEquals(StatusItems, ext.getStatusItems());
Map<String,List<SelectOption>> StatusByCampaign = new Map<String,List<SelectOption>>();
// System.assertEquals(StatusByCampaign, ext.StatusByCampaign);
List<SelectOption> StatusItemsEmpty = new List<SelectOption>();
// System.assertEquals(StatusItemsEmpty, ext.getStatusItemsFromCampaign(''));
Set<Id> setGpId = new Set<Id>();
setGpId = ext.getGroupUserIds(setGpId);
// System.assertEquals(setGpId, ext.getGroupUserIds(setGpId));
List<SelectOption> ContactTypes = new List<SelectOption>();
Schema.DescribeFieldResult fieldResultcCType = CampaignMember.Type_de_contact__c.getDescribe();
List<Schema.PicklistEntry> plvct = fieldResultcCType.getPickListValues();
ContactTypes.add(new SelectOption('', '-- Type de contact --'));
for (Schema.PickListEntry ct: plvct){
ContactTypes.add(new SelectOption(ct.getValue(), ct.getLabel()));
}
// System.assertEquals(ContactTypes, ext.getContactType());
ext.filterCampaignId ='97989U';
ext.filterSearch ='Test';
ext.filterStatus ='New';
ext.filterContactType ='Speaker';
aPage.getParameters().put('filterStatus', '1');
aPage.getParameters().put('filterUserId', '0');
List<ListeAppels.cCampaignMember> ccampaignMember = ext.getCampaignMembersFromQuery(true);
String queryFields = 'SELECT Id, DateHeureAppel__c, Date_Dernier_Appel__c,Heure_Dernier_Appel__c,Date_Prochain_Appel__c,Heure_Prochain_Appel__c, Date_Heure_Prochain_Appel__c, ContactId, contact.email, contact.title, contact.salutation, contact.MobilePhone, contact.phone, contact.pi__comments__c ,Potentiel__c ,CampaignId, Contact.Id, Contact.Account.Id, Status, Contact.Account.Name, contact.name, contact.Type_d_inscription__c, contact.Service__c, contact.Secteur__c, Campaign.name, CommentaireAppel__c, Type_de_contact__c, appel_telephonique_orga__c, Discount_Code__c,RegistrationDate__c';
String query = ' FROM CampaignMember';
List<CampaignMember> cmembre =Database.query(queryFields + query);
ext.CampaignMembers = new List<ListeAppels.cCampaignMember>();
for (CampaignMember cmpMbr: cmembre){
ext.CampaignMembers.add(new ListeAppels.cCampaignMember(cmpMbr, ext.cMap ));
}
ext.sortBy = 'Registration Date';
ext.sortDir = 'Registration Date';
ext.CampaignMembers = ext.sortList(ext.CampaignMembers);
aPage =ext.UpdateRecords();
Test.stopTest();
}
private static List<Campaign> createNewCampaign(Integer numCampaign) {
//System.debug(clients);
for (Integer i=0;i<numCampaign; i++) {
Campaign c = new Campaign (
Name = 'Test' + i
);
newCampaign.add(c);
}
insert newCampaign;
// Récuperation des CampaignMembers en Base
List<Id> newCampaignIds = new List<Id>();
for (Campaign C : newCampaign) {
newCampaignIds.add(C.Id);
}
newCampaign = [
SELECT Id, Name
FROM Campaign
WHERE Id IN :newCampaignIds
];
upsert newCampaign;
return newCampaign;
}
}
when I execute i have this error:
System.QueryException: SOQL offset must be a non-negative value
@isTest
public class ListeAppelsTest
{
public static List<Campaign> newCampaign;
static void init() {
newCampaign = new List<Campaign>();
}
public static testMethod void ListeAppels()
{
// Set test page passing initial parameters.
PageReference aPage = Page.ListeAppels;
aPage.getParameters().put('filterCampaignId', '999');
aPage.getParameters().put('filterStatus', '1');
aPage.getParameters().put('filterUserId', '0');
aPage.getParameters().put('filterSearch', '0678945312');
integer counter = 0;
test.setCurrentPage(aPage);
init();
Test.startTest();
//---------------------------------------------------------
List<Account> accounts = new List<Account>();
List<Contact> contacts = new List<Contact>();
List<CampaignMember> campaignMembers = new List<CampaignMember>();
Campaign csource = new Campaign (
Name = 'CSource' , Nom_Evenement__c='Agence'
);
insert csource;
for (Integer i=1;i<40; i++) {
Campaign c = new Campaign (
Name = 'Test' + i, Nom_Evenement__c='Agence', CampagneSource__c=csource.id
);
newCampaign.add(c);
}
insert newCampaign;
Integer i = 0;
for(Campaign campaign : newCampaign) {
for(Integer index = 0; index < 3; index++){
Account act1 = new Account(Name = 'Test'+index+i, Description=campaign.Id);
accounts.add(act1);
}
i++;
}
insert accounts;
for(Account account: accounts){
Contact cntct = new Contact(LastName = account.Name,phone='0678945313', mobilephone='0678945313',accountId = account.Id, Email='testContact@domain.com', Description = account.Description,Type_de_contact__c='Speaker');
contacts.add(cntct);
}
insert contacts;
Integer integ = 0;
for(Contact contact: contacts){
integ++;
String happel = null;
String pappel = null;
if(integ ==1){
pappel='2';
} else if(integ==2){
pappel=':2';
}else if(integ==3){
pappel='44:99';
}else if(integ==4){
pappel='aa:99';
}else if(integ==5){
pappel='aa:bb';
} else
if(integ ==11){
happel='2';
} else if(integ==12){
happel=':2';
}else if(integ==13){
happel='44:99';
}else if(integ==14){
happel='aa:99';
}else if(integ==15){
happel='aa:bb';
}
CampaignMember cm = null;
if(integ<=5) {
cm= New CampaignMember(CampaignId=contact.Description,ContactId=contact.Id,Status='Sent', Heure_Dernier_Appel__c=pappel);
} else if (integ >= 10 && integ <= 15) {
cm= New CampaignMember(CampaignId=contact.Description,ContactId=contact.Id,Status='Sent', Heure_Prochain_Appel__c=happel);
} else {
cm= New CampaignMember(CampaignId=contact.Description,ContactId=contact.Id,Status='Sent');
}
campaignMembers.add(cm);
}
insert campaignMembers;
// Récuperation des CampaignMembers en Base
List<Id> newCampaignIds = new List<Id>();
for (Campaign C : newCampaign) {
newCampaignIds.add(C.Id);
}
newCampaign = [
SELECT Id, Name
FROM Campaign
WHERE Id IN :newCampaignIds
];
upsert newCampaign;
//---------------------------------------------------------
Account act = new Account();
act = new Account(Name = 'Test0');
upsert act;
Apexpages.StandardController sc = new Apexpages.standardController(act);
// Instantiate the extension
ListeAppels ext = new ListeAppels();
CampaignMembers = ext.sortListCM(campaignMembers);
ext.getData();
ext.UpdateRecords();
ext.userOwnerGroup();
ext.getBooleanValue('Non');
ext.getBooleanValue('Oui');
ext.Next();
ext.End();
ext.Previous();
ext.Beginning();
ext.getDisablePrevious();
ext.getDisableNext();
ext.getCampaignIDList();
ext.getDisableNext();
ext.getDisablePrevious();
ext.getTotalPages();
ext.getCmTotal();
ext.getPageNumber();
Boolean bln = ext.getBooleanValue('Oui');
bln = ext.getBooleanValue('Non');
string url = ext.getSfInstance() ;
Set<Id> usersForGroup = ext.usersForGroup;
List<SelectOption> CampaignItems = new List<SelectOption>();
CampaignItems.add(new SelectOption('', '-- Campagne --'));
// System.assertEquals(CampaignItems, ext.getCampaignItems());
List<SelectOption> StatusItems = new List<SelectOption>();
Schema.DescribeFieldResult fieldResult = CampaignMember.Status.getDescribe();
List<Schema.PicklistEntry> plv = fieldResult.getPickListValues();
StatusItems.add(new SelectOption('', '-- Statut --'));
for (Schema.PickListEntry s: plv){
StatusItems.add(new SelectOption(s.getValue(), s.getLabel()));
}
// System.assertEquals(StatusItems, ext.getStatusItems());
Map<String,List<SelectOption>> StatusByCampaign = new Map<String,List<SelectOption>>();
// System.assertEquals(StatusByCampaign, ext.StatusByCampaign);
List<SelectOption> StatusItemsEmpty = new List<SelectOption>();
// System.assertEquals(StatusItemsEmpty, ext.getStatusItemsFromCampaign(''));
Set<Id> setGpId = new Set<Id>();
setGpId = ext.getGroupUserIds(setGpId);
// System.assertEquals(setGpId, ext.getGroupUserIds(setGpId));
List<SelectOption> ContactTypes = new List<SelectOption>();
Schema.DescribeFieldResult fieldResultcCType = CampaignMember.Type_de_contact__c.getDescribe();
List<Schema.PicklistEntry> plvct = fieldResultcCType.getPickListValues();
ContactTypes.add(new SelectOption('', '-- Type de contact --'));
for (Schema.PickListEntry ct: plvct){
ContactTypes.add(new SelectOption(ct.getValue(), ct.getLabel()));
}
// System.assertEquals(ContactTypes, ext.getContactType());
ext.filterCampaignId ='97989U';
ext.filterSearch ='Test';
ext.filterStatus ='New';
ext.filterContactType ='Speaker';
aPage.getParameters().put('filterStatus', '1');
aPage.getParameters().put('filterUserId', '0');
List<ListeAppels.cCampaignMember> ccampaignMember = ext.getCampaignMembersFromQuery(true);
String queryFields = 'SELECT Id, DateHeureAppel__c, Date_Dernier_Appel__c,Heure_Dernier_Appel__c,Date_Prochain_Appel__c,Heure_Prochain_Appel__c, Date_Heure_Prochain_Appel__c, ContactId, contact.email, contact.title, contact.salutation, contact.MobilePhone, contact.phone, contact.pi__comments__c ,Potentiel__c ,CampaignId, Contact.Id, Contact.Account.Id, Status, Contact.Account.Name, contact.name, contact.Type_d_inscription__c, contact.Service__c, contact.Secteur__c, Campaign.name, CommentaireAppel__c, Type_de_contact__c, appel_telephonique_orga__c, Discount_Code__c,RegistrationDate__c';
String query = ' FROM CampaignMember';
List<CampaignMember> cmembre =Database.query(queryFields + query);
ext.CampaignMembers = new List<ListeAppels.cCampaignMember>();
for (CampaignMember cmpMbr: cmembre){
ext.CampaignMembers.add(new ListeAppels.cCampaignMember(cmpMbr, ext.cMap ));
}
ext.sortBy = 'Registration Date';
ext.sortDir = 'Registration Date';
ext.CampaignMembers = ext.sortList(ext.CampaignMembers);
aPage =ext.UpdateRecords();
Test.stopTest();
}
private static List<Campaign> createNewCampaign(Integer numCampaign) {
//System.debug(clients);
for (Integer i=0;i<numCampaign; i++) {
Campaign c = new Campaign (
Name = 'Test' + i
);
newCampaign.add(c);
}
insert newCampaign;
// Récuperation des CampaignMembers en Base
List<Id> newCampaignIds = new List<Id>();
for (Campaign C : newCampaign) {
newCampaignIds.add(C.Id);
}
newCampaign = [
SELECT Id, Name
FROM Campaign
WHERE Id IN :newCampaignIds
];
upsert newCampaign;
return newCampaign;
}
}
when I execute i have this error:
System.QueryException: SOQL offset must be a non-negative value
Sorry for this issue you are encountering.
May I suggest you please check with below link which might help you further with reference to above issue.
- https://gist.github.com/brianmfear/66488eb80292c7151f616ebe7d1b0a18
Hope this helps.Kindly mark this as solved if the reply was helpful.
Thanks,
Nagendra