+ Start a Discussion
brijender singh rathore 16brijender singh rathore 16 

CAN SOMEBODY PLZ CORRECT MY TEST CLASS FOR THIS TRIGGER.(IT IS RUNNING FINE BUT SHOWING NO CODE COVERAGE))

Product  AND Inventory_Change__c HAVE LOOKUP RELATIONSHIP.PRODUCT IS THE PARENT OF Inventory_Change__c .TRIGGER IS UPDATEING In_Stock__c FIELD ON THE BASIS OF RECORD TYPE CHANGE.
____________________________________________________________________________________________________________________
_____________________________________TRIGGER_______________________________________________________________________
trigger InventoryChangeTrigger on Inventory_Change__c (after update) {
  if(Trigger.isAfter && Trigger.isUpdate) {
    for (Inventory_Change__c oIC : Trigger.new){
      Product2  oP = [SELECT Id, In_Stock__c  FROM Product2 WHERE Id = :oIC.Product__c];
      Id Rid = Schema.SObjectType.Inventory_Change__c.getRecordTypeInfosByName().get('Reduction').getRecordTypeId();
      Id Aid = Schema.SObjectType.Inventory_Change__c.getRecordTypeInfosByName().get('Addition').getRecordTypeId();
      if(trigger.oldmap.get(oIC.id).RecordTypeid != trigger.newmap.get(oIC.id).RecordTypeid){
        if(oIC.RecordTypeid == Rid ){
          oP.In_Stock__c = oP.In_Stock__c - oIC.Quantity__c;
        }
        if(oIC.RecordTypeid == Aid ){
          oP.In_Stock__c = oP.In_Stock__c + oIC.Quantity__c;
        }
      }
    update oP;
    }
  }
}
PRODUCT IS A STANDARD OBJECT AND Inventory_Change__c IS A CUSTOM OBJECT WITH ONLY ONE FIELD REQUIRED THAT IS "RECORD TYPE"

__________________________________________________________________________________________________________________________
                                                                                           TEST CLASS
____________________________________________________________________________________________________________________________


@isTest
public class InventoryChangeTrigger_Test{
  static testMethod void test_Inventory_ChangeTrigger(){
    test.startTest();
    product2 product2_Obj  = new product2(Name = 'Name735', IsActive = true, In_Stock__c = 19, Out_of_Stock__c = false);
    insert product2_Obj;
    Inventory_Change__c inventory_change_Obj = new Inventory_Change__c(RecordTypeId = '01236000000STHgAAO',Quantity__c = 16,product__c = product2_Obj.id );
    Insert inventory_change_Obj;
    product2 product2_Obj1 = [select id,Name,In_Stock__c from product2 where Name = 'Name735'  LIMIT 1];
    product2_Obj1.name= 'xyz';
    product2_Obj1.In_Stock__c = 3;
    update product2_Obj1;
     
    test.stopTest();
  }
}
{!Piyush_soni__c}{!Piyush_soni__c}
try this, you need to update 'Inventory_Change__c' object instance in test class
@isTest
public class InventoryChangeTrigger_Test{
  static testMethod void test_Inventory_ChangeTrigger(){
    test.startTest();
    product2 product2_Obj  = new product2(Name = 'Name735', IsActive = true, In_Stock__c = 19, Out_of_Stock__c = false);
    insert product2_Obj;
    Inventory_Change__c inventory_change_Obj = new Inventory_Change__c(RecordTypeId = '01236000000STHgAAO',Quantity__c = 16,product__c = product2_Obj.id );
    Insert inventory_change_Obj;
    product2 product2_Obj1 = [select id,Name,In_Stock__c from product2 where Name = 'Name735'  LIMIT 1];
    product2_Obj1.name= 'xyz';
    product2_Obj1.In_Stock__c = 3;
    update product2_Obj1;
     
	inventory_change_Obj.Quantity__c = 15;
    update inventory_change_Obj;
    test.stopTest();
  }
}

thanks, let us know if it helps you
GulshanRajGulshanRaj
The trigger is on Inventory_Change__c object, so it will fire once you update Inventory_Change__c record.

Here is the updated code:
@isTest
public class InventoryChangeTrigger_Test{
  static testMethod void test_Inventory_ChangeTrigger(){
    test.startTest();
    product2 product2_Obj  = new product2(Name = 'Name735', IsActive = true, In_Stock__c = 19, Out_of_Stock__c = false);
    insert product2_Obj;
    Inventory_Change__c inventory_change_Obj = new Inventory_Change__c(RecordTypeId = '01236000000STHgAAO',Quantity__c = 16,product__c = product2_Obj.id );
    Insert inventory_change_Obj;
    product2 product2_Obj1 = [select id,Name,In_Stock__c from product2 where Name = 'Name735'  LIMIT 1];
    product2_Obj1.name= 'xyz';
    product2_Obj1.In_Stock__c = 3;
    update product2_Obj1;

    inventory_change_Obj.Quantity__c = 15;
    update inventory_change_Obj;

    test.stopTest();
  }
}

Thanks
Gulshan Raj
brijender singh rathore 16brijender singh rathore 16
THANKS FOR THE HELP GUYS BUT TEST CLASSES MENTIONED ABOVE GIVING ON 63% CODE COVERAGE.DONE SOME MINOR CHANGES AND CODE COVERAGE IS NOW 90%.

@isTest
public class InventoryChangeTrigger_Test{
  static testMethod void test_Inventory_ChangeTrigger(){
    test.startTest();
    product2 product2_Obj  = new product2(Name = 'Name735', IsActive = true, In_Stock__c = 19, Out_of_Stock__c = false);
    insert product2_Obj;
    Inventory_Change__c inventory_change_Obj = new Inventory_Change__c(RecordTypeId = '01236000000STHgAAO',Quantity__c = 16,product__c = product2_Obj.id );
    Insert inventory_change_Obj;
    product2 product2_Obj1 = [select id,Name,In_Stock__c from product2 where Name = 'Name735'  LIMIT 1];
    product2_Obj1.name= 'xyz';
    product2_Obj1.In_Stock__c = 3;
    update product2_Obj1;
    String strRecordTypeId = [Select Id From RecordType Where SobjectType = 'Inventory_Change__c' and Name = 'Reduction'].Id;
    inventory_change_Obj.RecordTypeId = strRecordTypeId;
    inventory_change_Obj.Quantity__c = 15;
    update inventory_change_Obj;
    
    test.stopTest();
  }
}