• Nikhil Shringarpure 32
  • NEWBIE
  • 25 Points
  • Member since 2017

  • Chatter
    Feed
  • 1
    Best Answers
  • 0
    Likes Received
  • 0
    Likes Given
  • 0
    Questions
  • 4
    Replies
How to make convert lead button on contact. Please help me out on this.
How to make convert lead button on contact. Please help me out on this.
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. ThanksValidation Errors

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);      
    }           

}