-
ChatterFeed
-
0Best Answers
-
0Likes Received
-
0Likes Given
-
1Questions
-
3Replies
HELP PLEASE: System.LimitException: npsp:Too many SOQL queries: 101
I know similar questions have been asked in this forum but the answers provided is not peculair to my case. I am trying to deploy changes from sandbox to production but a specific Apex Test Class is failing (all 5 test methods failed due to System.LimitException: npsp:Too many SOQL queries: 101). I have the screenshot of the errors as well as the actual Apex Test Class below. I am an Admin and just learning to code so its difficult for me to resolve this on my own.
I would really appreciate if I can get this resolved soon. Thanks![Validation Errors](/forums/servlet/rtaImage?eid=9060G000000UTvM&feoid=Body&refid=0EM0G000000MJUw)
Here is the Apex Test Class
I would really appreciate if I can get this resolved soon. Thanks
Here is the Apex Test Class
/* This test class covers the following Apex classes, methods, and triggers TicketAFTER (trigger) TicketBEFORE (trigger) ContactCalculations.updateFirstLastfromTrigger SoapboxTranslation_Utilities.ticketLevelplusHolderFromTrigger */ @isTest public class Test_Tickets { /** SETUP METHODS **/ static List<Opportunity> setupContactRegistrations(Contact con1, Contact con2) { TestData.newCampaignSetting('Event'); TestData.newOppSettings(); //create 3 events Campaign evt1 = TestData.newEvent(datetime.now()); Campaign evt2 = TestData.newEvent(datetime.now().adddays(-1)); Campaign evt3 = TestData.newEvent(datetime.now().adddays(-3)); insert evt1; insert evt2; insert evt3; //create a regsitration to each event for each contact Opportunity reg11 = TestData.newRegistration(con1, evt1); Opportunity reg21 = TestData.newRegistration(con1, evt2); Opportunity reg31 = TestData.newRegistration(con1, evt3); Opportunity reg12 = TestData.newRegistration(con2, evt1); Opportunity reg22 = TestData.newRegistration(con2, evt2); Opportunity reg32 = TestData.newRegistration(con2, evt3); insert reg11; insert reg21; insert reg31; insert reg12; insert reg22; insert reg32; Opportunity[] opplist = new Opportunity[]{reg11,reg21,reg31,reg12,reg22,reg32}; return opplist; } /** TICKET TRANSLATION TESTS **/ static private testmethod void testTicketLevelMapping() { system.debug('begin ticketlevelmapping test'); //first, create two contacts and registrations for them to 3 different events Contact con1 = TestData.newContact(); Contact con2 = TestData.newContact(); insert con1; insert con2; Opportunity[] reglist = setupContactRegistrations(con1, con2); //then get the 3 events and member levels fields Campaign evt1 = [Select Id, MemberLevels__c, NonmemberLevels__c, StudentLevels__c from Campaign where Id = :reglist[0].CampaignId]; Campaign evt2 = [Select Id, MemberLevels__c, NonmemberLevels__c, StudentLevels__c from Campaign where Id = :reglist[1].CampaignId]; Campaign evt3 = [Select Id, MemberLevels__c, NonmemberLevels__c, StudentLevels__c from Campaign where Id = :reglist[2].CampaignId]; //for event 1, Education Program and Student are student levels, Member and Guest Pass are member levels and Admin Comp & nonmember are nonmember levels evt1.MemberLevels__c = 'Member;Guest Pass'; evt1.NonmemberLevels__c = 'Admin Comp;Nonmember'; evt1.StudentLevels__c = 'Education Program;Student'; //for event 2, Member and Education Program are the member levels, Guest Pass & Nonmember are the nonmember levels, and Student is the only student level evt2.MemberLevels__c = 'Member;Education Program'; evt2.NonmemberLevels__c = 'Nonmember;Guest Pass'; evt2.StudentLevels__c = 'Student'; //event 3 has no levels designated update evt1; update evt2; //for each event make 1 member, 1 nonmember, 1 student, 1 education program, 1 guest pass, 1 admin comp ticket String[] typelist = new String[]{'Admin Comp','Education Program','Guest Pass','Member','Nonmember','Student'}; sbxe1__Ticket__c[] tickets1 = new sbxe1__Ticket__c[]{}; sbxe1__Ticket__c[] tickets2 = new sbxe1__Ticket__c[]{}; sbxe1__Ticket__c[] tickets3 = new sbxe1__Ticket__c[]{}; for (String tickettype : typelist) { tickets1.add(TestData.newTicket(reglist[0],tickettype)); } for (String tickettype : typelist) { tickets2.add(TestData.newTicket(reglist[1],tickettype)); } for (String tickettype : typelist) { tickets3.add(TestData.newTicket(reglist[2],tickettype)); } //now insert all of these tickets Test.startTest(); insert tickets1; insert tickets2; insert tickets3; Test.stopTest(); //gather up the ticket groups again tickets1 = [Select Id, sbxe1__sbx_Campaign__c, sbxe1__sbx_TicketType__c, Ticket_TypeList__c from sbxe1__Ticket__c where sbxe1__sbx_Campaign__c = :evt1.Id order by sbxe1__sbx_TicketType__c ASC]; tickets2 = [Select Id, sbxe1__sbx_Campaign__c, sbxe1__sbx_TicketType__c, Ticket_TypeList__c from sbxe1__Ticket__c where sbxe1__sbx_Campaign__c = :evt2.Id order by sbxe1__sbx_TicketType__c ASC]; tickets3 = [Select Id, sbxe1__sbx_Campaign__c, sbxe1__sbx_TicketType__c, Ticket_TypeList__c from sbxe1__Ticket__c where sbxe1__sbx_Campaign__c = :evt3.Id order by sbxe1__sbx_TicketType__c ASC]; //first show that the education program ticket for evt3 is of type 'general' because evt3 has no levels designated system.assertequals('Education Program',tickets3[1].sbxe1__sbx_TicketType__c); system.assertequals('General',tickets3[1].Ticket_TypeList__c); //then, show that the education program ticket for evt1 is a student type, but it is a member type for evt2 system.assertEquals('Education Program', tickets1[1].sbxe1__sbx_TicketType__c, tickets2[1].sbxe1__sbx_TicketType__c); system.assertEquals('Student',tickets1[1].Ticket_TypeList__c); system.assertEquals('Member',tickets2[1].Ticket_TypeList__c); } static private testmethod void testTicketHolderMatching() { //edit the tickets before insert so that some match and some don't. insert and check system.debug('begin ticketholdermatching test'); //first, create two contacts and registrations for them to 3 different events Contact con1 = TestData.newContact(); Contact con2 = TestData.newContact(); con1.LastName='Last1'; con1.FirstName='First1'; con1.Email = 'con1@email.com'; con2.LastName='Last2'; con2.FirstName='First2'; con2.Email='con2@email.com'; insert con1; insert con2; Opportunity[] reglist = setupContactRegistrations(con1, con2); //make a ticket that matches con1 on a con1 registration sbxe1__Ticket__c ticket1y = TestData.newTicket(reglist[0]); ticket1y.sbxe1__sbx_FirstName__c = con1.FirstName; ticket1y.sbxe1__sbx_LastName__c = con1.LastName; ticket1y.sbxe1__sbx_Email__c = con1.Email; //make a ticket that matches con1 on a con2 registration; sbxe1__Ticket__c ticket1n = TestData.newTicket(reglist[3]); ticket1n.sbxe1__sbx_FirstName__c = con1.FirstName; ticket1n.sbxe1__sbx_LastName__c = con1.LastName; ticket1n.sbxe1__sbx_Email__c = con1.Email; //system.debug('ticket1n pre-insert: '+ticket1n); //make a ticket that matches con2 on a con2 registration; sbxe1__Ticket__c ticket2y = TestData.newTicket(reglist[3]); ticket2y.sbxe1__sbx_FirstName__c = con2.FirstName; ticket2y.sbxe1__sbx_LastName__c = con2.LastName; ticket2y.sbxe1__sbx_Email__c = con2.Email; //now insert the tickets to match the ticket holders to purchasers Test.startTest(); insert ticket1y; insert ticket1n; insert ticket2y; Test.stopTest(); //get the tickets back //system.debug('ticket1n opp: '+ticket1n.sbxe1__sbx_Opportunity__c); //system.debug('ticket1n lastname: '+ticket1n.sbxe1__sbx_LastName__c); //system.debug('query opp: '+reglist[3].Id); //system.debug('query lastname: '+con1.LastName); ticket1y = [Select Id, sbxe1__sbx_Opportunity__c, sbxe1__sbx_LastName__c, sbxe1__sbx_TicketHolderContact__c from sbxe1__Ticket__c where sbxe1__sbx_Opportunity__c = :reglist[0].Id and sbxe1__sbx_LastName__c = :con1.LastName]; ticket1n = [Select Id, sbxe1__sbx_Opportunity__c, sbxe1__sbx_LastName__c, sbxe1__sbx_TicketHolderContact__c from sbxe1__Ticket__c where sbxe1__sbx_Opportunity__c = :reglist[3].Id and sbxe1__sbx_LastName__c = :con1.LastName]; ticket2y = [Select Id, sbxe1__sbx_Opportunity__c, sbxe1__sbx_LastName__c, sbxe1__sbx_TicketHolderContact__c from sbxe1__Ticket__c where sbxe1__sbx_Opportunity__c = :reglist[3].Id and sbxe1__sbx_LastName__c = :con2.LastName]; //show that the ticket holder for ticket1y is contact 1, ticket1n has no ticket holder, and contact 2 is the holder for ticket2y system.assertequals(con1.Id,ticket1y.sbxe1__sbx_TicketHolderContact__c); system.assertequals(null,ticket1n.sbxe1__sbx_TicketHolderContact__c); system.assertequals(con2.Id,ticket2y.sbxe1__sbx_TicketHolderContact__c); } /** FIRST LAST TRIGGER TESTS **/ static private testmethod void testFirstLastInsert() { system.debug('begin firstlast insert test'); //first, create two contacts and registrations for them to 3 different events Contact con1 = TestData.newContact(); Contact con2 = TestData.newContact(); insert con1; insert con2; Opportunity[] opplist = setupContactRegistrations(con1, con2); //create tickets for both contacts to all three events (for all, attended =true) sbxe1__Ticket__c tick11 = TestData.newTicket(opplist[0], true); tick11.sbxe1__sbx_TicketHolderContact__c = con1.Id; sbxe1__Ticket__c tick21 = TestData.newTicket(opplist[1], true); tick21.sbxe1__sbx_TicketHolderContact__c = con1.Id; sbxe1__Ticket__c tick31 = TestData.newTicket(opplist[2], true); tick31.sbxe1__sbx_TicketHolderContact__c = con1.Id; sbxe1__Ticket__c tick12 = TestData.newTicket(opplist[3], true); tick12.sbxe1__sbx_TicketHolderContact__c = con2.Id; sbxe1__Ticket__c tick22 = TestData.newTicket(opplist[4], true); tick22.sbxe1__sbx_TicketHolderContact__c = con2.Id; sbxe1__Ticket__c tick32 = TestData.newTicket(opplist[5], true); tick32.sbxe1__sbx_TicketHolderContact__c = con2.Id; sbxe1__Ticket__c[] ticketlist = new sbxe1__Ticket__c[]{tick11, tick21, tick31, tick12, tick22, tick32}; //system.debug('ticketlist before insert: '+ticketlist); Test.starttest(); insert ticketlist; Test.stoptest(); con1 = [Select Id, FirstEvent__c, LastEvent__c from Contact where Id=:con1.Id]; con2 = [Select Id, FirstEvent__c, LastEvent__c from Contact where Id=:con2.Id]; system.assertequals(opplist[2].CampaignId, con1.FirstEvent__c); system.assertequals(opplist[0].CampaignId, con2.LastEvent__c); map<Id, Contact> cmap = new map<Id, Contact>{con1.Id => con1, con2.Id => con2}; //used to get around async testing issues } static private testmethod void testFirstLastUpdate() { system.debug('begin firstlast update test'); //first, create two contacts and registrations for them to 3 different events Contact con1 = TestData.newContact(); Contact con2 = TestData.newContact(); insert con1; insert con2; Opportunity[] opplist = setupContactRegistrations(con1, con2); //create tickets for both contacts to all three events (for all, attended =true) sbxe1__Ticket__c tick11 = TestData.newTicket(opplist[0], true); tick11.sbxe1__sbx_TicketHolderContact__c = con1.Id; sbxe1__Ticket__c tick21 = TestData.newTicket(opplist[1], true); tick21.sbxe1__sbx_TicketHolderContact__c = con1.Id; sbxe1__Ticket__c tick31 = TestData.newTicket(opplist[2], true); tick31.sbxe1__sbx_TicketHolderContact__c = con1.Id; sbxe1__Ticket__c tick12 = TestData.newTicket(opplist[3], true); tick12.sbxe1__sbx_TicketHolderContact__c = con2.Id; sbxe1__Ticket__c tick22 = TestData.newTicket(opplist[4], true); tick22.sbxe1__sbx_TicketHolderContact__c = con2.Id; sbxe1__Ticket__c tick32 = TestData.newTicket(opplist[5], true); tick32.sbxe1__sbx_TicketHolderContact__c = con2.Id; sbxe1__Ticket__c[] ticketlist = new sbxe1__Ticket__c[]{tick11, tick21, tick31, tick12, tick22, tick32}; insert ticketlist; //set contact first and last event to make sure they are as they should be on insert (tested in another test method) con1.FirstEvent__c = opplist[2].CampaignId; con1.LastEvent__c = opplist[0].CampaignId; con2.FirstEvent__c = opplist[2].CampaignId; con2.LastEvent__c = opplist[0].CampaignId; update con1; update con2; // change so con2 never attended anything tick12.sbxe1__sbx_Attended__c = false; tick22.sbxe1__sbx_Attended__c = false; tick32.sbxe1__sbx_Attended__c = false; //system.debug('ticket list before update: '+ticketlist); Test.startTest(); update ticketlist; Test.stopTest(); con2 = [Select Id, FirstEvent__c, LastEvent__c from Contact where Id=:con2.Id]; system.assertequals(null, con2.FirstEvent__c); system.assertequals(null, con2.LastEvent__c); } static private testmethod void testFirstLastDelete() { system.debug('begin firstlast delete test'); //first, create two contacts and registrations for them to 3 different events Contact con1 = TestData.newContact(); Contact con2 = TestData.newContact(); insert con1; insert con2; Opportunity[] opplist = setupContactRegistrations(con1, con2); //create tickets for both contacts to all three events (for all, attended =true) sbxe1__Ticket__c tick11 = TestData.newTicket(opplist[0], true); tick11.sbxe1__sbx_TicketHolderContact__c = con1.Id; sbxe1__Ticket__c tick21 = TestData.newTicket(opplist[1], true); tick21.sbxe1__sbx_TicketHolderContact__c = con1.Id; sbxe1__Ticket__c tick31 = TestData.newTicket(opplist[2], true); tick31.sbxe1__sbx_TicketHolderContact__c = con1.Id; sbxe1__Ticket__c tick12 = TestData.newTicket(opplist[3], true); tick12.sbxe1__sbx_TicketHolderContact__c = con2.Id; sbxe1__Ticket__c tick22 = TestData.newTicket(opplist[4], true); tick22.sbxe1__sbx_TicketHolderContact__c = con2.Id; sbxe1__Ticket__c tick32 = TestData.newTicket(opplist[5], true); tick32.sbxe1__sbx_TicketHolderContact__c = con2.Id; sbxe1__Ticket__c[] ticketlist = new sbxe1__Ticket__c[]{tick11, tick21, tick31, tick12, tick22, tick32}; insert ticketlist; //set contact first and last event to make sure they are as they should be on insert (tested in another test method) con1.FirstEvent__c = opplist[2].CampaignId; con1.LastEvent__c = opplist[0].CampaignId; con2.FirstEvent__c = opplist[2].CampaignId; con2.LastEvent__c = opplist[0].CampaignId; update con1; update con2; //delete ticket21 (con1 ticket to event 2), and confirm that this does not change first or last events Test.startTest(); delete tick21; Test.stopTest(); con1 = [Select Id, FirstEvent__c, LastEvent__c from Contact where Id=:con1.Id]; system.assertequals(opplist[2].CampaignId, con1.FirstEvent__c); system.assertequals(opplist[0].CampaignId, con1.LastEvent__c); } }
-
- Kenny Oseni
- April 26, 2017
- Like
- 0
HELP PLEASE: System.LimitException: npsp:Too many SOQL queries: 101
I know similar questions have been asked in this forum but the answers provided is not peculair to my case. I am trying to deploy changes from sandbox to production but a specific Apex Test Class is failing (all 5 test methods failed due to System.LimitException: npsp:Too many SOQL queries: 101). I have the screenshot of the errors as well as the actual Apex Test Class below. I am an Admin and just learning to code so its difficult for me to resolve this on my own.
I would really appreciate if I can get this resolved soon. Thanks![Validation Errors](/forums/servlet/rtaImage?eid=9060G000000UTvM&feoid=Body&refid=0EM0G000000MJUw)
Here is the Apex Test Class
I would really appreciate if I can get this resolved soon. Thanks
Here is the Apex Test Class
/* This test class covers the following Apex classes, methods, and triggers TicketAFTER (trigger) TicketBEFORE (trigger) ContactCalculations.updateFirstLastfromTrigger SoapboxTranslation_Utilities.ticketLevelplusHolderFromTrigger */ @isTest public class Test_Tickets { /** SETUP METHODS **/ static List<Opportunity> setupContactRegistrations(Contact con1, Contact con2) { TestData.newCampaignSetting('Event'); TestData.newOppSettings(); //create 3 events Campaign evt1 = TestData.newEvent(datetime.now()); Campaign evt2 = TestData.newEvent(datetime.now().adddays(-1)); Campaign evt3 = TestData.newEvent(datetime.now().adddays(-3)); insert evt1; insert evt2; insert evt3; //create a regsitration to each event for each contact Opportunity reg11 = TestData.newRegistration(con1, evt1); Opportunity reg21 = TestData.newRegistration(con1, evt2); Opportunity reg31 = TestData.newRegistration(con1, evt3); Opportunity reg12 = TestData.newRegistration(con2, evt1); Opportunity reg22 = TestData.newRegistration(con2, evt2); Opportunity reg32 = TestData.newRegistration(con2, evt3); insert reg11; insert reg21; insert reg31; insert reg12; insert reg22; insert reg32; Opportunity[] opplist = new Opportunity[]{reg11,reg21,reg31,reg12,reg22,reg32}; return opplist; } /** TICKET TRANSLATION TESTS **/ static private testmethod void testTicketLevelMapping() { system.debug('begin ticketlevelmapping test'); //first, create two contacts and registrations for them to 3 different events Contact con1 = TestData.newContact(); Contact con2 = TestData.newContact(); insert con1; insert con2; Opportunity[] reglist = setupContactRegistrations(con1, con2); //then get the 3 events and member levels fields Campaign evt1 = [Select Id, MemberLevels__c, NonmemberLevels__c, StudentLevels__c from Campaign where Id = :reglist[0].CampaignId]; Campaign evt2 = [Select Id, MemberLevels__c, NonmemberLevels__c, StudentLevels__c from Campaign where Id = :reglist[1].CampaignId]; Campaign evt3 = [Select Id, MemberLevels__c, NonmemberLevels__c, StudentLevels__c from Campaign where Id = :reglist[2].CampaignId]; //for event 1, Education Program and Student are student levels, Member and Guest Pass are member levels and Admin Comp & nonmember are nonmember levels evt1.MemberLevels__c = 'Member;Guest Pass'; evt1.NonmemberLevels__c = 'Admin Comp;Nonmember'; evt1.StudentLevels__c = 'Education Program;Student'; //for event 2, Member and Education Program are the member levels, Guest Pass & Nonmember are the nonmember levels, and Student is the only student level evt2.MemberLevels__c = 'Member;Education Program'; evt2.NonmemberLevels__c = 'Nonmember;Guest Pass'; evt2.StudentLevels__c = 'Student'; //event 3 has no levels designated update evt1; update evt2; //for each event make 1 member, 1 nonmember, 1 student, 1 education program, 1 guest pass, 1 admin comp ticket String[] typelist = new String[]{'Admin Comp','Education Program','Guest Pass','Member','Nonmember','Student'}; sbxe1__Ticket__c[] tickets1 = new sbxe1__Ticket__c[]{}; sbxe1__Ticket__c[] tickets2 = new sbxe1__Ticket__c[]{}; sbxe1__Ticket__c[] tickets3 = new sbxe1__Ticket__c[]{}; for (String tickettype : typelist) { tickets1.add(TestData.newTicket(reglist[0],tickettype)); } for (String tickettype : typelist) { tickets2.add(TestData.newTicket(reglist[1],tickettype)); } for (String tickettype : typelist) { tickets3.add(TestData.newTicket(reglist[2],tickettype)); } //now insert all of these tickets Test.startTest(); insert tickets1; insert tickets2; insert tickets3; Test.stopTest(); //gather up the ticket groups again tickets1 = [Select Id, sbxe1__sbx_Campaign__c, sbxe1__sbx_TicketType__c, Ticket_TypeList__c from sbxe1__Ticket__c where sbxe1__sbx_Campaign__c = :evt1.Id order by sbxe1__sbx_TicketType__c ASC]; tickets2 = [Select Id, sbxe1__sbx_Campaign__c, sbxe1__sbx_TicketType__c, Ticket_TypeList__c from sbxe1__Ticket__c where sbxe1__sbx_Campaign__c = :evt2.Id order by sbxe1__sbx_TicketType__c ASC]; tickets3 = [Select Id, sbxe1__sbx_Campaign__c, sbxe1__sbx_TicketType__c, Ticket_TypeList__c from sbxe1__Ticket__c where sbxe1__sbx_Campaign__c = :evt3.Id order by sbxe1__sbx_TicketType__c ASC]; //first show that the education program ticket for evt3 is of type 'general' because evt3 has no levels designated system.assertequals('Education Program',tickets3[1].sbxe1__sbx_TicketType__c); system.assertequals('General',tickets3[1].Ticket_TypeList__c); //then, show that the education program ticket for evt1 is a student type, but it is a member type for evt2 system.assertEquals('Education Program', tickets1[1].sbxe1__sbx_TicketType__c, tickets2[1].sbxe1__sbx_TicketType__c); system.assertEquals('Student',tickets1[1].Ticket_TypeList__c); system.assertEquals('Member',tickets2[1].Ticket_TypeList__c); } static private testmethod void testTicketHolderMatching() { //edit the tickets before insert so that some match and some don't. insert and check system.debug('begin ticketholdermatching test'); //first, create two contacts and registrations for them to 3 different events Contact con1 = TestData.newContact(); Contact con2 = TestData.newContact(); con1.LastName='Last1'; con1.FirstName='First1'; con1.Email = 'con1@email.com'; con2.LastName='Last2'; con2.FirstName='First2'; con2.Email='con2@email.com'; insert con1; insert con2; Opportunity[] reglist = setupContactRegistrations(con1, con2); //make a ticket that matches con1 on a con1 registration sbxe1__Ticket__c ticket1y = TestData.newTicket(reglist[0]); ticket1y.sbxe1__sbx_FirstName__c = con1.FirstName; ticket1y.sbxe1__sbx_LastName__c = con1.LastName; ticket1y.sbxe1__sbx_Email__c = con1.Email; //make a ticket that matches con1 on a con2 registration; sbxe1__Ticket__c ticket1n = TestData.newTicket(reglist[3]); ticket1n.sbxe1__sbx_FirstName__c = con1.FirstName; ticket1n.sbxe1__sbx_LastName__c = con1.LastName; ticket1n.sbxe1__sbx_Email__c = con1.Email; //system.debug('ticket1n pre-insert: '+ticket1n); //make a ticket that matches con2 on a con2 registration; sbxe1__Ticket__c ticket2y = TestData.newTicket(reglist[3]); ticket2y.sbxe1__sbx_FirstName__c = con2.FirstName; ticket2y.sbxe1__sbx_LastName__c = con2.LastName; ticket2y.sbxe1__sbx_Email__c = con2.Email; //now insert the tickets to match the ticket holders to purchasers Test.startTest(); insert ticket1y; insert ticket1n; insert ticket2y; Test.stopTest(); //get the tickets back //system.debug('ticket1n opp: '+ticket1n.sbxe1__sbx_Opportunity__c); //system.debug('ticket1n lastname: '+ticket1n.sbxe1__sbx_LastName__c); //system.debug('query opp: '+reglist[3].Id); //system.debug('query lastname: '+con1.LastName); ticket1y = [Select Id, sbxe1__sbx_Opportunity__c, sbxe1__sbx_LastName__c, sbxe1__sbx_TicketHolderContact__c from sbxe1__Ticket__c where sbxe1__sbx_Opportunity__c = :reglist[0].Id and sbxe1__sbx_LastName__c = :con1.LastName]; ticket1n = [Select Id, sbxe1__sbx_Opportunity__c, sbxe1__sbx_LastName__c, sbxe1__sbx_TicketHolderContact__c from sbxe1__Ticket__c where sbxe1__sbx_Opportunity__c = :reglist[3].Id and sbxe1__sbx_LastName__c = :con1.LastName]; ticket2y = [Select Id, sbxe1__sbx_Opportunity__c, sbxe1__sbx_LastName__c, sbxe1__sbx_TicketHolderContact__c from sbxe1__Ticket__c where sbxe1__sbx_Opportunity__c = :reglist[3].Id and sbxe1__sbx_LastName__c = :con2.LastName]; //show that the ticket holder for ticket1y is contact 1, ticket1n has no ticket holder, and contact 2 is the holder for ticket2y system.assertequals(con1.Id,ticket1y.sbxe1__sbx_TicketHolderContact__c); system.assertequals(null,ticket1n.sbxe1__sbx_TicketHolderContact__c); system.assertequals(con2.Id,ticket2y.sbxe1__sbx_TicketHolderContact__c); } /** FIRST LAST TRIGGER TESTS **/ static private testmethod void testFirstLastInsert() { system.debug('begin firstlast insert test'); //first, create two contacts and registrations for them to 3 different events Contact con1 = TestData.newContact(); Contact con2 = TestData.newContact(); insert con1; insert con2; Opportunity[] opplist = setupContactRegistrations(con1, con2); //create tickets for both contacts to all three events (for all, attended =true) sbxe1__Ticket__c tick11 = TestData.newTicket(opplist[0], true); tick11.sbxe1__sbx_TicketHolderContact__c = con1.Id; sbxe1__Ticket__c tick21 = TestData.newTicket(opplist[1], true); tick21.sbxe1__sbx_TicketHolderContact__c = con1.Id; sbxe1__Ticket__c tick31 = TestData.newTicket(opplist[2], true); tick31.sbxe1__sbx_TicketHolderContact__c = con1.Id; sbxe1__Ticket__c tick12 = TestData.newTicket(opplist[3], true); tick12.sbxe1__sbx_TicketHolderContact__c = con2.Id; sbxe1__Ticket__c tick22 = TestData.newTicket(opplist[4], true); tick22.sbxe1__sbx_TicketHolderContact__c = con2.Id; sbxe1__Ticket__c tick32 = TestData.newTicket(opplist[5], true); tick32.sbxe1__sbx_TicketHolderContact__c = con2.Id; sbxe1__Ticket__c[] ticketlist = new sbxe1__Ticket__c[]{tick11, tick21, tick31, tick12, tick22, tick32}; //system.debug('ticketlist before insert: '+ticketlist); Test.starttest(); insert ticketlist; Test.stoptest(); con1 = [Select Id, FirstEvent__c, LastEvent__c from Contact where Id=:con1.Id]; con2 = [Select Id, FirstEvent__c, LastEvent__c from Contact where Id=:con2.Id]; system.assertequals(opplist[2].CampaignId, con1.FirstEvent__c); system.assertequals(opplist[0].CampaignId, con2.LastEvent__c); map<Id, Contact> cmap = new map<Id, Contact>{con1.Id => con1, con2.Id => con2}; //used to get around async testing issues } static private testmethod void testFirstLastUpdate() { system.debug('begin firstlast update test'); //first, create two contacts and registrations for them to 3 different events Contact con1 = TestData.newContact(); Contact con2 = TestData.newContact(); insert con1; insert con2; Opportunity[] opplist = setupContactRegistrations(con1, con2); //create tickets for both contacts to all three events (for all, attended =true) sbxe1__Ticket__c tick11 = TestData.newTicket(opplist[0], true); tick11.sbxe1__sbx_TicketHolderContact__c = con1.Id; sbxe1__Ticket__c tick21 = TestData.newTicket(opplist[1], true); tick21.sbxe1__sbx_TicketHolderContact__c = con1.Id; sbxe1__Ticket__c tick31 = TestData.newTicket(opplist[2], true); tick31.sbxe1__sbx_TicketHolderContact__c = con1.Id; sbxe1__Ticket__c tick12 = TestData.newTicket(opplist[3], true); tick12.sbxe1__sbx_TicketHolderContact__c = con2.Id; sbxe1__Ticket__c tick22 = TestData.newTicket(opplist[4], true); tick22.sbxe1__sbx_TicketHolderContact__c = con2.Id; sbxe1__Ticket__c tick32 = TestData.newTicket(opplist[5], true); tick32.sbxe1__sbx_TicketHolderContact__c = con2.Id; sbxe1__Ticket__c[] ticketlist = new sbxe1__Ticket__c[]{tick11, tick21, tick31, tick12, tick22, tick32}; insert ticketlist; //set contact first and last event to make sure they are as they should be on insert (tested in another test method) con1.FirstEvent__c = opplist[2].CampaignId; con1.LastEvent__c = opplist[0].CampaignId; con2.FirstEvent__c = opplist[2].CampaignId; con2.LastEvent__c = opplist[0].CampaignId; update con1; update con2; // change so con2 never attended anything tick12.sbxe1__sbx_Attended__c = false; tick22.sbxe1__sbx_Attended__c = false; tick32.sbxe1__sbx_Attended__c = false; //system.debug('ticket list before update: '+ticketlist); Test.startTest(); update ticketlist; Test.stopTest(); con2 = [Select Id, FirstEvent__c, LastEvent__c from Contact where Id=:con2.Id]; system.assertequals(null, con2.FirstEvent__c); system.assertequals(null, con2.LastEvent__c); } static private testmethod void testFirstLastDelete() { system.debug('begin firstlast delete test'); //first, create two contacts and registrations for them to 3 different events Contact con1 = TestData.newContact(); Contact con2 = TestData.newContact(); insert con1; insert con2; Opportunity[] opplist = setupContactRegistrations(con1, con2); //create tickets for both contacts to all three events (for all, attended =true) sbxe1__Ticket__c tick11 = TestData.newTicket(opplist[0], true); tick11.sbxe1__sbx_TicketHolderContact__c = con1.Id; sbxe1__Ticket__c tick21 = TestData.newTicket(opplist[1], true); tick21.sbxe1__sbx_TicketHolderContact__c = con1.Id; sbxe1__Ticket__c tick31 = TestData.newTicket(opplist[2], true); tick31.sbxe1__sbx_TicketHolderContact__c = con1.Id; sbxe1__Ticket__c tick12 = TestData.newTicket(opplist[3], true); tick12.sbxe1__sbx_TicketHolderContact__c = con2.Id; sbxe1__Ticket__c tick22 = TestData.newTicket(opplist[4], true); tick22.sbxe1__sbx_TicketHolderContact__c = con2.Id; sbxe1__Ticket__c tick32 = TestData.newTicket(opplist[5], true); tick32.sbxe1__sbx_TicketHolderContact__c = con2.Id; sbxe1__Ticket__c[] ticketlist = new sbxe1__Ticket__c[]{tick11, tick21, tick31, tick12, tick22, tick32}; insert ticketlist; //set contact first and last event to make sure they are as they should be on insert (tested in another test method) con1.FirstEvent__c = opplist[2].CampaignId; con1.LastEvent__c = opplist[0].CampaignId; con2.FirstEvent__c = opplist[2].CampaignId; con2.LastEvent__c = opplist[0].CampaignId; update con1; update con2; //delete ticket21 (con1 ticket to event 2), and confirm that this does not change first or last events Test.startTest(); delete tick21; Test.stopTest(); con1 = [Select Id, FirstEvent__c, LastEvent__c from Contact where Id=:con1.Id]; system.assertequals(opplist[2].CampaignId, con1.FirstEvent__c); system.assertequals(opplist[0].CampaignId, con1.LastEvent__c); } }
- Kenny Oseni
- April 26, 2017
- Like
- 0