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
anillllanillll 

how to coverage for this method in test class

public with sharing class AttachController {
 2	  
 3	  //private ApexPages.StandardController controller { get; set; }
 4	  public List<Deal_License__c> dp{get;set;}
 5	  
 6	     public Deal__c D{get;set;}
 7	      public AttachController(ApexPages.StandardController controller) {
 8	      try
 9	      {
 10	       D = [Select Name,Id,Account__c,Account__r.Name,Rate__c,License_Value__c,Account__r.BillingStreet,Account__r.BillingCity,Account__r.Billingstate,Account__r.BillingPostalcode,Account__r.BillingCountry
 11	                   from Deal__c where id=:controller.getRecord().id];
 12	      system.debug('TestDeal'+D);
 13	      Account acc=[Select Id,BillingStreet,BillingCity,Billingstate,BillingPostalcode,BillingCountry from Account where id=:D.Account__c];
 14	      system.debug('Account%%%%%%%%%%%%%%'+acc);
 15	      dp=[select id,Name,Deal__c,Months__c,List_Price__c,Unit_Price__c,Quantity__c,Total_Value__c from Deal_License__c where Deal__c=:D.Id];
 16	      System.debug('DEALPRDODUCT&&&&&&&&&&'+dp);
 17	      }
 18	      catch(Exception e)
 19	      {
 20	      system.debug('Exception'+e);
 21	      }
 22	      }
 23	      
 24	      public void attach() {
 25	          try{
 26	              Attachment myAttach = new Attachment();
 27	              myAttach.ParentId = ApexPages.currentPage().getParameters().get('id');
 28	              System.debug('Id: ' + ApexPages.currentPage().getParameters().get('id'));
 29	              List<Attachment> at=[Select id from Attachment where parentId=:myAttach.ParentId];
 30	              Integer c=at.size()+1;
 31	              myAttach.name =D.Account__r.Name +''+ 'License Version' + c +'.pdf';
 32	              PageReference psPdf = new PageReference('/apex/Quotation?id=' + ApexPages.currentPage().getParameters().get('id'));
 33	              myAttach.body = psPdf.getContentAsPdf();
 34	  
 35	              insert myAttach;
 36	              
 37	                
 38	              
 39	                         
 40	              System.debug('After attach');
 41	              System.debug(myAttach);
 42	  
 43	              
 44	              /*
 45	              ApexPages.addMessage(new ApexPages.Message
 46	  
 47	  (ApexPages.Severity.CONFIRM,'Quotation has been attached.'));
 48	              */
 49	          }
 50	          catch(Exception e) {
 51	              ApexPages.addMessage(new ApexPages.Message(ApexPages.Severity.FATAL,'There was an error while attaching'));
 52	              System.debug('Exception');
 53	          }
 54	      }
 55	      
 56	     public PageReference QA() {
 57	     
 58	       PageReference secondPage = new PageReference('/apex/EmailQuote?id=' + ApexPages.currentPage().getParameters().get('id'));
 59	  
 60	        Attachment myAttach = new Attachment();
 61	              myAttach.ParentId = ApexPages.currentPage().getParameters().get('id');
 62	              System.debug('Id: ' + ApexPages.currentPage().getParameters().get('id'));
 63	              List<Attachment> at=[Select id from Attachment where parentId=:myAttach.ParentId];
 64	              Integer c=at.size()+1;
 65	              myAttach.name = D.Account__r.Name +''+ 'License Version' + c +'.pdf';
 66	              PageReference psPdf = new PageReference('/apex/Quotation?id=' + ApexPages.currentPage().getParameters().get('id'));
 67	              myAttach.body = psPdf.getContentAsPdf();
 68	  
 69	              //insert myAttach;
 70	                
 71	              secondPage.setRedirect(true);   
 72	              return secondPage; 
 73	              
 74	      }
 75	      public PageReference back() {
 76	          attach();
 77	          PageReference pr = new PageReference('/' + ApexPages.currentPage().getParameters().get('id') +'#'+ ApexPages.currentPage().getParameters().get('id') + '_RelatedNoteList_target');
 78	          pr.setRedirect(true);
 79	          System.debug('Inside back');
 80	          return pr;
 81	      }
 82	         public PageReference cancel() {
 83	         PageReference pr = new PageReference('/' + ApexPages.currentPage().getParameters().get('id') +'#'+ ApexPages.currentPage().getParameters().get('id') + '_RelatedNoteList_target');
 84	         pr.setRedirect(true);
 85	         System.debug('Inside back');
 86	         return pr;
 87	         }
 88	         
 89	      
 90	        
 91	       /*public String attachmentName{get; set;}
 92	        public pagereference AttachQuote(){
 93	          Pagereference pdf = page.Quotation;
 94	          blob  b=pdf.getcontent();
 95	        
 96	           attachment att = new attachment();
 97	           att.parentId = ApexPages.currentPage().getParameters().get('id') ;
 98	           att.body = b;
 99	           att.name = 'Quotation.pdf';     
 100	           insert att;
 101	           return null;
 102	           
 103	           
 104	        
 105	        }*/
 106	         /*test methods here*/
 107	       public  static testMethod void testAttachController()
 108	        {    
 109	         Profile p = [SELECT Id FROM Profile WHERE Name='Standard User']; 
 110	    
 111	   User U = new User(Alias = 'TUser1', Email='testItemaster1@im.com',EmailEncodingKey='UTF-8',
 112	     LastName='TestingAcc1', LanguageLocaleKey='en_US',LocaleSidKey='en_US', ProfileId =p.Id,
 113	     TimeZoneSidKey='America/Los_Angeles', UserName='testacc1@test.com');   
 114	   insert U;
 115	          
 116	          Account acc=new Account
 117	  
 118	  (Name='rose',BillingCity='bang',Billingstate='kat',BillingPostalcode='560000',BillingCountry='india');
 119	          insert acc;
 120	           system.debug('########555'+ acc);
 121	          Deal__c opp=new Deal__c(Name='test12',Account__c=acc.id);
 122	          insert opp;
 123	          system.debug('########7765'+ opp);
 124	       
 125	                  
 126	          Attachment myAttach1 = new Attachment();
 127	          myAttach1.ParentId =opp.id;
 128	          myAttach1.name = 'Quotation.pdf';
 129	          myAttach1.body = blob.valueof('test');
 130	            
 131	          insert myAttach1;
 132	          
 133	          
 134	          system.debug('Attahment1'+ myAttach1);
 135	       
 136	          AttachController atc = new AttachController(new ApexPages.StandardController(opp));
 137	          system.debug('%%%%%'+atc);
 138	          PageReference pageRef = Page.Quotation;
 139	          pageRef.getParameters().put('id', String.valueOf(opp.Id));
 140	          Test.setCurrentPage(pageRef);
 141	         Blob b;
 142	  
 143	  
 144	         AttachController atc1 = new AttachController(new ApexPages.StandardController(myAttach1));
 145	          
 146	          atc1.attach();
 147	          atc.back();
 148	          atc.cancel();
 149	          //atc.QA();
 150	         
 151	          
 152	          return;
 153	         /* public PageReference QA() {
 154	       PageReference secondPage = new PageReference('/apex/EmailQuote?id=' + 
 155	  
 156	  ApexPages.currentPage().getParameters().get('id'));
 157	          
 158	         insert myAttach1;
 159	         secondPage.setRedirect(true);   
 160	              return secondPage;
 161	              }*/
 162	       
 163	        //Attachment atchoo = [Select Id,  From Attachment where Name like 'Quotation.pdf' 
 164	  
 165	  
 166	         /* if (Test.isRunningTest())
 167	  {
 168	     b=Blob.valueOf('Test Blob String');
 169	  }
 170	  else
 171	  {
 172	    b= pageRef.getContent();
 173	  }*/
 174	  
 175	           }
 176	           
 177	        }

 when i am trying to keep atc.QA();

