function readOnly(count){ }
Starting November 20, the site will be set to read-only. On December 4, 2023,
forum discussions will move to the Trailblazer Community.
+ Start a Discussion
IndianajonesIndianajones 

help me please with test class

I create apex class and i need test class for this code:
global with sharing class controllerTest {
    public Opportunity opportunity {get; set;}
    public List<OpportunityLineItem> oppLineItem {get; set;}
    public list<OpportunityContactRole> contact {get; set;}
    @AuraEnabled
    public static void savePDF(id recordId){
        Opportunity opps = [SELECT Invoice_Number__c FROM Opportunity WHERE Id = :recordId];
        List<ContentVersion> contentVersionss = [SELECT ContentDocumentId FROM ContentVersion WHERE Title =: opps.Invoice_Number__c];
        if(!contentVersionss.isEmpty()){
            Id contentDocumentId = contentVersionss.get(0).ContentDocumentId;
            Opportunity opp = [SELECT Invoice_Number__c FROM Opportunity WHERE Id = :recordId];
            PageReference pdfPage = new PageReference('/apex/newPageVf');
            pdfPage.getParameters().put('Id', recordId);
            Blob pdfBlob = pdfPage.getContentAsPDF();
            String fileName = opp.Invoice_Number__c;
            List<ContentVersion> contentVersions = [SELECT ContentDocumentId FROM ContentVersion WHERE Title =: fileName];
            ContentVersion cv = new ContentVersion();
            cv.Title = fileName;
            cv.PathOnClient = fileName + '.pdf';
            cv.VersionData = pdfBlob;
            cv.contentDocumentId = contentDocumentId;
            INSERT cv;
        } else {
            Opportunity opp = [SELECT Invoice_Number__c FROM Opportunity WHERE Id = :recordId];
            PageReference pdfPage = new PageReference('/apex/newPageVf');
            pdfPage.getParameters().put('Id', recordId);
            Blob pdfBlob = pdfPage.getContentAsPDF();
            String fileName = opp.Invoice_Number__c;
            ContentVersion cv = new ContentVersion();
            cv.Title = fileName;
            cv.PathOnClient = fileName + '.pdf';
            cv.VersionData = pdfBlob;
            INSERT cv;
            Id contentDocumentId = [SELECT ContentDocumentId FROM ContentVersion WHERE Id = :cv.Id].ContentDocumentId;
            Id opportunId = [SELECT Id FROM Opportunity WHERE id =: recordId].Id;
            ContentDocumentLink cdl = new ContentDocumentLink();
            cdl.ContentDocumentId = contentDocumentId;
            cdl.LinkedEntityId = opportunId;
            cdl.ShareType = 'V';
            INSERT cdl;  
        }
    }
    // Берём данные для VisualForce документа.
    public controllerTest(ApexPages.StandardController stdController){
        Id oppId = apexpages.currentpage().getparameters().get('id');
        this.opportunity = [SELECT Id, Name, OwnerId, AccountId, Amount, Invoice_Number__c FROM Opportunity WHERE Id =: oppId];
        this.oppLineItem = [SELECT OpportunityId, Name, Quantity, UnitPrice, TotalPrice FROM OpportunityLineItem WHERE OpportunityId =: oppId];
        this.contact = [SELECT id, ContactId, Contact.Name, Contact.Phone, Contact.Email, IsPrimary, Contact.Account.Name FROM OpportunityContactRole WHERE OpportunityId =: oppId AND IsPrimary = true];    
    }      
}

i new in salesforce and i create test class, but code coverage 0%. i study and i dont know how i can do 75+ code coverage.
 
@isTest
public class controllerTestTest{
    @isTest 
    public Static Void UnitTest(){
          Account Acc =new Account();
        Acc.Name = 'Account test';
        Insert Acc;
        
         Opportunity opp = new Opportunity();
        opp.Name = 'test opp';
        opp.Stagename = 'Closed Won';
        opp.CloseDate = System.today();
        opp.AccountId = Acc.Id;
        insert Opp;
        
        ContentVersion contentVersionInsert = new ContentVersion(
            Title = 'Test',
            PathOnClient = 'Test.jpg',
            VersionData = Blob.valueOf('Test Content Data'),
            IsMajorVersion = true
        );
        
        insert contentVersionInsert;
        ContentVersion contentVersionSelect = [SELECT Id, Title, ContentDocumentId FROM ContentVersion WHERE Id = :contentVersionInsert.Id LIMIT 1];
        List<ContentDocument> documents = [SELECT Id, Title, LatestPublishedVersionId FROM ContentDocument];
        System.assertEquals(documents.size(), 1);
        
        
    }
}
help me please.
thanks.
 
Best Answer chosen by Indianajones
Sai PraveenSai Praveen (Salesforce Developers) 
Hi,

Can you try the below code. I have made small changes in the Apex controller as some methods wont support in test class as highlited. It is covering around 79% of code. 
 
