处理程序触发器的测试类未涵盖

发布于 2025-01-26 19:32:11 字数 5646 浏览 2 评论 0原文

我在内容版本上触发了一个触发器,但是我的处理程序课程没有涵盖,您能告诉我为什么吗? 请在下面找到无覆盖线的代码和屏幕截图 在我的测试类中,我创建了使用内容版本触发器的处理程序类所需的所有数据

trigger contentversiontrigger on ContentVersion (before insert, before update, before delete, after insert, after update, after delete, after undelete) {
    
    if(trigger.isAfter && trigger.isInsert) { 
         Bytel_ContentVersionTriggerHandler.AlignAttachementsWithOpportunity(Trigger.New);
    }
}

触发器处理程序

public  with sharing class Bytel_ContentVersionTriggerHandler  extends TriggerHandler {
    public static void AlignAttachementsWithOpportunity(List<ContentVersion> contentVersion) {
        
        Set<Id> contentDocumentIdSet = new Set<Id>();
        String Contractid;
        String Opportunityid;
        for (ContentVersion  cv : contentVersion) {
            
            
            if(cv.ContentDocumentId != null)
            {
                contentDocumentIdSet.add(cv.ContentDocumentId);
            }
            
            
        }
       list<ContentDocumentLink> cdl = [SELECT ContentDocumentId, LinkedEntityId FROM ContentDocumentLink WHERE ContentDocumentId IN:contentDocumentIdSet];
       id LinkedEntityId  =cdl[0].LinkedEntityId ;
        // List<Contract> contractList = [SELECT Id, name FROM Contract where Id =:cdl.LinkedEntityId];
        list<contract> Contracts = [SELECT Id, name FROM Contract where Id =:LinkedEntityId ];
        if (!Contracts.isEmpty())
            {
                 Contractid=Contracts[0].Id;
            }
     //  Id Contractid = [SELECT Id, name FROM Contract where Id ='8005t0000001UQFAA2' limit 1].Id;
        
        system.debug('test trigger' +Contractid) ;
        //   String Contractid= String.valueof(contractList[0].Id);
        system.debug('ContractId' +Contractid) ;
        list<Contract> contractssecond=[SELECT id ,vlocity_cmt__OpportunityId__c FROM Contract WHERE id =:Contractid limit 1];
       
         if (!contractssecond.isEmpty())
            {
                 Opportunityid=contractssecond[0].vlocity_cmt__OpportunityId__c;
            }
         system.debug('Opportunityid' +Opportunityid) ;
        
        Id conDoc =  cdl[0].ContentDocumentId;
        //if (Opportunityid!=Null &  conDoc!=Null) {
       if (Opportunityid!=Null ) {
        //create ContentDocumentLink  record 
        ContentDocumentLink conDocLink = New ContentDocumentLink();
        conDocLink.LinkedEntityId = Opportunityid; 
        conDocLink.ContentDocumentId = conDoc;  //ContentDocumentId Id from ContentVersion
        conDocLink.shareType = 'V';
        insert conDocLink;
            }
        
    }
    
    
}

的处理程序


@isTest
public class Bytel_ContentVersionTriggerHandlerTest {
    
    
    
