You need to sign in to do that
Don't have an account?

test class not covering
I have an api class and have to wite test class but test class is not covering :
class;
public class fileViewController {
ApexPages.StandardController controller;
public Boolean httpErrorReceived {get; set;}
public String respFileString {get; set;}
public String contentType {get;set;}
public fileViewController(ApexPages.StandardController controller){
this.controller = controller;
httpErrorReceived = false;
}
public void viewFile(){
try{
Case req = getPortfolioUrl();
if(null !=req.Portfolio_Analysis_Report__c && req.View_checkbox_c){
String authorizationHeader = 'Bearer ' + PortfolioAnalysisCallouts.getAuthToken();
Http http = new Http();
HttpRequest request = new HttpRequest();
request.setMethod('GET');
request.setHeader('Authorization', authorizationHeader);
request.setEndpoint(req.Portfolio_Analysis_Report__c);
system.debug('Request==='+request);
HttpResponse response = http.send(request);
system.debug('Response==='+response);
if(response.getStatusCode()==200 || response.getStatusCode()==202){
//respFileString = response.getBody();
respFileString = EncodingUtil.Base64Encode(response.getBodyAsBlob());
contentType = 'application/pdf';
}else{
respFileString = 'Connection Failed ';
contentType = 'text/plain';
httpErrorReceived = true;
}
}else{
respFileString = '\"Analysis Report\" is not available';
contentType = 'text/plain';
httpErrorReceived = true;
}
}catch(Exception e){
respFileString = 'Connection Failed:";
contentType = 'text/plain';
httpErrorReceived = true;
}
System.debug('respFileString=='+respFileString);
}
private Case getPortfolioUrl() {
return [select
Id,
Portfolio_Analysis_Report__c,
View_checkbox_c
from Case
where Id =: ApexPages.currentPage().getParameters().get('id')];
}
private static String getUrl(){
URLParameters__c urls = URLParameters__c.getOrgDefaults();//custom setting
String url = urls.newVal__c;
return url;
}
}
Mock class:
@isTest
global class MockHttpResponseGenerator implements HttpCalloutMock {
global HTTPResponse respond(HTTPRequest req) {
System.assertEquals('https://example.com', req.getEndpoint());
System.assertEquals('GET', req.getMethod());
HttpResponse res = new HttpResponse();
res.setHeader('Content-Type', 'application/json');
res.setBody('{"test":"test1"}');
res.setStatusCode(200);
return res;
}
}
test class:
@isTest
public class ViewPortfolioPDFControllerTest {
public static testMethod void method1() {
case con = new case();
con.Subject = 'Test Subject';
con.Initial_Status__c ='Takeovers';
con.status='In Progress';
con.Total_Assets__c = 0;
con.Portfolio_Analysis_Report__c= '/services/apexrest/claimApi';
con.View_checkbox_c=true;
insert con;
Test.setMock(HttpCalloutMock.class, new MockHttpResponseGenerator());
Test.startTest();
apexpages.currentpage().getparameters().put('Cid' , con.Id);
ApexPages.StandardController sc = new ApexPages.standardController(con);
ViewPortfolioPDFController vpc= new ViewPortfolioPDFController(sc);
vpc.viewPortfolioPDF();
Test.stopTest();
}
can anyone please help
class;
public class fileViewController {
ApexPages.StandardController controller;
public Boolean httpErrorReceived {get; set;}
public String respFileString {get; set;}
public String contentType {get;set;}
public fileViewController(ApexPages.StandardController controller){
this.controller = controller;
httpErrorReceived = false;
}
public void viewFile(){
try{
Case req = getPortfolioUrl();
if(null !=req.Portfolio_Analysis_Report__c && req.View_checkbox_c){
String authorizationHeader = 'Bearer ' + PortfolioAnalysisCallouts.getAuthToken();
Http http = new Http();
HttpRequest request = new HttpRequest();
request.setMethod('GET');
request.setHeader('Authorization', authorizationHeader);
request.setEndpoint(req.Portfolio_Analysis_Report__c);
system.debug('Request==='+request);
HttpResponse response = http.send(request);
system.debug('Response==='+response);
if(response.getStatusCode()==200 || response.getStatusCode()==202){
//respFileString = response.getBody();
respFileString = EncodingUtil.Base64Encode(response.getBodyAsBlob());
contentType = 'application/pdf';
}else{
respFileString = 'Connection Failed ';
contentType = 'text/plain';
httpErrorReceived = true;
}
}else{
respFileString = '\"Analysis Report\" is not available';
contentType = 'text/plain';
httpErrorReceived = true;
}
}catch(Exception e){
respFileString = 'Connection Failed:";
contentType = 'text/plain';
httpErrorReceived = true;
}
System.debug('respFileString=='+respFileString);
}
private Case getPortfolioUrl() {
return [select
Id,
Portfolio_Analysis_Report__c,
View_checkbox_c
from Case
where Id =: ApexPages.currentPage().getParameters().get('id')];
}
private static String getUrl(){
URLParameters__c urls = URLParameters__c.getOrgDefaults();//custom setting
String url = urls.newVal__c;
return url;
}
}
Mock class:
@isTest
global class MockHttpResponseGenerator implements HttpCalloutMock {
global HTTPResponse respond(HTTPRequest req) {
System.assertEquals('https://example.com', req.getEndpoint());
System.assertEquals('GET', req.getMethod());
HttpResponse res = new HttpResponse();
res.setHeader('Content-Type', 'application/json');
res.setBody('{"test":"test1"}');
res.setStatusCode(200);
return res;
}
}
test class:
@isTest
public class ViewPortfolioPDFControllerTest {
public static testMethod void method1() {
case con = new case();
con.Subject = 'Test Subject';
con.Initial_Status__c ='Takeovers';
con.status='In Progress';
con.Total_Assets__c = 0;
con.Portfolio_Analysis_Report__c= '/services/apexrest/claimApi';
con.View_checkbox_c=true;
insert con;
Test.setMock(HttpCalloutMock.class, new MockHttpResponseGenerator());
Test.startTest();
apexpages.currentpage().getparameters().put('Cid' , con.Id);
ApexPages.StandardController sc = new ApexPages.standardController(con);
ViewPortfolioPDFController vpc= new ViewPortfolioPDFController(sc);
vpc.viewPortfolioPDF();
Test.stopTest();
}
can anyone please help
I assume you meant, when you run this test class you are getting error.
If so, below is the solution.
if(!Test.isRunningTest()){
HttpResponse response = http.send(request);
}
put the http.send line within an if like the one above. That makes the lines to execute only when it is not being tested.
ApexPages.currentPage().getParameters().put('id','c2.id');
vpc.getPortfolioAnalysisURL();
but still nothing is happening. Can you please tell in which you are asking to pass the id.
vpc.getPortfolioAnalysisURL();
vpc.getUrl();
ApexPages.currentPage().getParameters().put('id',con.Id);
vpc.viewFile();
vpc.getUrl();
change above to
apexpages.currentpage().getparameters().put('id' , con.Id);
put a screen shot of the test coverage, someone will jump in.