Shipment Construction
- 02 Nov 2023
- 1 Minute to read
- Print
- DarkLight
Shipment Construction
- Updated on 02 Nov 2023
- 1 Minute to read
- Print
- DarkLight
Article summary
Did you find this summary helpful?
Thank you for your feedback
Example
ExampleShipmentsConstructor
global class ExampleShipmentsConstructor extends welisacommerce.DefaultShipmentsConstructor {
//override the default constructor to create new shipments
//based on the shopping cart and its items
global override List<welisacommerce.ShipmentData> doConstruct(welisacommerce.ConstructShipmentsContext context) {
//Create two example shipments
welisacommerce.ShipmentData shipment1 = new welisacommerce.ShipmentData();
shipment1.record = new welisacommerce__Shipment__c(
Name = 'Example shipment 1');
shipment1.items = new List<welisacommerce.ShoppingCartData.Item> { context.shoppingCart.items[0] };
welisacommerce.ShipmentData shipment2 = new welisacommerce.ShipmentData();
shipment2.record = new welisacommerce__Shipment__c(
Name = 'Example shipment 2');
shipment2.items = new List<welisacommerce.ShoppingCartData.Item> { context.shoppingCart.items[1] };
return new List<welisacommerce.ShipmentData> { shipment1, shipment2 };
}
global override void populateDefaultValues(welisacommerce.ShipmentData shipment) {
//optional override to implement custom logic for populating default shipment values
shipment.record.welisacommerce__Delivery_Method__c = 'Shipping';
shipment.record.welisacommerce__Shipping_City__c = 'Default City';
shipment.record.welisacommerce__Shipping_Country__c = 'US';
shipment.record.welisacommerce__Shipping_Postal_Code__c = '12345';
shipment.record.welisacommerce__Shipping_State__c = 'US-AL';
shipment.record.welisacommerce__Shipping_Street__c = 'Default Street';
}
}
ExampleShipmentsConstructorTest
@IsTest
private class ExampleShipmentsConstructorTest {
@IsTest
private static void itShouldSetShipmentNameDuringConstruction() {
//GIVEN
welisacommerce.ConstructShipmentsContext context = generateContext();
//WHEN
Test.startTest();
List<welisacommerce.ShipmentData> constructedShipments = new ExampleShipmentsConstructor().doConstruct(context);
Test.stopTest();
//THEN
Assert.isNotNull(constructedShipments[0].record.Name);
Assert.isNotNull(constructedShipments[1].record.Name);
}
@IsTest
private static void itShouldAssignAShoppingCartItemPerShipment() {
//GIVEN
welisacommerce.ConstructShipmentsContext context = generateContext();
//WHEN
Test.startTest();
List<welisacommerce.ShipmentData> constructedShipments = new ExampleShipmentsConstructor().doConstruct(context);
Test.stopTest();
//THEN
Assert.areEqual(constructedShipments[0].items[0], context.shoppingCart.items[0]);
Assert.areEqual(constructedShipments[1].items[0], context.shoppingCart.items[1]);
}
@IsTest
private static void itShouldPopulateDefaultValues() {
//GIVEN
welisacommerce.ShipmentData shipmentData = generateShipmentData();
//WHEN
Test.startTest();
new ExampleShipmentsConstructor().populateDefaultValues(shipmentData);
Test.stopTest();
//THEN
Assert.isNotNull(shipmentData.record.welisacommerce__Delivery_Method__c);
Assert.isNotNull(shipmentData.record.welisacommerce__Shipping_City__c);
Assert.isNotNull(shipmentData.record.welisacommerce__Shipping_Country__c);
Assert.isNotNull(shipmentData.record.welisacommerce__Shipping_Postal_Code__c);
Assert.isNotNull(shipmentData.record.welisacommerce__Shipping_State__c);
Assert.isNotNull(shipmentData.record.welisacommerce__Shipping_Street__c);
}
private static welisacommerce.ShipmentData generateShipmentData() {
welisacommerce.ShipmentData shipmentData = new welisacommerce.ShipmentData();
shipmentData.record = new welisacommerce__Shipment__c(
Name = 'Example Shipment 1'
);
return shipmentData;
}
private static welisacommerce.ConstructShipmentsContext generateContext() {
welisacommerce.ConstructShipmentsContext context = new welisacommerce.ConstructShipmentsContext();
context.shoppingCart = new welisacommerce.ShoppingCartData();
context.shoppingCart.record = new welisacommerce__Shopping_Cart__c(
Id = generateId(welisacommerce__Shopping_Cart__c.SObjectType)
);
welisacommerce.ShoppingCartData.Item item1 = new welisacommerce.ShoppingCartData.Item();
item1.record = new welisacommerce__Shopping_Cart_Item__c(
Id = generateId(welisacommerce__Shopping_Cart_Item__c.SObjectType)
);
welisacommerce.ShoppingCartData.Item item2 = new welisacommerce.ShoppingCartData.Item();
item2.record = new welisacommerce__Shopping_Cart_Item__c(
Id = generateId(welisacommerce__Shopping_Cart_Item__c.SObjectType)
);
context.shoppingCart.items = new List<welisacommerce.ShoppingCartData.Item> { item1, item2 };
return context;
}
private static Integer fakeIdCount = 0;
/**
* Generate a fake Salesforce Id for the given SObjectType
*/
private static Id generateId(Schema.SObjectType sobjectType)
{
String keyPrefix = sobjectType.getDescribe().getKeyPrefix();
fakeIdCount++;
String fakeIdPrefix = ('000000000000').substring(0, 12 - String.valueOf(fakeIdCount).length());
return Id.valueOf(keyPrefix + fakeIdPrefix + fakeIdCount);
}
}