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
vicky kr 3vicky kr 3 

POST METHORD Else Condition Not Working

Here Is My Apex Code,
It working well,Test class stuck at 62%

APEX
@RestResource(urlMapping='/v1/tcwc/')
global class testingCaseWithContact {
   @HttpPost
    global static Case casecreate(String Email,String lastName){
        
        List<Contact> cont=[Select Id,lastName,Email from Contact];
        for(Contact con:cont){
            
            if(con.Email!='Email'){ System.debug('=====ERROR====='); }
        
            else{
                Case newCase=new Case(Subject='CaseWithContactInsert',Origin='Chat',Status='Open');

                insert newCase;  
                 newCase=[Select Id,CaseNumber,ContactId from Case ORDER BY CreatedDate DESC LIMIT 1];
               
            }
        }
        
        return [Select Id,CaseNumber,ContactId from Case ORDER BY CreatedDate DESC LIMIT 1];  

    }
    
}


TEST CLASS

@isTest(SeeAllData=false)
public class testingCaseWithContact_Test {
    @IsTest
    static void testDoPost(){
        Contact c = new contact(LastName='Demo',Email='test@gmail.com');
        Insert c;
        
        Case  TestOpp=new Case ();
        TestOpp.Subject='CaseDataWithContactInsert';
        TestOpp.Origin='Chat';
        TestOpp.Status='Open';
        TestOpp.ChatHistory__c='Chat For demo';
        TestOpp.ContactID=c.id;
        insert TestOpp;
        
        Integer count=[select count() from case where Id=:TestOpp.Id Limit 1];
        System.assertEquals(1,count);
        
        testingCaseWithContact reqst=new testingCaseWithContact();
        String JsonMsg=JSON.serialize(reqst);
        Test.startTest();
        
        RestRequest req = new RestRequest(); 
        RestResponse res = new RestResponse();
        
        req.requestURI = '/services/apexrest/v1/tcwc/';  //Request URL
        req.httpMethod = 'POST';//HTTP Request Type
        req.requestBody = Blob.valueof(JsonMsg);
        RestContext.request = req;
        RestContext.response= res;
        // Test.startTest();
        testingCaseWithContact.casecreate('test@gmail.com','Demo');
        insert TestOpp;
        Case a=[Select Id,Status from Case Where Id=:TestOpp.Id ORDER BY CreatedDate DESC LIMIT 1];
        System.assertEquals('Open',a.Status);
        Test.stopTest();
        
 }
}


 
Best Answer chosen by vicky kr 3
Sai PraveenSai Praveen (Salesforce Developers) 
Hi,

I made a small correction in your apex class and test class as below. Now this covers 100% of your code.

Apex Class:
 
@RestResource(urlMapping='/v1/tcwc/')
global class testingCaseWithContact {
   @HttpPost
    global static Case casecreate(String Email,String lastName){
        
        List<Contact> cont=[Select Id,lastName,Email from Contact];
        for(Contact con:cont){
            
            if(con.Email!=Email){ System.debug('=====ERROR====='); }
        
            else{
                Case newCase=new Case(Subject='CaseWithContactInsert',Origin='Chat',Status='Open');

                insert newCase;  
                 newCase=[Select Id,CaseNumber,ContactId from Case ORDER BY CreatedDate DESC LIMIT 1];
               
            }
        }
        
        return [Select Id,CaseNumber,ContactId from Case ORDER BY CreatedDate DESC LIMIT 1];  

    }
    
}
Test Class:
 