Error message:Methods defined as TestMethod do not support getContent call, test skipped

 

 

can u pls anybody help in solving this

Best Answer chosen by Admin (Salesforce Developers) 
KaminiKamini

You can put getContentAsPdf() method in try block, then test case will not throw the Exception and the QA() method will also covered. Put the following code at the place of QA() method.

 

public PageReference QA() {
PageReference secondPage = new PageReference('/apex/EmailQuote?id=' + ApexPages.currentPage().getParameters().get('id'));
Attachment myAttach = new Attachment();
myAttach.ParentId = ApexPages.currentPage().getParameters().get('id');
System.debug('Id: ' + ApexPages.currentPage().getParameters().get('id'));
List<Attachment> at=[Select id from Attachment where parentId=:myAttach.ParentId];
Integer c=at.size()+1;
myAttach.name = D.Account__r.Name +''+ 'License Version' + c +'.pdf';
PageReference psPdf = new PageReference('/apex/Quotation?id=' + ApexPages.currentPage().getParameters().get('id'));

try{
myAttach.body = psPdf.getContentAsPdf();
}
catch(Exception e){}
//insert myAttach;
secondPage.setRedirect(true);
return secondPage;
}

 

and also update the test case. Please put the following lines (at the place of code from Line 144 to 149):

 

