/********************************************************************************************************** * Name : EcommerceSubscriptionBatchProcessTest * Purpose : Test class for EcommerceSubscriptionBatchProcess **********************************************************************************************************/ @istest public class EcommerceSubscriptionBatchProcessTest { @TestSetup static void makeData() { String customerEmail = 'customer01@sonymusic.com'; Ecommerce_Customer__c customer = new Ecommerce_Customer__c( Email__c = customerEmail, Store_ID__c = 'S00046', Customer_ID__c = '123' ); insert customer; Unique_Customer__c uniqueCustomer = new Unique_Customer__c(Name = '123', Email__c = customerEmail); insert uniqueCustomer; Ecommerce_Order__c order = new Ecommerce_Order__c( Name = '#0001', Alt_Order_ID__c = '0001', Store_ID__c = 'S00046', Unique_Customer__c = uniqueCustomer.Id, Email__c = customerEmail ); insert order; insert new List{ new Ecommerce_Store__c(Name = 'S00046'), new Ecommerce_Store__c(Name = 'S00047') }; } /************************************************************************************ * Method: testOrderCreation * APEX method tested : EcommerceSubscriptionBatchProcess.execute * Description : Verifies that a new Order is created even when there is already an existing * Order with the same Name, but different Store_ID and Alt_Order_ID *************************************************************************************/ @isTest static void testOrderCreation() { EcommerceOrder__c orderLine = new EcommerceOrder__c( Alt_Order_ID__c = '0002', Store_ID__c = 'S00047', Customer_ID__c = '123' ); insert orderLine; Test.startTest(); Database.executeBatch(new EcommerceSubscriptionBatchProcess()); Test.stopTest(); Ecommerce_Order__c newOrder = [ SELECT Id FROM Ecommerce_Order__c WHERE Alt_Order_ID__c = '0002' AND Store_ID__c = 'S00047' ]; orderLine = [SELECT Ecommerce_Order__c FROM EcommerceOrder__c]; Assert.areEqual(newOrder.Id, orderLine.Ecommerce_Order__c); } /************************************************************************************ * Method: testExistingOrderUpdate * APEX method tested : EcommerceSubscriptionBatchProcess.execute * Description : Verifies that no new Order is created and the existing one is updated when * Alt_Order_ID__c and Store_ID__c matches *************************************************************************************/ @isTest static void testExistingOrderUpdate() { List orders = [SELECT Id, Marketing_Consent__c FROM Ecommerce_Order__c]; Assert.areEqual(1, orders.size()); Assert.isFalse(orders[0].Marketing_Consent__c); EcommerceOrder__c orderLine = new EcommerceOrder__c( Alt_Order_ID__c = '0001', Store_ID__c = 'S00046', Marketing_Consent__c = true, Customer_ID__c = '123' ); insert orderLine; Test.startTest(); Database.executeBatch(new EcommerceSubscriptionBatchProcess()); Test.stopTest(); orders = [SELECT Id, Marketing_Consent__c FROM Ecommerce_Order__c]; Assert.areEqual(1, orders.size()); Assert.areEqual(orders[0].Marketing_Consent__c, orderLine.Marketing_Consent__c); Assert.isTrue(orders[0].Marketing_Consent__c); } /************************************************************************************ * Method: testTFRCreation * APEX method tested : EcommerceSubscriptionBatchProcess.execute * Description : Verifies that the TFR record is created when Marketing_Consent__c = true *************************************************************************************/ @isTest static void testTFRCreation() { List tfrs = [SELECT Id FROM Temp_Form_Response__c]; Assert.isTrue(tfrs.isEmpty()); EcommerceOrder__c orderLine = new EcommerceOrder__c( Email__c = 'customer01@sonymusic.com', Alt_Order_ID__c = '0001', Store_ID__c = 'S00046', Customer_ID__c = '123', Marketing_Consent__c = true ); insert orderLine; Test.startTest(); Database.executeBatch(new EcommerceSubscriptionBatchProcess()); Test.stopTest(); tfrs = [SELECT Id, Email__c FROM Temp_Form_Response__c]; Assert.areEqual(1, tfrs.size()); Assert.areEqual(tfrs[0].Email__c, orderLine.Email__c); orderLine = [SELECT Ispickedforprocess__c FROM EcommerceOrder__c]; Assert.isTrue(orderLine.Ispickedforprocess__c); } }