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
David OvellaDavid Ovella 

Can anyone help me to test this apex class?

Hello, I'm trying to deploy an apex class to production but I can't because it gives me 72% of coverage code.
This is my apex class;
Does anyone know how to test this apex class? I really will appreciate any help

public with sharing class FacturaPDFController {

    private final Factura__c fct;
    public cFactura cfct{get; set;}
    public OT__c ots{get; set;}
    public xOT otts {get; set;}
    public Integer total{get; set;}
    public List<cOT> cOTList{get;set;}
    public List<cLdd> cLddList{get;set;}

    public FacturaPDFController(ApexPages.StandardController controller) {
        this.fct =  [Select Id, Pre_Factura__r.ST_Exentas__c, Pre_Factura__r.Descuento__c, Pre_Factura__r.ST_Gravadas_IVA10__c,                         Pre_Factura__r.Total_a_Pagar__c, Pre_Factura__r.IVA_10__c From Factura__c  Where Id = :controller.getId()];
        this.cfct = new cFactura(this.fct);
        total = Integer.valueOf( this.fct.Pre_Factura__r.Total_a_Pagar__c );



        //OT personalizado
        this.ots= [Select Cant_1__c,Cant_2__c,Cant_3__c,Cant_4__c,Cant_5__c, Texto_1_fact__c,Texto_2_fact__c,Texto_3_fact__c,
        Texto_4_fact__c,Texto_5_fact__c, Precio_Unit_1__c, Precio_Unit_2__c, Precio_Unit_3__c, Precio_Unit_4__c, Precio_Unit_5__c,
        Total_Ex_1__c, Total_Ex_2__c, Total_Ex_3__c, Total_Ex_4__c, Total_Ex_5__c,
        Total_Gra_1__c, Total_Gra_2__c, Total_Gra_3__c, Total_Gra_4__c, Total_Gra_5__c        
        from OT__c  where Pre_Factura__c = :this.fct.Pre_Factura__r.id];
        this.otts=new xOT(this.ots);
        
        
        
        //OT List
        this.cOTList = new List<cOT>();
        for(OT__c o : [Select Id, Codigo_2__c, Cantidad_2__c, Descripcion_2__c, Sub_Total__c, Exentas_2__c, Gravadas_IVA_10_2__c
        from OT__c  where Pre_Factura__c = :this.fct.Pre_Factura__r.id LIMIT 10]){
            cOTList.add(new cOT(o));
        }

        //LDD List
        this.cLddList = new List<cLdd>();
        for(Linea_de_detalle__c l : [Select Q__c, P_Unit_Linea__c, Total_Exentas__c, Total_Gravadas_IVA_10__c, Producto__r.Codigo__c,                   Producto__r.Descripcion__c from Linea_de_detalle__c Where OT__r.Pre_Factura__c = :this.fct.Pre_Factura__r.id LIMIT 10]){
            cLddList.add(new cLdd(l));
        }
    }



    public String getNumberToWords(){
        return NumberToSpanishWords.toSpanishWords( total );
    }


    public class cFactura{
        public Factura__c fct{get; set;}
        public String ST_Exentas{get;set;}
        public String ST_Gravadas_IVA10{get;set;}
        public String Total_a_Pagar{get;set;}
        public String IVA_10{get;set;}
        public String Descuento{get;set;}

        public cFactura(Factura__c f){
            this.fct = f;
            this.ST_Exentas = NumberToSpanishWords.convertToEU(f.Pre_Factura__r.ST_Exentas__c);
            this.ST_Gravadas_IVA10 = NumberToSpanishWords.convertToEU(f.Pre_Factura__r.ST_Gravadas_IVA10__c);
            this.Total_a_Pagar = NumberToSpanishWords.convertToEU(f.Pre_Factura__r.Total_a_Pagar__c);
            this.IVA_10 = NumberToSpanishWords.convertToEU(f.Pre_Factura__r.IVA_10__c);
            this.Descuento = NumberToSpanishWords.convertToEU(f.Pre_Factura__r.Descuento__c);
        }
    }
    
    
    public class xOT{ //valores que se usa para la OT personalizada
        public OT__c ots{get; set;}
        public string cantper1 {get; set;}
        public string cantper2 {get; set;}
        public string cantper3 {get; set;}
        public string cantper4 {get; set;}
        public string cantper5 {get; set;}
        public string precio1 {get; set;}
        public string precio2 {get; set;}
        public string precio3 {get; set;}
        public string precio4 {get; set;}
        public string precio5 {get; set;}
        public string totalexenta1 {get; set;}
        public string totalexenta2 {get; set;}
        public string totalexenta3 {get; set;}
        public string totalexenta4 {get; set;}
        public string totalexenta5 {get; set;}
        public string totalgravada1 {get; set;}
        public string totalgravada2 {get; set;}
        public string totalgravada3 {get; set;}
        public string totalgravada4 {get; set;}
        public string totalgravada5 {get; set;}
        
        
        public xOT(OT__c ot2) {
            this.ots=ot2;
            this.cantper1= NumberToSpanishWords.convertToEU(ot2.Cant_1__c);            
            this.cantper2= NumberToSpanishWords.convertToEU(ot2.Cant_2__c);
            this.cantper3= NumberToSpanishWords.convertToEU(ot2.Cant_3__c);
            this.cantper4= NumberToSpanishWords.convertToEU(ot2.Cant_4__c);
            this.cantper5= NumberToSpanishWords.convertToEU(ot2.Cant_5__c);
            this.precio1=NumberToSpanishWords.convertToEU(ot2.Precio_Unit_1__c);
            this.precio2=NumberToSpanishWords.convertToEU(ot2.Precio_Unit_2__c);
            this.precio3=NumberToSpanishWords.convertToEU(ot2.Precio_Unit_3__c);
            this.precio4=NumberToSpanishWords.convertToEU(ot2.Precio_Unit_4__c);
            this.precio5=NumberToSpanishWords.convertToEU(ot2.Precio_Unit_5__c);
            this.totalexenta1=NumberToSpanishWords.convertToEU(ot2.Total_Ex_1__c);
            this.totalexenta2=NumberToSpanishWords.convertToEU(ot2.Total_Ex_2__c);
            this.totalexenta3=NumberToSpanishWords.convertToEU(ot2.Total_Ex_3__c);
            this.totalexenta4=NumberToSpanishWords.convertToEU(ot2.Total_Ex_4__c);
            this.totalexenta5=NumberToSpanishWords.convertToEU(ot2.Total_Ex_5__c);
            this.totalgravada1=NumberToSpanishWords.convertToEU(ot2.Total_Gra_1__c);
            this.totalgravada2=NumberToSpanishWords.convertToEU(ot2.Total_Gra_2__c);
            this.totalgravada3=NumberToSpanishWords.convertToEU(ot2.Total_Gra_3__c);
            this.totalgravada4=NumberToSpanishWords.convertToEU(ot2.Total_Gra_4__c);
            this.totalgravada5=NumberToSpanishWords.convertToEU(ot2.Total_Gra_5__c);
     }
     
    }       
            
    public class cOT{ //valores que se usa para cuando la Pre_Factura tiene mas de una OT
        public OT__c OT{get; set;}
        public String Sub_Total{get;set;}
        public String Exentas_2{get;set;}
        public String Gravadas_IVA_10_2{get;set;}

        public cOT(OT__c o){
            this.OT = o;
            this.Sub_Total = NumberToSpanishWords.convertToEU(o.Sub_Total__c);
            this.Exentas_2 = NumberToSpanishWords.convertToEU(o.Exentas_2__c);
            this.Gravadas_IVA_10_2 = NumberToSpanishWords.convertToEU(o.Gravadas_IVA_10_2__c);
            
        } 
    }

    public class cLdd{
        public Linea_de_detalle__c LDD{get; set;}
        public String P_Unit_Linea{get;set;}
        public String Total_Exentas{get;set;}
        public String Total_Gravadas_IVA_10{get;set;}

        public cLdd(Linea_de_detalle__c l){
            this.LDD = l;
            this.P_Unit_Linea = NumberToSpanishWords.convertToEU(l.P_Unit_Linea__c);
            this.Total_Exentas = NumberToSpanishWords.convertToEU(l.Total_Exentas__c);
            this.Total_Gravadas_IVA_10 = NumberToSpanishWords.convertToEU(l.Total_Gravadas_IVA_10__c);
        }
    }
}
Vinnie BVinnie B
Have you tried the Developer Console?  That should be able to show you line by line which of the code in your class is being tested and which is not.  Typically, if you're at 70% or so, there will be a large swath of code that is not getting tested.  You need to make sure that your test code is running everything.  You'll probably need to create one of each of every one of the objects listed in your code.