Skip to main content
Can anyone please  help me with the Test class for the following use case. I'm getting 100% code coverage in sandbox but when I'm deploying the code in production and validating using "run specified test - giving the name of my test class"  I'm getting Error as "Your Code coverage is 50%, you need at least 75% coverage to complete this deployment" 

Apex Code:

trigger WorkOrderDeleteStop on WorkOrder (before delete) {

    Id userProfileId = userinfo.getProfileId();

    String userProfileName  = [SELECT ID, Name from Profile Where Id = : userProfileId].Name;

    if(userProfileName == 'SFS Technician') 

        { 

            for (WorkOrder StopDelete: trigger.old) 

            { 

                StopDelete.addError('Work Order can not to be deleted. Please contact System Administrator to execute a deletion.'); 

            } 

        } 

    }

Test Class

@isTest

private class WorkOrderDeleteStop_test {

    

   static testmethod void WorkOrderDeleteStop_test1(){

        Test.startTest(); 

        WorkOrder testWorkOrder = new WorkOrder(Subject='testWorkOrder');        

        insert testWorkOrder;

                       

    //Create a unique UserName

        String uniqueUserName = 'techuser' + DateTime.now().getTime() + '@db.com.one';

        // This code runs as the system user

        Profile p = [SELECT Id FROM Profile WHERE Name='System Administrator'];

        

        User usr = new User(Alias = 'susr', Email='admin@db.com.one',

                            EmailEncodingKey='UTF-8', LastName='TechTesting', LanguageLocaleKey='en_US',

                            LocaleSidKey='en_US', ProfileId = p.Id,

                            TimeZoneSidKey='America/New_York',

                            UserName=uniqueUserName);

        

        System.runAs(usr){

            try{

                delete testWorkOrder;

            }catch(Exception ex){

                system.debug('Exception');

            }    

        }

        Test.stopTest();

       List<WorkOrder> testWorkOrderList = [Select Id,IsDeleted From WorkOrder Where Subject ='testWorkOrder'];

            

          System.debug('----json start -----');

         System.debug(JSON.serializePretty(testWorkOrderList));

           System.debug('----json end -----');

        System.debug(testWorkOrderList.size());

        system.assertEquals(testWorkOrderList.size(), 0);

        

       // List<WorkOrder> upWorkOrder = [Select Id, IsDeleted From WorkOrder Where Subject ='testWorkOrder'];

        //system.assertEquals(upWorkOrder.size(), 0);

    }

    

    

   

  static testmethod void WorkOrderDeleteStop_test2(){

        WorkOrder StopDeleteRecord = new WorkOrder(Subject='testWorkOrder');        

        insert StopDeleteRecord;

 

        Test.startTest();       

        // Create a unique UserName

        String uniqueUserName = 'techuser' + DateTime.now().getTime() + '@db.com.one';

        // This code runs as the system user

        Profile p = [SELECT Id FROM Profile WHERE Name='SFS Technician'];

        

        User usr = new User(Alias = 'test', Email='tech@db.com.one',

                            EmailEncodingKey='UTF-8', LastName='TechTestin', LanguageLocaleKey='en_US',

                            LocaleSidKey='en_US', ProfileId = p.Id,

                            TimeZoneSidKey='America/New_York',

                            UserName=uniqueUserName);

          System.debug('----json start -----');

         System.debug(JSON.serializePretty(usr));

           System.debug('----json end -----');

  

        

        System.runAs(usr){

            try{

                delete StopDeleteRecord;

            }catch(Exception ex){

                system.debug('Exception');

            }    

        }

        Test.stopTest();

        

        List<WorkOrder> upWorkOrder = [Select Id, IsDeleted From WorkOrder Where Subject ='testWorkOrder'];

        system.assertEquals(upWorkOrder.size(), 1);

    }

 }
1 answer
  1. Aug 22, 2022, 11:02 PM
    Hi Ak,

    try with below code getting 100%.

    @istest

    public class WorkOrderDeleteStop_Test {

    static testmethod void WorkOrderDeleteStopmethod(){

    WorkOrder testWorkOrder = new WorkOrder(Subject='testWorkOrder');

    insert testWorkOrder;

    //Create a unique UserName

    String uniqueUserName = 'techuser' + DateTime.now().getTime() + '@db.com.one';

    // This code runs as the system user

    Profile p = [SELECT Id FROM Profile WHERE Name='SFS Technician'];

    User usr = new User(Alias = 'susr', Email='admin@db.com.one',

    EmailEncodingKey='UTF-8', LastName='TechTesting', LanguageLocaleKey='en_US',

    LocaleSidKey='en_US', ProfileId = p.Id,

    TimeZoneSidKey='America/New_York',

    UserName=uniqueUserName);

    system.runAs(usr){

    try

    {

    Delete testWorkOrder;

    }

    catch(Exception ee)

    {}

    }

    }

    }

    If this helps, Please mark it as best answer.

    Thanks!!

     
0/9000