ApexPages.currentPage().getParameters().put('id', opp.id);
AttachController atc1 = new AttachController(new ApexPages.StandardController(myAttach1));
atc1.attach();
atc.back();
atc.cancel();
atc.QA();

 

Thanks,

 

 

All Answers

anillllanillll
public PageReference QA()



i want to get coverage for this method
KaminiKamini

You can put getContentAsPdf() method in try block, then test case will not throw the Exception and the QA() method will also covered. Put the following code at the place of QA() method.

 

public PageReference QA() {
PageReference secondPage = new PageReference('/apex/EmailQuote?id=' + ApexPages.currentPage().getParameters().get('id'));
Attachment myAttach = new Attachment();
myAttach.ParentId = ApexPages.currentPage().getParameters().get('id');
System.debug('Id: ' + ApexPages.currentPage().getParameters().get('id'));
List<Attachment> at=[Select id from Attachment where parentId=:myAttach.ParentId];
Integer c=at.size()+1;
myAttach.name = D.Account__r.Name +''+ 'License Version' + c +'.pdf';
PageReference psPdf = new PageReference('/apex/Quotation?id=' + ApexPages.currentPage().getParameters().get('id'));

try{
myAttach.body = psPdf.getContentAsPdf();
}
catch(Exception e){}
//insert myAttach;
secondPage.setRedirect(true);
return secondPage;
}

 

and also update the test case. Please put the following lines (at the place of code from Line 144 to 149):

 

ApexPages.currentPage().getParameters().put('id', opp.id);
AttachController atc1 = new AttachController(new ApexPages.StandardController(myAttach1));
atc1.attach();
atc.back();
atc.cancel();
atc.QA();

 

Thanks,

 

 

This was selected as the best answer
anillllanillll

excellent! thank you somuch  it is covering upto 97% only "insert myattach line 37" it is not covering