    static testMethod void createattachememtns() {
        insert Bytel_TestDataFactory.createByPassSettings(false); // Custom setting bypass profile
        insert Bytel_TestDataFactory.createGlobalVariableSettings(); // Custom setting globalVaribale, parameter callout end-point
        insert Bytel_TestDataFactory.createOpportunityRaisonEchecSettings();
        insert Bytel_TestDataFactory.createOpportunityStatusSettings();
        
        Account acc = new Account(
            Name = 'Test Account',
            TypeIdentifiant__c = 'SIREN',
            SIREN__c = '123765982',
            Statut__c = 'Prospect'
        );
        insert acc;
        Opportunity opp = Bytel_TestDataFactory.createOpportunity(
            'FILL AUTO',
            'Etape10',
            acc.Id,
            null
        );
        opp.Tech_AccountIdToDelete__c = acc.id;
        opp.ScoringFinancier__c = 'Vert';
        opp.siren__c = '123765981';
        insert opp;
        Quote quote = new Quote(Name = 'devis1', OpportunityId = opp.Id);
        insert quote;
        Contract contract1 = new Contract(
            vlocity_cmt__QuoteId__c = quote.Id,
            vlocity_cmt__OpportunityId__c=opp.id,
            AccountId = acc.id
        );
        insert contract1;
        Contract contract2 = new Contract(
            vlocity_cmt__QuoteId__c = quote.Id,
            AccountId = acc.id,
            vlocity_cmt__OpportunityId__c=opp.id
        );
        insert contract2;
        Blob bodyBlob=Blob.valueOf('Unit Test ContentVersion Body to be insert in test class for testing the'); 
        ContentVersion contentVersion_1 = new ContentVersion(
            Title='SampleTitle', 
            PathOnClient ='SampleTitle.txt',
            Type_de_Fichier__c='RIB',
            VersionData = bodyBlob, 
            origin = 'H'
        );
        insert contentVersion_1;
        Contract contra = [SELECT Id
                           FROM Contract WHERE Id = :contract1.Id LIMIT 1];
        List<ContentVersion> contentVersion_2 = [SELECT Id, Title, ContentDocumentId 
                                           FROM ContentVersion WHERE Id = :contentVersion_1.Id  ];
        
       // ContentDocumentLink contentlink = new ContentDocumentLink();
       // contentlink.LinkedEntityId = contra.id;
       // contentlink.contentdocumentid = contentVersion_2.contentdocumentid;
       // contentlink.ShareType = 'V';
        
      //  insert contentlink;
        
        Bytel_ContentVersionTriggerHandler.AlignAttachementsWithOpportunity(contentVersion_2);
        
        
    }
    
}

“

I did a trigger on content version ,but my handler class is not covered ,can you please explain to me why ?
please find below the code and screenshots for non covered lines
in my test class ,i created all data needed for the handler class i call the method with content version input

Trigger:

trigger contentversiontrigger on ContentVersion (before insert, before update, before delete, after insert, after update, after delete, after undelete) {
    
    if(trigger.isAfter && trigger.isInsert) { 
         Bytel_ContentVersionTriggerHandler.AlignAttachementsWithOpportunity(Trigger.New);
    }
}

Trigger Handler

public  with sharing class Bytel_ContentVersionTriggerHandler  extends TriggerHandler {
    public static void AlignAttachementsWithOpportunity(List<ContentVersion> contentVersion) {
        
        Set<Id> contentDocumentIdSet = new Set<Id>();
        String Contractid;
        String Opportunityid;
        for (ContentVersion  cv : contentVersion) {
            
            
            if(cv.ContentDocumentId != null)
            {
                contentDocumentIdSet.add(cv.ContentDocumentId);
            }
            
            
        }
       list<ContentDocumentLink> cdl = [SELECT ContentDocumentId, LinkedEntityId FROM ContentDocumentLink WHERE ContentDocumentId IN:contentDocumentIdSet];
       id LinkedEntityId  =cdl[0].LinkedEntityId ;
        // List<Contract> contractList = [SELECT Id, name FROM Contract where Id =:cdl.LinkedEntityId];
        list<contract> Contracts = [SELECT Id, name FROM Contract where Id =:LinkedEntityId ];
        if (!Contracts.isEmpty())
            {
                 Contractid=Contracts[0].Id;
            }
     //  Id Contractid = [SELECT Id, name FROM Contract where Id ='8005t0000001UQFAA2' limit 1].Id;
        
        system.debug('test trigger' +Contractid) ;
        //   String Contractid= String.valueof(contractList[0].Id);
        system.debug('ContractId' +Contractid) ;
        list<Contract> contractssecond=[SELECT id ,vlocity_cmt__OpportunityId__c FROM Contract WHERE id =:Contractid limit 1];
       
         if (!contractssecond.isEmpty())
            {
                 Opportunityid=contractssecond[0].vlocity_cmt__OpportunityId__c;
            }
         system.debug('Opportunityid' +Opportunityid) ;
        
        Id conDoc =  cdl[0].ContentDocumentId;
        //if (Opportunityid!=Null &  conDoc!=Null) {
       if (Opportunityid!=Null ) {
        //create ContentDocumentLink  record 
        ContentDocumentLink conDocLink = New ContentDocumentLink();
        conDocLink.LinkedEntityId = Opportunityid; 
        conDocLink.ContentDocumentId = conDoc;  //ContentDocumentId Id from ContentVersion
        conDocLink.shareType = 'V';
        insert conDocLink;
            }
        
    }
    
    
}

