Тестовый класс в вершине - PullRequest
0 голосов
/ 26 июня 2018

Итак, я новичок в Salesforce, и я закончил свое обучение, и сейчас я работаю над проектом. Но в моем проекте я наткнулся на тестовый класс, который я не нахожу способ написать его, поэтому я был бы признателен, если кто-нибудь может помочь мне найти способ написать это. Вот код:

    public class AP01_Opportunity 
{
    //Method to create a new service contract when opportunity = Gagné
    public static void CreateContract(List<Opportunity> listOpp, Map<Id, Opportunity> oldMap)
    {
        //Variable Declaration
        ServiceContract sc;
        List<ServiceContract> listSCToAdd = new List<ServiceContract>();
        List<ContractLineItem> listContractItems = new List<ContractLineItem>();
        List<Opportunity> listOppGagne = new list<Opportunity>();

        //Loop in list of opportunities
        for(Opportunity opp : listOpp)
        {
            if(opp.StageName == Label.ClotureGagne && !oldMap.get(opp.Id).isWon)
            {
                listOppGagne.add(opp);
            }
        }
        //check if list has opportunity becoming won
        if(listOppGagne.size()  > 0){

            Map<Id, Opportunity> mapOppGagne = new Map<Id, Opportunity> ([SELECT Id,
                                                                          Name,
                                                                          StageName,
                                                                          Pricebook2Id,
                                                                          Account.Name, 
                                                                          (SELECT Id,
                                                                           PricebookEntryId,
                                                                           PricebookEntry.Name, 
                                                                           Quantity, 
                                                                           UnitPrice 
                                                                           FROM OpportunityLineItems)
                                                                          FROM Opportunity
                                                                          WHERE Id in :listOppGagne]);

            for( Opportunity opp : listOppGagne )
            {
                //Create new service contract
                sc = new ServiceContract();
                sc.Name = opp.Name;
                sc.ApprovalStatus = Label.Activated;
                sc.OpportunityId__c = Id.valueOf(opp.Id);
                sc.Pricebook2Id = opp.Pricebook2Id;
                sc.StartDate = Date.today();
                listSCToAdd.add(sc);
            }
            if(listSCToAdd.size() > 0){
                insert listSCToAdd;
                Opportunity currentOpp;
                ContractLineItem cli;
                Id oppId;
                for(ServiceContract servcont : listSCToAdd)
                {
                    oppId = servcont.OpportunityId__c;
                    if(mapOppGagne.containsKey(oppId))
                    {
                        currentOpp = mapOppGagne.get(oppId);
                        //copy the oppLineItems per opportunity to the respective Service Contract
                        for(OpportunityLineItem items : currentOpp.OpportunityLineItems)
                        {
                            cli = new ContractLineItem();
                            cli.PricebookEntryId = items.PricebookEntryId;
                            cli.Quantity = items.Quantity;
                            cli.UnitPrice = items.UnitPrice;
                            cli.ServiceContractId = servcont.Id;
                            listContractItems.add(cli);
                        }
                    }
                }
                if(listContractItems.size() > 0)
                {
                    insert listContractItems; 
                }
            }


        }
    }
}

этот код является триггером, который создает новую запись контракта на обслуживание с отдельными позициями контракта, скопированными из отдельных позиций возможности, когда этап возможности меняется на "Cloturé Gagné", что означает "закрытая победа" на французском языке.

Заранее спасибо.

1 Ответ

0 голосов
/ 27 июня 2018

Чтобы написать простой тестовый класс, я бы порекомендовал вам использовать следующее руководство: https://developer.salesforce.com/docs/atlas.en-us.apexcode.meta/apexcode/apex_qs_test.htm

Идея проста: допустим, вы создали Opportunity в своем классе Test и сделали вставку или обновление в вашем случае - ваш класс триггера автоматически сработает и запустит код из вашего класса AP01_Opportunity. Вы можете положить немного

System.debug('some message');

чтобы проверить, работает ли ваша логика должным образом, а также какие кодовые блоки выполняются

...