global with sharing class controllerTest1 {
    public Opportunity opportunity {get; set;}
    public List<OpportunityLineItem> oppLineItem {get; set;}
    public list<OpportunityContactRole> contact {get; set;}
    @AuraEnabled
    public static void savePDF(id recordId){
        Opportunity opps = [SELECT Invoice_Number__c FROM Opportunity WHERE Id = :recordId];
        List<ContentVersion> contentVersionss = [SELECT ContentDocumentId FROM ContentVersion WHERE Title =: opps.Invoice_Number__c];
        if(!contentVersionss.isEmpty()){
            Id contentDocumentId = contentVersionss.get(0).ContentDocumentId;
            Opportunity opp = [SELECT Invoice_Number__c FROM Opportunity WHERE Id = :recordId];
            PageReference pdfPage = new PageReference('/apex/newPageVf');
            pdfPage.getParameters().put('Id', recordId);
             Blob pdfBlob;
            if(Test.isRunningTest()) { 
   pdfBlob = blob.valueOf('Unit.Test');
} else {
   pdfBlob = pdfPage.getContentAsPDF();
}
            String fileName = opp.Invoice_Number__c;
            List<ContentVersion> contentVersions = [SELECT ContentDocumentId FROM ContentVersion WHERE Title =: fileName];
            ContentVersion cv = new ContentVersion();
            cv.Title = fileName;
            cv.PathOnClient = fileName + '.pdf';
            cv.VersionData = pdfBlob;
            cv.contentDocumentId = contentDocumentId;
            INSERT cv;
        } else {
            Opportunity opp = [SELECT Invoice_Number__c FROM Opportunity WHERE Id = :recordId];
            PageReference pdfPage = new PageReference('/apex/newPageVf');
            pdfPage.getParameters().put('Id', recordId);
            Blob pdfBlob;
            if(Test.isRunningTest()) { 
   pdfBlob = blob.valueOf('Unit.Test');
} else {
   pdfBlob = pdfPage.getContentAsPDF();
}
           // Blob pdfBlob = pdfPage.getContentAsPDF();
            
            String fileName = opp.Invoice_Number__c;
            ContentVersion cv = new ContentVersion();
            cv.Title = fileName;
            cv.PathOnClient = fileName + '.pdf';
            cv.VersionData = pdfBlob;
            INSERT cv;
            Id contentDocumentId = [SELECT ContentDocumentId FROM ContentVersion WHERE Id = :cv.Id].ContentDocumentId;
            Id opportunId = [SELECT Id FROM Opportunity WHERE id =: recordId].Id;
            ContentDocumentLink cdl = new ContentDocumentLink();
            cdl.ContentDocumentId = contentDocumentId;
            cdl.LinkedEntityId = opportunId;
            cdl.ShareType = 'V';
            INSERT cdl;  
        }
    }
    // Берём данные для VisualForce документа.
    public controllerTest1(ApexPages.StandardController stdController){
        Id oppId = apexpages.currentpage().getparameters().get('id');
        this.opportunity = [SELECT Id, Name, OwnerId, AccountId, Amount, Invoice_Number__c FROM Opportunity WHERE Id =: oppId];
        this.oppLineItem = [SELECT OpportunityId, Name, Quantity, UnitPrice, TotalPrice FROM OpportunityLineItem WHERE OpportunityId =: oppId];
        this.contact = [SELECT id, ContactId, Contact.Name, Contact.Phone, Contact.Email, IsPrimary, Contact.Account.Name FROM OpportunityContactRole WHERE OpportunityId =: oppId AND IsPrimary = true];    
    }      
}

Test Class:
 
@isTest
public class controllerTestTest{
    @isTest 
    public Static Void UnitTest(){
          Account Acc =new Account();
        Acc.Name = 'Account test';
        Insert Acc;
        
         Opportunity opp = new Opportunity();
        opp.Name = 'test opp';
        opp.Stagename = 'Closed Won';
        opp.CloseDate = System.today();
        opp.AccountId = Acc.Id;
        insert Opp;
        Opportunity opp1 = new Opportunity();
        opp1.Name = 'test opp';
        opp1.Stagename = 'Closed Won';
        opp1.CloseDate = System.today();
        opp1.AccountId = Acc.Id;
        opp1.Invoice_Number__c='sample1';
        insert opp1;
        
        ContentVersion contentVersionInsert = new ContentVersion(
            Title = 'Test',
            PathOnClient = 'Test.jpg',
            VersionData = Blob.valueOf('Test Content Data'),
            IsMajorVersion = true
        );
        
        insert contentVersionInsert;
        ContentVersion contentVersionInsert1 = new ContentVersion(
            Title = 'sample1',
            PathOnClient = 'Test.jpg',
            VersionData = Blob.valueOf('Test Content Data'),
            IsMajorVersion = true
        );
        
        insert contentVersionInsert1;
        ContentVersion contentVersionSelect = [SELECT Id, Title, ContentDocumentId FROM ContentVersion WHERE Id = :contentVersionInsert.Id LIMIT 1];
        List<ContentDocument> documents = [SELECT Id, Title, LatestPublishedVersionId FROM ContentDocument];
        System.assertEquals(documents.size(), 2);
        controllerTest1.savePDF(opp.id);
        controllerTest1.savePDF(opp1.id);
        
    }
}

If this solution helps, Please mark it as best answer.

Thanks,