anillllanillll
public class MyAccountListCntrlr {
 2	  
 3	  
 4	       // PROPERTIES
 5	        public String subject { get; set; }
 6	        public String body { get; set; }
 7	        public string ccaddress{set;get;}
 8	        public string bccaddress{set;get;}
 9	    
 10	       public List<ContactWrapperCls> acctList {get;set;}
 11	       public List<String> selAccountNames{get;set;}
 12	       public Boolean hasSelAcct {get;set;}
 13	       public final Deal__c opp;
 14	       public task t = new task();
 15	       // CONSTRUCTOR
 16	       public MyAccountListCntrlr(ApexPages.StandardController controller){
 17	       try
 18	       {
 19	            acctList = new List<ContactWrapperCls>();
 20	            selAccountNames= new List<String>();
 21	            opp = [SELECT Name,id,Account__c FROM Deal__c
 22	                     WHERE Id = :controller.getRecord().id];
 23	                     system.debug('opportunity@@@@@@@@@@'+opp);                  
 24	  
 25	          for(Contact a : [SELECT Name,id,Email,Account.Name,Account.Id FROM Contact where Account.id=:opp.Account__c ]){
 26	                 acctList.add(new ContactWrapperCls(a));
 27	              Account acc=[Select Id,BillingStreet,BillingCity,Billingstate,BillingPostalcode,BillingCountry from Account where id=:opp.Account__c];
 28	            } 
 29	  
 30	       }
 31	  
 32	  catch(Exception e)
 33	  {
 34	  system.debug(e);
 35	  }
 36	  }
 37	       // METHODS
 38	       public void displaySelectedAccountNumbers(){
 39	            selAccountNames.clear();
 40	            hasSelAcct = false;
 41	            for(ContactWrapperCls cWrapper : acctList){
 42	                 if(cWrapper.isSelected){
 43	                      hasSelAcct = true;
 44	                      selAccountNames.add(cWrapper.cContact.Email);
 45	                 }
 46	            }
 47	       }
 48	     
 49	        public PageReference send() {
 50	       
 51	        try
 52	        {
 53	       // Define the email 
 54	          Messaging.SingleEmailMessage email = new Messaging.SingleEmailMessage(); 
 55	          
 56	       // Reference the attachment page and pass in the OpportunityID
 57	          PageReference pdf =  Page.Quotation;
 58	          pdf.getParameters().put('id',(String)opp.id); 
 59	          pdf.setRedirect(true);
 60	  
 61	       // Take the PDF content
 62	          Blob b = pdf.getContent();
 63	           Attachment myAttach = new Attachment();
 64	              myAttach.ParentId = ApexPages.currentPage().getParameters().get('id');
 65	              System.debug('Id: ' + ApexPages.currentPage().getParameters().get('id'));
 66	              List<Attachment> at=[Select id from Attachment where parentId=:myAttach.ParentId];
 67	              Integer c=at.size()+1;
 68	              myAttach.name =opp.Name +''+ 'License Version' + c +'.pdf';
 69	                 myAttach.body = b;
 70	                insert myAttach;
 71	             
 72	  
 73	       // Create the email attachment
 74	          Messaging.EmailFileAttachment efa = new Messaging.EmailFileAttachment();
 75	          efa.setFileName(myAttach.name);
 76	          efa.setBody(b);
 77	  
 78	          String[] ccAddresses = new String[] {ccaddress};
 79	          String[] bccAddresses = new String[] {'emailtosalesforce@28wj1f7u1jx4d0rk7syg098pe8grkt8ir75tm5j0vhveterlrr.z-87epmai.z.le.sandbox.salesforce.com'};
 80	          String addresses;
 81	       /*   if (con[0].Email != null) {
 82	         
 83	              address = con[0].Email;
 84	              // Loop through the whole list of contacts and their emails 
 85	      
 86	              for (Integer i = 1; i <con.size(); i++) {
 87	                  if (con[i].Email != null) {
 88	                      address += ':' + con[i].Email;
 89	                  }
 90	              }
 91	          }*/
 92	        //  addresses = con.Email;
 93	          String[] toAddresses = selAccountNames;
 94	          
 95	         
 96	          
 97	      
 98	       // Sets the paramaters of the email 
 99	          email.setSubject( subject );
 100	          email.setToAddresses( toAddresses );
 101	              
 102	      string UserId = UserInfo.getUserId();
 103	      User user = [select email, IsActive from User where id = :UserId];
 104	          
 105	  
 106	          
 107	       //email.setCcAddresses(toAddresses);
 108	       //email.setBccAddresses(bccaddress);
 109	          email.setReplyTo(user.email);
 110	          email.setBccSender(true);
 111	          email.setHtmlBody(body);
 112	          email.setSenderDisplayName('Salesforce');
 113	          email.setFileAttachments(new Messaging.EmailFileAttachment[] {efa}); 
 114	          
 115	          // Sends the email 
 116	          Messaging.SendEmailResult [] r = Messaging.sendEmail(new Messaging.SingleEmailMessage[] {email});
 117	  
 118	          t.subject ='Email:'+myAttach.name+ subject;
 119	          t.status = 'Completed';
 120	          t.description = body;
 121	          t.type =  'Email';
 122	          t.ActivityDate = System.today();
 123	          t.Whatid=opp.id;
 124	  
 125	          insert t;
 126	           }
 127	  catch(Exception e)
 128	  {
 129	  System.debug(e);
 130	  }   
 131	          //PageReference pr = new PageReference('/' + ApexPages.currentPage().getParameters().get('id') +'#'+ ApexPages.currentPage().getParameters().get('id') + '_RelatedNoteList_target');
 132	          PageReference pr = new PageReference('/'+ ApexPages.currentPage().getParameters().get('id'));
 133	        
 134	          pr.setRedirect(true);
 135	        
 136	          System.debug('Inside back');
 137	          return pr;
 138	          
 139	          //return null;
 140	         }
 141	  
 142	  public class ContactWrapperCls {
 143	       public Boolean isSelected {get;set;}
 144	       public Contact cContact {get;set;}
 145	  
 146	       public ContactWrapperCls(Contact cContact){
 147	            this.cContact = cContact;
 148	       }
 149	  }
 150	   public  static testMethod void testMyAccountListCntrlr() {
 151	       Profile p = [SELECT Id FROM Profile WHERE Name='Standard User']; 
 152	    
 153	   User U = new User(Alias = 'TUser1', Email='testItemaster1@im.com',EmailEncodingKey='UTF-8',
 154	     LastName='TestingAcc1', LanguageLocaleKey='en_US',LocaleSidKey='en_US', ProfileId =p.Id,
 155	     TimeZoneSidKey='America/Los_Angeles', UserName='testacc1@test.com');   
 156	   insert U;
 157	    Messaging.SingleEmailMessage email = new Messaging.SingleEmailMessage();
 158	     Messaging.EmailFileAttachment efa = new Messaging.EmailFileAttachment();
 159	    
 160	          Account acc=new Account(Name='rose',BillingCity='bang',Billingstate='kat',BillingPostalcode='560000',BillingCountry='india');
 161	          insert acc;
 162	           system.debug('########555'+ acc);
 163	      
 164	      Contact con =  new Contact();
 165	      con.FirstName = 'Anil';
 166	      con.LastName = 'Dutt';
 167	      con.AccountID=acc.id;
 168	      con.Email = 'anil@swiftsetup.com';
 169	      insert con;
 170	  
 171	        Deal__c opp=new Deal__c(Name='test12',Account__c=acc.id);
 172	          insert opp;
 173	          ID id = opp.id;
 174	           task t=new task(subject ='hfhfg',status='completed',type='email',ActivityDate = System.today(),Whatid=opp.id);
 175	          insert t;
 176	    
 177	       
 178	     MyAccountListCntrlr myAcc= new MyAccountListCntrlr(new ApexPages.StandardController(opp));   
 179	       
 180	       
 181	   
 182	       
 183	          PageReference pageRef = Page.Quotation;
 184	          pageRef.getParameters().put('id', String.valueOf(opp.Id));
 185	          Test.setCurrentPage(pageRef);
 186	          Blob b;
 187	        
 188	          Attachment myAttach = new Attachment();
 189	          myAttach.ParentId =opp.id;
 190	          myAttach.name = 'Quotation.pdf';
 191	          myAttach.body = blob.valueof('test');
 192	           
 193	          insert myAttach; 
 194	           myacc.send();
 195	         
 196	          
 197	        
 198	     
 199	          //myAcc.displaySelectedAccountNumbers();
 200	          
 201	          
 202	  }
 203	  }

 (from line 63 to line 125 it is not covered)

