SyncMadeEasy/force-app/main/default/classes/FetchOrders_test.cls

866 lines
41 KiB
OpenEdge ABL

@istest
public with sharing class FetchOrders_test {
@istest public static void bothforOppandOrd (){
Account ac = new Account();
ac.name = 'test';
insert ac;
Opportunity Opp = new Opportunity();
Opp.name = 'Test';
Opp.AccountId = ac.id;
Opp.StageName = 'Closed Won';
Opp.CloseDate = system.today();
Opp.Shopify_Id__c = '618960158784';
insert Opp;
Order ord = new Order();
Ord.EffectiveDate = system.today();
Ord.AccountId = ac.id;
Ord.Shopify_Id__c = '618960158784';
ord.Status = 'Draft';
insert Ord;
List<HIC_ShopifySync__HIC_Configuration__c> configuration = New List<HIC_ShopifySync__HIC_Configuration__c>();
HIC_ShopifySync__HIC_Configuration__c shopifyConfiguration = New HIC_ShopifySync__HIC_Configuration__c();
shopifyConfiguration.Name = 'Default';
shopifyConfiguration.HIC_ShopifySync__Account_Contact__c = true;
shopifyConfiguration.HIC_ShopifySync__Person_Account__c = false;
shopifyConfiguration.HIC_ShopifySync__Default_Account__c = false;
shopifyConfiguration.HIC_ShopifySync__Shopify_URL__c = '123@gmail.com';
shopifyConfiguration.HIC_ShopifySync__API_Key__c = 'test';
shopifyConfiguration.HIC_ShopifySync__Private_Key_Password__c = 'Test';
shopifyConfiguration.HIC_ShopifySync__Opportunity__c = true;
shopifyConfiguration.HIC_ShopifySync__Order__c = true;
shopifyConfiguration.HIC_ShopifySync__Opportunity_Line_Item__c = true;
shopifyConfiguration.HIC_ShopifySync__Order_Line_Item__c = true;
shopifyConfiguration.HIC_ShopifySync__Account_Record_Type__c = ac.Id;
shopifyConfiguration.HIC_ShopifySync__IsCurrencyChanged__c = true;
shopifyConfiguration.HIC_ShopifySync__Store__c = '123';
configuration.add(shopifyConfiguration);
insert configuration;
Test.startTest();
FetchOrders obj = new FetchOrders('test',false,true,configuration,'123');
DataBase.executeBatch(obj);
FetchOrders obj1 = new FetchOrders('test',true,false,configuration,'123');
DataBase.executeBatch(obj1);
Test.stopTest();
system.assert(shopifyConfiguration.Opportunity__c);
}
@istest public static void bothforOppandOrd1 (){
Account ac = new Account();
ac.name = 'test';
insert ac;
Opportunity Opp = new Opportunity();
Opp.name = 'Test';
Opp.AccountId = ac.id;
Opp.StageName = 'Closed Won';
Opp.CloseDate = system.today();
Opp.Shopify_Id__c = '618960158784';
insert Opp;
Order ord = new Order();
Ord.EffectiveDate = system.today();
Ord.AccountId = ac.id;
Ord.Shopify_Id__c = '618960158784';
ord.Status = 'Draft';
insert Ord;
List<HIC_ShopifySync__HIC_Configuration__c> configuration = New List<HIC_ShopifySync__HIC_Configuration__c>();
HIC_ShopifySync__HIC_Configuration__c shopifyConfiguration = New HIC_ShopifySync__HIC_Configuration__c();
shopifyConfiguration.Name = 'Default';
shopifyConfiguration.HIC_ShopifySync__Account_Contact__c = true;
shopifyConfiguration.HIC_ShopifySync__Person_Account__c = true;
shopifyConfiguration.HIC_ShopifySync__Default_Account__c = false;
shopifyConfiguration.HIC_ShopifySync__Shopify_URL__c = '123@gmail.com';
shopifyConfiguration.HIC_ShopifySync__API_Key__c = 'test';
shopifyConfiguration.HIC_ShopifySync__Private_Key_Password__c = 'Test';
shopifyConfiguration.HIC_ShopifySync__Opportunity__c = true;
shopifyConfiguration.HIC_ShopifySync__Order__c = true;
shopifyConfiguration.HIC_ShopifySync__Opportunity_Line_Item__c = true;
shopifyConfiguration.HIC_ShopifySync__Order_Line_Item__c = true;
shopifyConfiguration.HIC_ShopifySync__Account_Record_Type__c = ac.Id;
shopifyConfiguration.HIC_ShopifySync__Store__c = '123';
configuration.add(shopifyConfiguration);
insert configuration;
Test.startTest();
FetchOrders obj = new FetchOrders('test' ,true,true,configuration,'123');
DataBase.executeBatch(obj);
Test.stopTest();
system.assert(shopifyConfiguration.Opportunity__c);
}
@istest public static void bothforOppandOrd2 (){
Account ac = new Account();
ac.name = 'test';
insert ac;
Opportunity Opp = new Opportunity();
Opp.name = 'Test';
Opp.AccountId = ac.id;
Opp.StageName = 'Closed Won';
Opp.CloseDate = system.today();
Opp.Shopify_Id__c = '618960158784';
insert Opp;
Order ord = new Order();
Ord.EffectiveDate = system.today();
Ord.AccountId = ac.id;
Ord.Shopify_Id__c = '618960158784';
ord.Status = 'Draft';
insert Ord;
List<HIC_ShopifySync__HIC_Configuration__c> configuration = New List<HIC_ShopifySync__HIC_Configuration__c>();
HIC_ShopifySync__HIC_Configuration__c shopifyConfiguration = New HIC_ShopifySync__HIC_Configuration__c();
shopifyConfiguration.Name = 'Default';
shopifyConfiguration.HIC_ShopifySync__Account_Contact__c = true;
shopifyConfiguration.HIC_ShopifySync__Person_Account__c = true;
shopifyConfiguration.HIC_ShopifySync__Default_Account__c = false;
shopifyConfiguration.HIC_ShopifySync__Shopify_URL__c = '123@gmail.com';
shopifyConfiguration.HIC_ShopifySync__API_Key__c = 'test';
shopifyConfiguration.HIC_ShopifySync__Private_Key_Password__c = 'Test';
shopifyConfiguration.HIC_ShopifySync__Opportunity__c = true;
shopifyConfiguration.HIC_ShopifySync__Order__c = true;
shopifyConfiguration.HIC_ShopifySync__Opportunity_Line_Item__c = true;
shopifyConfiguration.HIC_ShopifySync__Order_Line_Item__c = true;
shopifyConfiguration.HIC_ShopifySync__Account_Record_Type__c = ac.Id;
shopifyConfiguration.HIC_ShopifySync__Collection__c = false;
shopifyConfiguration.HIC_ShopifySync__Store__c = '123';
configuration.add(shopifyConfiguration);
insert configuration;
Test.startTest();
FetchOrders obj = new FetchOrders('test' , true ,true,configuration,'123');
DataBase.executeBatch(obj);
Test.stopTest();
system.assert(shopifyConfiguration.Opportunity__c);
}
@istest public static void bothforOppandOrd3(){
Account ac = new Account();
ac.name = 'test';
insert ac;
Opportunity Opp = new Opportunity();
Opp.name = 'Test';
Opp.AccountId = ac.id;
Opp.StageName = 'Closed Won';
Opp.CloseDate = system.today();
Opp.Shopify_Id__c = '618960158784';
insert Opp;
Order ord = new Order();
Ord.EffectiveDate = system.today();
Ord.AccountId = ac.id;
Ord.Shopify_Id__c = '618960158784';
ord.Status = 'Draft';
insert Ord;
List<HIC_ShopifySync__HIC_Configuration__c> configuration = New List<HIC_ShopifySync__HIC_Configuration__c>();
HIC_ShopifySync__HIC_Configuration__c shopifyConfiguration = New HIC_ShopifySync__HIC_Configuration__c();
shopifyConfiguration.Name = 'Default';
shopifyConfiguration.HIC_ShopifySync__Account_Contact__c = true;
shopifyConfiguration.HIC_ShopifySync__Person_Account__c = true;
shopifyConfiguration.HIC_ShopifySync__Default_Account__c = false;
shopifyConfiguration.HIC_ShopifySync__Shopify_URL__c = '123@gmail.com';
shopifyConfiguration.HIC_ShopifySync__API_Key__c = 'test';
shopifyConfiguration.HIC_ShopifySync__Private_Key_Password__c = 'Test';
shopifyConfiguration.HIC_ShopifySync__Opportunity__c = true;
shopifyConfiguration.HIC_ShopifySync__Order__c = true;
shopifyConfiguration.HIC_ShopifySync__Opportunity_Line_Item__c = true;
shopifyConfiguration.HIC_ShopifySync__Order_Line_Item__c = true;
shopifyConfiguration.HIC_ShopifySync__Account_Record_Type__c = ac.Id;
shopifyConfiguration.HIC_ShopifySync__Inventory_Location__c = true;
shopifyConfiguration.HIC_ShopifySync__Store__c = '123';
configuration.add(shopifyConfiguration);
insert configuration;
Test.startTest();
FetchOrders obj = new FetchOrders('test', true,true,configuration,'123');
DataBase.executeBatch(obj);
Test.stopTest();
system.assert(shopifyConfiguration.Opportunity__c);
}
@istest public static void bothforOppandOrd4(){
Account ac = new Account();
ac.name = 'test';
insert ac;
Opportunity Opp = new Opportunity();
Opp.name = 'Test';
Opp.AccountId = ac.id;
Opp.StageName = 'Closed Won';
Opp.CloseDate = system.today();
Opp.Shopify_Id__c = '618960158784';
insert Opp;
Order ord = new Order();
Ord.EffectiveDate = system.today();
Ord.AccountId = ac.id;
Ord.Shopify_Id__c = '618960158784';
ord.Status = 'Draft';
insert Ord;
List<HIC_ShopifySync__HIC_Configuration__c> configuration = New List<HIC_ShopifySync__HIC_Configuration__c>();
HIC_ShopifySync__HIC_Configuration__c shopifyConfiguration = New HIC_ShopifySync__HIC_Configuration__c();
shopifyConfiguration.Name = 'Default';
shopifyConfiguration.HIC_ShopifySync__Account_Contact__c = true;
shopifyConfiguration.HIC_ShopifySync__Person_Account__c = true;
shopifyConfiguration.HIC_ShopifySync__Default_Account__c = false;
shopifyConfiguration.HIC_ShopifySync__Shopify_URL__c = '123@gmail.com';
shopifyConfiguration.HIC_ShopifySync__API_Key__c = 'test';
shopifyConfiguration.HIC_ShopifySync__Private_Key_Password__c = 'Test';
shopifyConfiguration.HIC_ShopifySync__Opportunity__c = true;
shopifyConfiguration.HIC_ShopifySync__Order__c = true;
shopifyConfiguration.HIC_ShopifySync__Opportunity_Line_Item__c = true;
shopifyConfiguration.HIC_ShopifySync__Order_Line_Item__c = true;
shopifyConfiguration.HIC_ShopifySync__Account_Record_Type__c = ac.Id;
shopifyConfiguration.HIC_ShopifySync__Enable_Draft_Order__c = true;
shopifyConfiguration.HIC_ShopifySync__Store__c = '123';
configuration.add(shopifyConfiguration);
insert configuration;
Test.startTest();
FetchOrders obj = new FetchOrders('test' ,true,true,configuration,'123');
DataBase.executeBatch(obj);
Test.stopTest();
system.assert(shopifyConfiguration.Opportunity__c);
}
@isTest public static void FetchOrderTest1(){
Test.setMock(HttpCalloutMock.class, new MockHttpResponseHIC_ShopifyUtility());
HttpResponse res = CalloutClassforHIC_ShopifyUtility.getInfoFromExternalService();
List<HIC_ShopifySync__HIC_Field_Mapping__c> fieldMapList = new List<HIC_ShopifySync__HIC_Field_Mapping__c>();
Id priceBookId = Test.getStandardPricebookId();
if(priceBookId != null){
fieldMapList.add(CustomSettingRecordInsert.processFieldMappingSobjectWithAllFields('Order','Pricebook2Id',string.valueOf(priceBookId),'',true,false,'REFERENCE','Reference',string.valueOf(priceBookId)));
Boolean multiCurrencyEnabled = Schema.getGlobalDescribe().containsKey('CurrencyType');
if(multiCurrencyEnabled){
fieldMapList.add(CustomSettingRecordInsert.processFieldMappingSobjectWithAllFields('Order','CurrencyISOCODE','USD','',true,false,'PICKLIST','string',''));
}
}
insert fieldMapList;
system.assertEquals(200, res.getStatusCode());
List<HIC_ShopifySync__HIC_Configuration__c> ConList = new List<HIC_ShopifySync__HIC_Configuration__c>();
HIC_ShopifySync__HIC_Configuration__c con = new HIC_ShopifySync__HIC_Configuration__c();
con.name = 'Default';
con.HIC_ShopifySync__Opportunity__c = false;
con.HIC_ShopifySync__Order__c = true;
con.HIC_ShopifySync__Opportunity_Line_Item__c = false;
con.HIC_ShopifySync__Order_Line_Item__c = true;
con.HIC_ShopifySync__Enable_Draft_Order__c = true;
con.HIC_ShopifySync__Store__c = '123';
ConList.add(con);
insert ConList;
Test.startTest();
HIC_ShopifyUtility.fetchDraftOrders(ConList,'123');
Test.stopTest();
}
@isTest public static void FetchOrderTest2(){
Test.setMock(HttpCalloutMock.class, new MockHttpResponseHIC_ShopifyUtility());
HttpResponse res = CalloutClassforHIC_ShopifyUtility.getInfoFromExternalService();
List<HIC_ShopifySync__HIC_Field_Mapping__c> fieldMapList = new List<HIC_ShopifySync__HIC_Field_Mapping__c>();
Id priceBookId = Test.getStandardPricebookId();
if(priceBookId != null){
fieldMapList.add(CustomSettingRecordInsert.processFieldMappingSobjectWithAllFields('Order','Pricebook2Id',string.valueOf(priceBookId),'',true,false,'REFERENCE','Reference',string.valueOf(priceBookId)));
Boolean multiCurrencyEnabled = Schema.getGlobalDescribe().containsKey('CurrencyType');
if(multiCurrencyEnabled){
fieldMapList.add(CustomSettingRecordInsert.processFieldMappingSobjectWithAllFields('Order','CurrencyISOCODE','USD','',true,false,'PICKLIST','string',''));
}
}
insert fieldMapList;
system.assertEquals(200, res.getStatusCode());
List<HIC_ShopifySync__HIC_Configuration__c> ConList = new List<HIC_ShopifySync__HIC_Configuration__c>();
HIC_ShopifySync__HIC_Configuration__c con = new HIC_ShopifySync__HIC_Configuration__c();
con.name = 'Default';
con.HIC_ShopifySync__Opportunity__c = false;
con.HIC_ShopifySync__Order__c = true;
con.HIC_ShopifySync__Opportunity_Line_Item__c = false;
con.HIC_ShopifySync__Order_Line_Item__c = True;
con.HIC_ShopifySync__Store__c = '123';
ConList.add(con);
insert ConList;
Test.startTest();
HIC_ShopifyUtility.fetchDraftOrders(ConList,'123');
Test.stopTest();
}
@isTest public static void FetchOrderTest3(){
Test.setMock(HttpCalloutMock.class, new MockHttpResponseHIC_ShopifyUtility());
HttpResponse res = CalloutClassforHIC_ShopifyUtility.getInfoFromExternalService();
List<HIC_ShopifySync__HIC_Field_Mapping__c> fieldMapList = new List<HIC_ShopifySync__HIC_Field_Mapping__c>();
Id priceBookId = Test.getStandardPricebookId();
if(priceBookId != null){
fieldMapList.add(CustomSettingRecordInsert.processFieldMappingSobjectWithAllFields('Order','Pricebook2Id',string.valueOf(priceBookId),'',true,false,'REFERENCE','Reference',string.valueOf(priceBookId)));
Boolean multiCurrencyEnabled = Schema.getGlobalDescribe().containsKey('CurrencyType');
if(multiCurrencyEnabled){
fieldMapList.add(CustomSettingRecordInsert.processFieldMappingSobjectWithAllFields('Order','CurrencyISOCODE','USD','',true,false,'PICKLIST','string',''));
}
}
insert fieldMapList;
system.assertEquals(200, res.getStatusCode());
List<HIC_ShopifySync__HIC_Configuration__c> ConList = new List<HIC_ShopifySync__HIC_Configuration__c>();
HIC_ShopifySync__HIC_Configuration__c con = new HIC_ShopifySync__HIC_Configuration__c();
con.name = 'Default';
con.HIC_ShopifySync__Opportunity__c = true;
con.HIC_ShopifySync__Order__c = false;
con.HIC_ShopifySync__Opportunity_Line_Item__c = false;
con.HIC_ShopifySync__Order_Line_Item__c = True;
con.HIC_ShopifySync__Store__c = '123';
ConList.add(con);
insert ConList;
Test.startTest();
HIC_ShopifyUtility.fetchDraftOrders(ConList,'123');
Test.stopTest();
}
@isTest public static void FetchOrderTest4(){
Test.setMock(HttpCalloutMock.class, new MockHttpResponseHIC_ShopifyUtility());
HttpResponse res = CalloutClassforHIC_ShopifyUtility.getInfoFromExternalService();
List<HIC_ShopifySync__HIC_Field_Mapping__c> fieldMapList = new List<HIC_ShopifySync__HIC_Field_Mapping__c>();
Id priceBookId = Test.getStandardPricebookId();
if(priceBookId != null){
fieldMapList.add(CustomSettingRecordInsert.processFieldMappingSobjectWithAllFields('Order','Pricebook2Id',string.valueOf(priceBookId),'',true,false,'REFERENCE','Reference',string.valueOf(priceBookId)));
Boolean multiCurrencyEnabled = Schema.getGlobalDescribe().containsKey('CurrencyType');
if(multiCurrencyEnabled){
fieldMapList.add(CustomSettingRecordInsert.processFieldMappingSobjectWithAllFields('Order','CurrencyISOCODE','USD','',true,false,'PICKLIST','string',''));
}
}
insert fieldMapList;
system.assertEquals(200, res.getStatusCode());
List<HIC_ShopifySync__HIC_Configuration__c> ConList = new List<HIC_ShopifySync__HIC_Configuration__c>();
HIC_ShopifySync__HIC_Configuration__c con = new HIC_ShopifySync__HIC_Configuration__c();
con.name = 'Default';
con.HIC_ShopifySync__Opportunity__c = true;
con.HIC_ShopifySync__Order__c = true;
con.HIC_ShopifySync__Opportunity_Line_Item__c = false;
con.HIC_ShopifySync__Order_Line_Item__c = True;
con.HIC_ShopifySync__Store__c = '123';
ConList.add(con);
insert ConList;
Test.startTest();
HIC_ShopifyUtility.fetchDraftOrders(ConList,'123');
Test.stopTest();
}
@isTest public static void FetchOrderTest5(){
Test.setMock(HttpCalloutMock.class, new MockHttpResponseHIC_ShopifyUtility());
HttpResponse res = CalloutClassforHIC_ShopifyUtility.getInfoFromExternalService();
List<HIC_ShopifySync__HIC_Field_Mapping__c> fieldMapList = new List<HIC_ShopifySync__HIC_Field_Mapping__c>();
Id priceBookId = Test.getStandardPricebookId();
if(priceBookId != null){
fieldMapList.add(CustomSettingRecordInsert.processFieldMappingSobjectWithAllFields('Order','Pricebook2Id',string.valueOf(priceBookId),'',true,false,'REFERENCE','Reference',string.valueOf(priceBookId)));
Boolean multiCurrencyEnabled = Schema.getGlobalDescribe().containsKey('CurrencyType');
if(multiCurrencyEnabled){
fieldMapList.add(CustomSettingRecordInsert.processFieldMappingSobjectWithAllFields('Order','CurrencyISOCODE','USD','',true,false,'PICKLIST','string',''));
}
}
insert fieldMapList;
CustomSettingRecordInsert.InsertingWebhook();
system.assertEquals(200, res.getStatusCode());
List<HIC_ShopifySync__HIC_Configuration__c> ConList = new List<HIC_ShopifySync__HIC_Configuration__c>();
HIC_ShopifySync__HIC_Configuration__c con = new HIC_ShopifySync__HIC_Configuration__c();
con.name = 'Default';
con.HIC_ShopifySync__Opportunity__c = false;
con.HIC_ShopifySync__Order__c = true;
con.HIC_ShopifySync__Opportunity_Line_Item__c = true;
con.HIC_ShopifySync__Order_Line_Item__c = True;
con.HIC_ShopifySync__Store__c = '123';
ConList.add(con);
insert ConList;
Test.startTest();
HIC_ShopifyUtility.fetchDraftOrders(ConList,'123');
Test.stopTest();
}
@isTest
static void FetchOrdersTest() {
List<HIC_ShopifySync__HIC_Configuration__c> configurationList = new List<HIC_ShopifySync__HIC_Configuration__c>{
new HIC_ShopifySync__HIC_Configuration__c(
HIC_ShopifySync__API_Key__c = 'Test-AB',
HIC_ShopifySync__Private_Key_Password__c = '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',
HIC_ShopifySync__Shopify_URL__c = 'https://staging-jacuzzi-hot-tubs-ontario.myshopify.com/',
HIC_ShopifySync__Store__c = 'staging-jacuzzi-hot-tubs-ontario',
Name = 'staging-jacuzzi-hot-tubs-ontario')
};
insert configurationList;
Test.startTest();
FetchOrders batch0 = new FetchOrders('', false, true, configurationList, 'staging-jacuzzi-hot-tubs-ontario');
FetchOrders batch1 = new FetchOrders('', false, true, configurationList, 'staging-jacuzzi-hot-tubs-ontario','','');
FetchOrders batch2 = new FetchOrders('', false, true, configurationList, 'staging-jacuzzi-hot-tubs-ontario','','',false);
ID batchJobId = Database.executeBatch(batch1, 1);
Test.stopTest();
}
// ─── NEW TESTS BELOW ────────────────────────────────────────────────────────
/**
* Tests the shopifyResourceName constructor (4th constructor)
* and covers the shopifyResourceName != null path in start() and finish()
*/
@isTest
static void testShopifyResourceNameConstructor() {
Account ac = new Account(Name = 'test');
insert ac;
List<HIC_ShopifySync__HIC_Configuration__c> configuration = new List<HIC_ShopifySync__HIC_Configuration__c>();
HIC_ShopifySync__HIC_Configuration__c cfg = new HIC_ShopifySync__HIC_Configuration__c();
cfg.Name = 'Default';
cfg.HIC_ShopifySync__Store__c = '123';
cfg.HIC_ShopifySync__Shopify_URL__c = 'https://test.myshopify.com/';
cfg.HIC_ShopifySync__API_Key__c = 'testkey';
cfg.HIC_ShopifySync__Private_Key_Password__c = 'testpass';
cfg.HIC_ShopifySync__Opportunity__c = false;
cfg.HIC_ShopifySync__Order__c = true;
cfg.HIC_ShopifySync__Order_Line_Item__c = false;
cfg.HIC_ShopifySync__Opportunity_Line_Item__c = false;
cfg.HIC_ShopifySync__Enable_Draft_Order__c = true;
cfg.HIC_ShopifySync__Draft_Order_Sync__c = false;
cfg.HIC_ShopifySync__Collection__c = false;
cfg.HIC_ShopifySync__Inventory_Location__c = false;
configuration.add(cfg);
insert configuration;
Test.startTest();
// 4th constructor: shopifyResourceName variant
FetchOrders batch = new FetchOrders('', true, 'draft_orders', configuration, '123', '', '');
Database.executeBatch(batch, 1);
Test.stopTest();
system.assertNotEquals(null, batch);
}
/**
* Tests orderBypassFlag = true path
*/
@isTest
static void testOrderBypassFlagTrue() {
Account ac = new Account(Name = 'test');
insert ac;
Order ord = new Order();
ord.EffectiveDate = system.today();
ord.AccountId = ac.id;
ord.Shopify_Id__c = '618960158784';
ord.Status = 'Draft';
insert ord;
List<HIC_ShopifySync__HIC_Configuration__c> configuration = new List<HIC_ShopifySync__HIC_Configuration__c>();
HIC_ShopifySync__HIC_Configuration__c cfg = new HIC_ShopifySync__HIC_Configuration__c();
cfg.Name = 'Default';
cfg.HIC_ShopifySync__Store__c = '123';
cfg.HIC_ShopifySync__Shopify_URL__c = 'https://test.myshopify.com/';
cfg.HIC_ShopifySync__API_Key__c = 'testkey';
cfg.HIC_ShopifySync__Private_Key_Password__c = 'testpass';
cfg.HIC_ShopifySync__Opportunity__c = false;
cfg.HIC_ShopifySync__Order__c = false;
cfg.HIC_ShopifySync__Order_Line_Item__c = true;
cfg.HIC_ShopifySync__Opportunity_Line_Item__c = false;
cfg.HIC_ShopifySync__Enable_Draft_Order__c = false;
cfg.HIC_ShopifySync__Draft_Order_Sync__c = false;
cfg.HIC_ShopifySync__Collection__c = false;
cfg.HIC_ShopifySync__Inventory_Location__c = false;
cfg.HIC_ShopifySync__IsCurrencyChanged__c = true;
cfg.HIC_ShopifySync__Person_Account__c = false;
configuration.add(cfg);
insert configuration;
Test.startTest();
// orderBypassFlag = true → forces OrderIntoOrder path even when Order__c = false
FetchOrders batch = new FetchOrders('', true, true, configuration, '123', '', '', true);
Database.executeBatch(batch, 1);
Test.stopTest();
system.assertNotEquals(null, batch);
}
/**
* Tests updated_at_min and updated_at_max parameters (5-param constructor)
*/
@isTest
static void testUpdatedAtMinMax() {
Account ac = new Account(Name = 'test');
insert ac;
List<HIC_ShopifySync__HIC_Configuration__c> configuration = new List<HIC_ShopifySync__HIC_Configuration__c>();
HIC_ShopifySync__HIC_Configuration__c cfg = new HIC_ShopifySync__HIC_Configuration__c();
cfg.Name = 'Default';
cfg.HIC_ShopifySync__Store__c = '123';
cfg.HIC_ShopifySync__Shopify_URL__c = 'https://test.myshopify.com/';
cfg.HIC_ShopifySync__API_Key__c = 'testkey';
cfg.HIC_ShopifySync__Private_Key_Password__c = 'testpass';
cfg.HIC_ShopifySync__Opportunity__c = true;
cfg.HIC_ShopifySync__Order__c = true;
cfg.HIC_ShopifySync__Order_Line_Item__c = true;
cfg.HIC_ShopifySync__Opportunity_Line_Item__c = true;
cfg.HIC_ShopifySync__Enable_Draft_Order__c = false;
cfg.HIC_ShopifySync__Draft_Order_Sync__c = false;
cfg.HIC_ShopifySync__Collection__c = false;
cfg.HIC_ShopifySync__Inventory_Location__c = false;
cfg.HIC_ShopifySync__Person_Account__c = false;
configuration.add(cfg);
insert configuration;
Test.startTest();
// Order with date range filters
FetchOrders batchOrder = new FetchOrders('', true, true, configuration, '123', '2024-01-01T00:00:00Z', '2024-12-31T23:59:59Z');
Database.executeBatch(batchOrder, 1);
// Draft Order with date range filters
FetchOrders batchDraft = new FetchOrders('', true, false, configuration, '123', '2024-01-01T00:00:00Z', '2024-12-31T23:59:59Z');
Database.executeBatch(batchDraft, 1);
Test.stopTest();
system.assertNotEquals(null, batchOrder);
system.assertNotEquals(null, batchDraft);
}
/**
* Tests B2B path: HIC_ShopifySync__Customer_Email_Domain__c = true
* Covers b2bOrderIdToAccountId / b2bOrderIdToContactId population,
* existing account lookup, new account creation, and contact lookup.
*/
@isTest
static void testB2BPath() {
// Pre-create an account matching expected email domain ('gmail')
Account domainAccount = new Account(Name = 'gmail');
insert domainAccount;
// Pre-create a Contact with a Shopify ID so b2bOrderIdToContactId path is hit
Contact existingContact = new Contact(
LastName = 'TestContact',
AccountId = domainAccount.Id,
HIC_ShopifySync__Shopify_Id__c = 'Business 926016995392'
);
insert existingContact;
List<HIC_ShopifySync__HIC_Configuration__c> configuration = new List<HIC_ShopifySync__HIC_Configuration__c>();
HIC_ShopifySync__HIC_Configuration__c cfg = new HIC_ShopifySync__HIC_Configuration__c();
cfg.Name = 'Default';
cfg.HIC_ShopifySync__Store__c = '123';
cfg.HIC_ShopifySync__Shopify_URL__c = 'https://test.myshopify.com/';
cfg.HIC_ShopifySync__API_Key__c = 'testkey';
cfg.HIC_ShopifySync__Private_Key_Password__c = 'testpass';
cfg.HIC_ShopifySync__Opportunity__c = true;
cfg.HIC_ShopifySync__Order__c = true;
cfg.HIC_ShopifySync__Order_Line_Item__c = true;
cfg.HIC_ShopifySync__Opportunity_Line_Item__c = true;
cfg.HIC_ShopifySync__Enable_Draft_Order__c = false;
cfg.HIC_ShopifySync__Enable_Opportunity_for_SDO__c = false;
cfg.HIC_ShopifySync__Draft_Order_Sync__c = false;
cfg.HIC_ShopifySync__Collection__c = false;
cfg.HIC_ShopifySync__Inventory_Location__c = false;
cfg.HIC_ShopifySync__Person_Account__c = false;
cfg.HIC_ShopifySync__Customer_Email_Domain__c = true; // Enable B2B path
configuration.add(cfg);
insert configuration;
Test.startTest();
// Run for Orders (check = true) via B2B path
FetchOrders batchOrder = new FetchOrders('', true, true, configuration, '123', '', '');
Database.executeBatch(batchOrder, 1);
// Run for Draft Orders (check = false) via B2B path
FetchOrders batchDraft = new FetchOrders('', true, false, configuration, '123', '', '');
Database.executeBatch(batchDraft, 1);
Test.stopTest();
// B2B account created or found for domain 'gmail'
List<Account> accounts = [SELECT Id, Name FROM Account WHERE Name = 'gmail'];
system.assert(!accounts.isEmpty(), 'B2B domain account should exist');
}
/**
* Tests B2B path where no existing account exists for the domain,
* forcing account creation inside the batch.
*/
@isTest
static void testB2BPathNewAccountCreation() {
// Do NOT pre-create an account for domain 'gmail' — batch should create it
List<HIC_ShopifySync__HIC_Configuration__c> configuration = new List<HIC_ShopifySync__HIC_Configuration__c>();
HIC_ShopifySync__HIC_Configuration__c cfg = new HIC_ShopifySync__HIC_Configuration__c();
cfg.Name = 'Default';
cfg.HIC_ShopifySync__Store__c = '123';
cfg.HIC_ShopifySync__Shopify_URL__c = 'https://test.myshopify.com/';
cfg.HIC_ShopifySync__API_Key__c = 'testkey';
cfg.HIC_ShopifySync__Private_Key_Password__c = 'testpass';
cfg.HIC_ShopifySync__Opportunity__c = true;
cfg.HIC_ShopifySync__Order__c = true;
cfg.HIC_ShopifySync__Order_Line_Item__c = false;
cfg.HIC_ShopifySync__Opportunity_Line_Item__c = false;
cfg.HIC_ShopifySync__Enable_Draft_Order__c = false;
cfg.HIC_ShopifySync__Enable_Opportunity_for_SDO__c = false;
cfg.HIC_ShopifySync__Draft_Order_Sync__c = false;
cfg.HIC_ShopifySync__Collection__c = false;
cfg.HIC_ShopifySync__Inventory_Location__c = false;
cfg.HIC_ShopifySync__Person_Account__c = false;
cfg.HIC_ShopifySync__Customer_Email_Domain__c = true;
configuration.add(cfg);
insert configuration;
Test.startTest();
FetchOrders batch = new FetchOrders('', true, true, configuration, '123', '', '');
Database.executeBatch(batch, 1);
Test.stopTest();
List<Account> createdAccounts = [SELECT Id, Name FROM Account WHERE Name = 'gmail'];
system.assert(!createdAccounts.isEmpty(), 'Batch should have created B2B domain account');
}
/**
* Tests the finish() → Draft Order Sync branch
* (check=false, Draft_Order_Sync__c=true)
*/
@isTest
static void testFinishDraftOrderSyncBranch() {
Account ac = new Account(Name = 'test');
insert ac;
List<HIC_ShopifySync__HIC_Configuration__c> configuration = new List<HIC_ShopifySync__HIC_Configuration__c>();
HIC_ShopifySync__HIC_Configuration__c cfg = new HIC_ShopifySync__HIC_Configuration__c();
cfg.Name = 'Default';
cfg.HIC_ShopifySync__Store__c = '123';
cfg.HIC_ShopifySync__Shopify_URL__c = 'https://test.myshopify.com/';
cfg.HIC_ShopifySync__API_Key__c = 'testkey';
cfg.HIC_ShopifySync__Private_Key_Password__c = 'testpass';
cfg.HIC_ShopifySync__Opportunity__c = false;
cfg.HIC_ShopifySync__Order__c = false;
cfg.HIC_ShopifySync__Order_Line_Item__c = false;
cfg.HIC_ShopifySync__Opportunity_Line_Item__c = false;
cfg.HIC_ShopifySync__Enable_Draft_Order__c = true;
cfg.HIC_ShopifySync__Enable_Opportunity_for_SDO__c = false;
cfg.HIC_ShopifySync__Draft_Order_Sync__c = true; // finish → DraftOrder completed branch
cfg.HIC_ShopifySync__Collection__c = false;
cfg.HIC_ShopifySync__Inventory_Location__c = false;
cfg.HIC_ShopifySync__Person_Account__c = false;
configuration.add(cfg);
insert configuration;
Test.startTest();
FetchOrders batch = new FetchOrders('', true, false, configuration, '123', '', '');
Database.executeBatch(batch, 1);
Test.stopTest();
List<HIC_ShopifySync__HIC_Configuration__c> updated = [
SELECT HIC_ShopifySync__DraftOrderBatchCompleted__c
FROM HIC_ShopifySync__HIC_Configuration__c
WHERE HIC_ShopifySync__Store__c = '123'
];
system.assert(!updated.isEmpty());
}
/**
* Tests the finish() → no draft/collection/inventory branch
* (all flags false, check=true → OrderBatchCompleted set true)
*/
@isTest
static void testFinishNoDraftNoCollectionNoInventory() {
Account ac = new Account(Name = 'test');
insert ac;
List<HIC_ShopifySync__HIC_Configuration__c> configuration = new List<HIC_ShopifySync__HIC_Configuration__c>();
HIC_ShopifySync__HIC_Configuration__c cfg = new HIC_ShopifySync__HIC_Configuration__c();
cfg.Name = 'Default';
cfg.HIC_ShopifySync__Store__c = '123';
cfg.HIC_ShopifySync__Shopify_URL__c = 'https://test.myshopify.com/';
cfg.HIC_ShopifySync__API_Key__c = 'testkey';
cfg.HIC_ShopifySync__Private_Key_Password__c = 'testpass';
cfg.HIC_ShopifySync__Opportunity__c = false;
cfg.HIC_ShopifySync__Order__c = true;
cfg.HIC_ShopifySync__Order_Line_Item__c = false;
cfg.HIC_ShopifySync__Opportunity_Line_Item__c = false;
cfg.HIC_ShopifySync__Enable_Draft_Order__c = false;
cfg.HIC_ShopifySync__Enable_Opportunity_for_SDO__c = false;
cfg.HIC_ShopifySync__Draft_Order_Sync__c = false;
cfg.HIC_ShopifySync__Collection__c = false;
cfg.HIC_ShopifySync__Inventory_Location__c = false;
cfg.HIC_ShopifySync__Person_Account__c = false;
cfg.HIC_ShopifySync__IsCurrencyChanged__c = false;
configuration.add(cfg);
insert configuration;
Test.startTest();
FetchOrders batch = new FetchOrders('', true, true, configuration, '123', '', '');
Database.executeBatch(batch, 1);
Test.stopTest();
List<HIC_ShopifySync__HIC_Configuration__c> updated = [
SELECT HIC_ShopifySync__OrderBatchCompleted__c, HIC_ShopifySync__Batch_Is_Processing__c
FROM HIC_ShopifySync__HIC_Configuration__c
WHERE HIC_ShopifySync__Store__c = '123'
];
system.assert(!updated.isEmpty());
}
/**
* Tests Order Fulfillment path (Order_Fulfillment__c = true, check = true)
*/
@isTest
static void testOrderFulfillmentPath() {
Account ac = new Account(Name = 'test');
insert ac;
List<HIC_ShopifySync__HIC_Configuration__c> configuration = new List<HIC_ShopifySync__HIC_Configuration__c>();
HIC_ShopifySync__HIC_Configuration__c cfg = new HIC_ShopifySync__HIC_Configuration__c();
cfg.Name = 'Default';
cfg.HIC_ShopifySync__Store__c = '123';
cfg.HIC_ShopifySync__Shopify_URL__c = 'https://test.myshopify.com/';
cfg.HIC_ShopifySync__API_Key__c = 'testkey';
cfg.HIC_ShopifySync__Private_Key_Password__c = 'testpass';
cfg.HIC_ShopifySync__Opportunity__c = false;
cfg.HIC_ShopifySync__Order__c = true;
cfg.HIC_ShopifySync__Order_Line_Item__c = false;
cfg.HIC_ShopifySync__Opportunity_Line_Item__c = false;
cfg.HIC_ShopifySync__Order_Fulfillment__c = true; // Fulfillment path
cfg.HIC_ShopifySync__Enable_Draft_Order__c = false;
cfg.HIC_ShopifySync__Draft_Order_Sync__c = false;
cfg.HIC_ShopifySync__Collection__c = false;
cfg.HIC_ShopifySync__Inventory_Location__c = false;
cfg.HIC_ShopifySync__Person_Account__c = false;
configuration.add(cfg);
insert configuration;
Test.startTest();
FetchOrders batch = new FetchOrders('', true, true, configuration, '123', '', '');
Database.executeBatch(batch, 1);
Test.stopTest();
system.assertNotEquals(null, batch);
}
/**
* Tests Order_Status_Activated_To_Draft__c = false path
* (activates orders after upsert)
*/
@isTest
static void testOrderStatusActivatedToDraftFalse() {
Account ac = new Account(Name = 'test');
insert ac;
List<HIC_ShopifySync__HIC_Configuration__c> configuration = new List<HIC_ShopifySync__HIC_Configuration__c>();
HIC_ShopifySync__HIC_Configuration__c cfg = new HIC_ShopifySync__HIC_Configuration__c();
cfg.Name = 'Default';
cfg.HIC_ShopifySync__Store__c = '123';
cfg.HIC_ShopifySync__Shopify_URL__c = 'https://test.myshopify.com/';
cfg.HIC_ShopifySync__API_Key__c = 'testkey';
cfg.HIC_ShopifySync__Private_Key_Password__c = 'testpass';
cfg.HIC_ShopifySync__Opportunity__c = false;
cfg.HIC_ShopifySync__Order__c = true;
cfg.HIC_ShopifySync__Order_Line_Item__c = true;
cfg.HIC_ShopifySync__Opportunity_Line_Item__c = false;
cfg.HIC_ShopifySync__Order_Fulfillment__c = false;
cfg.HIC_ShopifySync__Order_Status_Activated_To_Draft__c = false; // triggers Activated status set
cfg.HIC_ShopifySync__Enable_Draft_Order__c = false;
cfg.HIC_ShopifySync__Draft_Order_Sync__c = false;
cfg.HIC_ShopifySync__Collection__c = false;
cfg.HIC_ShopifySync__Inventory_Location__c = false;
cfg.HIC_ShopifySync__Person_Account__c = false;
configuration.add(cfg);
insert configuration;
Test.startTest();
FetchOrders batch = new FetchOrders('', true, true, configuration, '123', '', '');
Database.executeBatch(batch, 1);
Test.stopTest();
system.assertNotEquals(null, batch);
}
/**
* Tests Enable_Opportunity_for_SDO__c path (Draft Order → Opportunity)
*/
@isTest
static void testEnableOpportunityForSDO() {
Account ac = new Account(Name = 'test');
insert ac;
List<HIC_ShopifySync__HIC_Configuration__c> configuration = new List<HIC_ShopifySync__HIC_Configuration__c>();
HIC_ShopifySync__HIC_Configuration__c cfg = new HIC_ShopifySync__HIC_Configuration__c();
cfg.Name = 'Default';
cfg.HIC_ShopifySync__Store__c = '123';
cfg.HIC_ShopifySync__Shopify_URL__c = 'https://test.myshopify.com/';
cfg.HIC_ShopifySync__API_Key__c = 'testkey';
cfg.HIC_ShopifySync__Private_Key_Password__c = 'testpass';
cfg.HIC_ShopifySync__Opportunity__c = false;
cfg.HIC_ShopifySync__Order__c = false;
cfg.HIC_ShopifySync__Order_Line_Item__c = false;
cfg.HIC_ShopifySync__Opportunity_Line_Item__c = false;
cfg.HIC_ShopifySync__Enable_Draft_Order__c = false;
cfg.HIC_ShopifySync__Enable_Opportunity_for_SDO__c = true; // Draft Order → Opportunity
cfg.HIC_ShopifySync__Draft_Order_Sync__c = false;
cfg.HIC_ShopifySync__Collection__c = false;
cfg.HIC_ShopifySync__Inventory_Location__c = false;
cfg.HIC_ShopifySync__Person_Account__c = false;
configuration.add(cfg);
insert configuration;
Test.startTest();
FetchOrders batch = new FetchOrders('', true, false, configuration, '123', '', '');
Database.executeBatch(batch, 1);
Test.stopTest();
system.assertNotEquals(null, batch);
}
/**
* Tests Person Account path (Person_Account__c = true)
* with a Shopify customer that does NOT already have a 'Person' prefix.
*/
@isTest
static void testPersonAccountPath() {
Account ac = new Account(Name = 'test');
insert ac;
List<HIC_ShopifySync__HIC_Configuration__c> configuration = new List<HIC_ShopifySync__HIC_Configuration__c>();
HIC_ShopifySync__HIC_Configuration__c cfg = new HIC_ShopifySync__HIC_Configuration__c();
cfg.Name = 'Default';
cfg.HIC_ShopifySync__Store__c = '123';
cfg.HIC_ShopifySync__Shopify_URL__c = 'https://test.myshopify.com/';
cfg.HIC_ShopifySync__API_Key__c = 'testkey';
cfg.HIC_ShopifySync__Private_Key_Password__c = 'testpass';
cfg.HIC_ShopifySync__Opportunity__c = true;
cfg.HIC_ShopifySync__Order__c = true;
cfg.HIC_ShopifySync__Order_Line_Item__c = false;
cfg.HIC_ShopifySync__Opportunity_Line_Item__c = false;
cfg.HIC_ShopifySync__Enable_Draft_Order__c = false;
cfg.HIC_ShopifySync__Enable_Opportunity_for_SDO__c = false;
cfg.HIC_ShopifySync__Draft_Order_Sync__c = false;
cfg.HIC_ShopifySync__Collection__c = false;
cfg.HIC_ShopifySync__Inventory_Location__c = false;
cfg.HIC_ShopifySync__Person_Account__c = true; // Person Account path
configuration.add(cfg);
insert configuration;
Test.startTest();
FetchOrders batch = new FetchOrders('', true, true, configuration, '123', '', '');
Database.executeBatch(batch, 1);
Test.stopTest();
system.assertNotEquals(null, batch);
}
}