@isTest(SeeAllData=false)
public class testingCaseWithContact_Test {
    @IsTest
    static void testDoPost(){
        Contact c = new contact(LastName='Demo',Email='test@gmail.com');
        Insert c;
        
        Case  TestOpp=new Case ();
        TestOpp.Subject='CaseDataWithContactInsert';
        TestOpp.Origin='Chat';
        TestOpp.Status='Open';
        TestOpp.ChatHistory__c='Chat For demo';
        TestOpp.ContactID=c.id;
        insert TestOpp;
        
        Integer count=[select count() from case where Id=:TestOpp.Id Limit 1];
        System.assertEquals(1,count);
        
        testingCaseWithContact reqst=new testingCaseWithContact();
        String JsonMsg=JSON.serialize(reqst);
        Test.startTest();
        
        RestRequest req = new RestRequest(); 
        RestResponse res = new RestResponse();
        
        req.requestURI = '/services/apexrest/v1/tcwc/';  //Request URL
        req.httpMethod = 'POST';//HTTP Request Type
        req.requestBody = Blob.valueof(JsonMsg);
        RestContext.request = req;
        RestContext.response= res;
        // Test.startTest();
        testingCaseWithContact.casecreate('test@gmail.com','Demo');
        testingCaseWithContact.casecreate('test2@gmail.com','Demo');
        //insert TestOpp;
        Case a=[Select Id,Status from Case Where Id=:TestOpp.Id ORDER BY CreatedDate DESC LIMIT 1];
        System.assertEquals('Open',a.Status);
        Test.stopTest();
        
 }
}


Let me know if you face any issues.

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

Thanks,

All Answers

Sai PraveenSai Praveen (Salesforce Developers) 
Hi,

I made a small correction in your apex class and test class as below. Now this covers 100% of your code.

Apex Class:
 
@RestResource(urlMapping='/v1/tcwc/')
global class testingCaseWithContact {
   @HttpPost
    global static Case casecreate(String Email,String lastName){
        
        List<Contact> cont=[Select Id,lastName,Email from Contact];
        for(Contact con:cont){
            
            if(con.Email!=Email){ System.debug('=====ERROR====='); }
        
            else{
                Case newCase=new Case(Subject='CaseWithContactInsert',Origin='Chat',Status='Open');

                insert newCase;  
                 newCase=[Select Id,CaseNumber,ContactId from Case ORDER BY CreatedDate DESC LIMIT 1];
               
            }
        }
        
        return [Select Id,CaseNumber,ContactId from Case ORDER BY CreatedDate DESC LIMIT 1];  

    }
    
}
Test Class:
 
@isTest(SeeAllData=false)
public class testingCaseWithContact_Test {
    @IsTest
    static void testDoPost(){
        Contact c = new contact(LastName='Demo',Email='test@gmail.com');
        Insert c;
        
        Case  TestOpp=new Case ();
        TestOpp.Subject='CaseDataWithContactInsert';
        TestOpp.Origin='Chat';
        TestOpp.Status='Open';
        TestOpp.ChatHistory__c='Chat For demo';
        TestOpp.ContactID=c.id;
        insert TestOpp;
        
        Integer count=[select count() from case where Id=:TestOpp.Id Limit 1];
        System.assertEquals(1,count);
        
        testingCaseWithContact reqst=new testingCaseWithContact();
        String JsonMsg=JSON.serialize(reqst);
        Test.startTest();
        
        RestRequest req = new RestRequest(); 
        RestResponse res = new RestResponse();
        
        req.requestURI = '/services/apexrest/v1/tcwc/';  //Request URL
        req.httpMethod = 'POST';//HTTP Request Type
        req.requestBody = Blob.valueof(JsonMsg);
        RestContext.request = req;
        RestContext.response= res;
        // Test.startTest();
        testingCaseWithContact.casecreate('test@gmail.com','Demo');
        testingCaseWithContact.casecreate('test2@gmail.com','Demo');
        //insert TestOpp;
        Case a=[Select Id,Status from Case Where Id=:TestOpp.Id ORDER BY CreatedDate DESC LIMIT 1];
        System.assertEquals('Open',a.Status);
        Test.stopTest();
        
 }
}


Let me know if you face any issues.

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

Thanks,
This was selected as the best answer
vicky kr 3vicky kr 3
@Thanks Sai its working Perfectly