Test class of handler


@isTest
public class Bytel_ContentVersionTriggerHandlerTest {
    
    
    
    static testMethod void createattachememtns() {
        insert Bytel_TestDataFactory.createByPassSettings(false); // Custom setting bypass profile
        insert Bytel_TestDataFactory.createGlobalVariableSettings(); // Custom setting globalVaribale, parameter callout end-point
        insert Bytel_TestDataFactory.createOpportunityRaisonEchecSettings();
        insert Bytel_TestDataFactory.createOpportunityStatusSettings();
        
        Account acc = new Account(
            Name = 'Test Account',
            TypeIdentifiant__c = 'SIREN',
            SIREN__c = '123765982',
            Statut__c = 'Prospect'
        );
        insert acc;
        Opportunity opp = Bytel_TestDataFactory.createOpportunity(
            'FILL AUTO',
            'Etape10',
            acc.Id,
            null
        );
        opp.Tech_AccountIdToDelete__c = acc.id;
        opp.ScoringFinancier__c = 'Vert';
        opp.siren__c = '123765981';
        insert opp;
        Quote quote = new Quote(Name = 'devis1', OpportunityId = opp.Id);
        insert quote;
        Contract contract1 = new Contract(
            vlocity_cmt__QuoteId__c = quote.Id,
            vlocity_cmt__OpportunityId__c=opp.id,
            AccountId = acc.id
        );
        insert contract1;
        Contract contract2 = new Contract(
            vlocity_cmt__QuoteId__c = quote.Id,
            AccountId = acc.id,
            vlocity_cmt__OpportunityId__c=opp.id
        );
        insert contract2;
        Blob bodyBlob=Blob.valueOf('Unit Test ContentVersion Body to be insert in test class for testing the'); 
        ContentVersion contentVersion_1 = new ContentVersion(
            Title='SampleTitle', 
            PathOnClient ='SampleTitle.txt',
            Type_de_Fichier__c='RIB',
            VersionData = bodyBlob, 
            origin = 'H'
        );
        insert contentVersion_1;
        Contract contra = [SELECT Id
                           FROM Contract WHERE Id = :contract1.Id LIMIT 1];
        List<ContentVersion> contentVersion_2 = [SELECT Id, Title, ContentDocumentId 
                                           FROM ContentVersion WHERE Id = :contentVersion_1.Id  ];
        
       // ContentDocumentLink contentlink = new ContentDocumentLink();
       // contentlink.LinkedEntityId = contra.id;
       // contentlink.contentdocumentid = contentVersion_2.contentdocumentid;
       // contentlink.ShareType = 'V';
        
      //  insert contentlink;
        
        Bytel_ContentVersionTriggerHandler.AlignAttachementsWithOpportunity(contentVersion_2);
        
        
    }
    
}

enter image description here

enter image description here

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

ペ泪落弦音 2025-02-02 19:32:11

首次看后,我想您忘了将@istest添加到测试方法中。

@isTest
static testMethod void createattachememtns() {

   //Your Code

}

After a first look, I guess you forgot to add @isTest to your test method.

@isTest
static testMethod void createattachememtns() {

   //Your Code

}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文