KaminiKamini

Please only put the getContent() method in try block. Please arrange the lines of code in the following way-

 

Messaging.SingleEmailMessage email = new Messaging.SingleEmailMessage();

// Reference the attachment page and pass in the OpportunityID
PageReference pdf = Page.Quotation;
pdf.getParameters().put('id',(String)opp.id);
pdf.setRedirect(true);

Blob b;

 

try{

b = pdf.getContent();

}

catch(Exception e){}

 

Attachment myAttach = new Attachment();

myAttach.ParentId = ApexPages.currentPage().getParameters().get('id');

 

Remaining code.............

 

If this answers your query,please mark this as solution so that it would be useful for others. Thanks.

 

anillllanillll

Hi Kamini,

  its throwing ann error

 

 

Error Message System.DmlException: Insert failed. First exception on row 0; first error: REQUIRED_FIELD_MISSING, Required fields are missing: [Body]: [Body]

Stack Trace Class.MyAccountListCntrlr.send: line 72, column 1
Class.MyAccountListCntrlr.testMyAccountListCntrlr: line 193, column 1

 

KaminiKamini

Please use the follwoing line when you have declared the blob variable:

 

blob b = blob.valueOf(' ');

anillllanillll

Hi Kamini,

  Now,its throwing different error

   

Error Message System.EmailException: SendEmail failed. First exception on row 0; first error:            REQUIRED_FIELD_MISSING, Missing target address (target, to, cc, bcc): []

Stack Trace Class.MyAccountListCntrlr.send: line 122, column 1
Class.MyAccountListCntrlr.testMyAccountListCntrlr: line 206, column 1

anillllanillll
No Problem its working now,
I have used try,catch block before line 122


THANKS FOR ALL UR REPLIES