virtual CartExtension.CartCalculateExecutorMock

Mock executor for the various calculators within Cart Calculate API. Should be used only for tests.

Constructors 

global CartCalculateExecutorMock() 


Methods 

global virtual void calculate(CartCalculateOrchestratorRequest request) 

This method should be overridden to mock the default Cart Calculate Orchestrator.

Example 

1public class CartCalculateCallsSuper extends CartExtension.CartCalculate {
2     public CartCalculateCallsSuper(){}
3     public CartCalculateCallsSuper(CartExtension.CartCalculateExecutorMock mockExecutor) {
4         super(mockExecutor);
5     }
6     public override void calculate(CartExtension.CartCalculateOrchestratorRequest request) {
7         super.calculate(request);
8     }
9 }
10 public class MockDefaultOrchestratorExecutor extends CartExtension.CartCalculateExecutorMock {
11      public MockDefaultOrchestratorExecutor() {}
12      public override void calculate(CartExtension.CartCalculateOrchestratorRequest request) {
13          CartExtension.Cart cart = request.getCart();
14          cart.setName(cart.getName() + ', OrchestratedByDefault');
15      }
16 }
17 public static void testCanMockDefaultOrchestrator() {
18     // Arrange
19     CartExtension.Cart cart = CartExtension.CartTestUtil.createCart();
20     CartCalculateCallsSuper cartCalculateCallsSuper = new CartCalculateCallsSuper(new MockDefaultOrchestratorExecutor());
21     // Act
22     Test.startTest();
23     cartCalculateCallsSuper.calculate(new CartExtension.CartCalculateOrchestratorRequest(
24                                                           cart,
25                                                           new CartExtension.BuyerActionsMock(cart),
26                                                           CartExtension.OptionalBuyerActionDetails.empty()));
27     Test.stopTest();
28     // Assert
29     Assert.areEqual('My Cart, OrchestratedByDefault', cart.getName());
30 }

global virtual void prices(CartCalculateCalculatorRequest request) 

This method should be overridden to mock the price calculations from the Orchestrator.

Example 

1public class CartCalculateCallsPricing extends CartExtension.CartCalculate {
2    public CartCalculateCallsPricing(){}
3    public CartCalculateCallsPricing(CartExtension.CartCalculateExecutorMock mockExecutor) {
4        super(mockExecutor);
5    }
6    public override void calculate(CartExtension.CartCalculateOrchestratorRequest request) {
7        prices(new CartExtension.CartCalculateCalculatorRequest(request.getCart(), request.getOptionalBuyerActionDetails()));
8    }
9}
10public class MockPricingCalculationsExecutor extends CartExtension.CartCalculateExecutorMock {
11    public MockPricingCalculationsExecutor() {}
12    public override void prices(CartExtension.CartCalculateCalculatorRequest request) {
13        CartExtension.Cart cart = request.getCart();
14        cart.setName(cart.getName() + ', pricesRecalculated');
15    }
16}
17public static void testCanMockPricingWhenOrchestratorUnderTest() {
18    // Arrange
19    CartExtension.Cart cart = CartExtension.CartTestUtil.createCart();
20    CartCalculateCallsPricing orchestrator = new CartCalculateCallsPricing(new MockPricingCalculationsExecutor());
21    // Act
22    Test.startTest();
23    orchestrator.calculate(new CartExtension.CartCalculateOrchestratorRequest(
24                                                                  cart,
25                                                                  new CartExtension.BuyerActionsMock(cart),
26                                                                  CartExtension.OptionalBuyerActionDetails.empty()));
27    Test.stopTest();
28    // Assert
29    Assert.areEqual('My Cart, pricesRecalculated', cart.getName());
30}

global virtual void defaultPrices(CartCalculateCalculatorRequest request) 

This method should be overridden to mock the default Price calculator.

Example 

1public class PricingCalculatorCallsSuper extends CartExtension.PricingCartCalculator {
2     public PricingCalculatorCallsSuper() {}
3     public PricingCalculatorCallsSuper(CartExtension.CartCalculateExecutorMock mockExecutor) {
4         super(mockExecutor);
5     }
6     public override void calculate(CartExtension.CartCalculateCalculatorRequest request) {
7         super.calculate(request);
8     }
9 }
10 public class MockDefaultPricingCalculatorExecutor extends CartExtension.CartCalculateExecutorMock {
11     public MockDefaultPricingCalculatorExecutor() {}
12     public override void defaultPrices(CartExtension.CartCalculateCalculatorRequest request) {
13         CartExtension.Cart cart = request.getCart();
14         cart.setName(cart.getName() + ', pricesRecalculated');
15     }
16 }
17 public static void testCanMockDefaultPricingWhenCalculatorUnderTest() {
18     // Arrange
19     CartExtension.Cart cart = CartExtension.CartTestUtil.createCart();
20     PricingCalculatorCallsSuper calculator = new PricingCalculatorCallsSuper(new MockDefaultPricingCalculatorExecutor());
21     // Act
22     Test.startTest();
23     calculator.calculate(new CartExtension.CartCalculateCalculatorRequest(cart, CartExtension.OptionalBuyerActionDetails.empty()));
24     Test.stopTest();
25     // Assert
26     Assert.areEqual('My Cart, pricesRecalculated', cart.getName());
27 }
28// Mock default Calculator when custom Cart Calculate Orchestrator in under test
29public class CartCalculateCallsPricing extends CartExtension.CartCalculate {
30    public CartCalculateCallsPricing(){}
31    public CartCalculateCallsPricing(CartExtension.CartCalculateExecutorMock mockExecutor) {
32        super(mockExecutor);
33    }
34    public override void calculate(CartExtension.CartCalculateOrchestratorRequest request) {
35        prices(new CartExtension.CartCalculateCalculatorRequest(request.getCart(), request.getOptionalBuyerActionDetails()));
36    }
37}
38public static void testCanMockDefaultPricingWhenOrchestratorUnderTest() {
39    // Arrange
40    CartExtension.Cart cart = createCart();
41    // Register Apex class by creating RegisteredExternalService and link to the WebStore using StoreIntegratedService
42    // Make sure that WebStore under test has OptionsCartCalculateEnabled=true
43    setUpExtension(cart.getWebStoreId(), 'Commerce_Domain_Pricing_CartCalculator', 'PricingCalculatorCallsSuper', cart);
44    CartCalculateCallsPricing orchestrator = new CartCalculateCallsPricing(new MockDefaultPricingCalculatorExecutor());
45    // Act
46    Test.startTest();
47    orchestrator.calculate(new CartExtension.CartCalculateOrchestratorRequest(
48                                                                  cart,
49                                                                  new CartExtension.BuyerActionsMock(cart),
50                                                                  CartExtension.OptionalBuyerActionDetails.empty()));
51    Test.stopTest();
52    // Assert
53    Assert.areEqual('My Cart, pricesRecalculated', cart.getName());
54}

global virtual void promotions(CartCalculateCalculatorRequest request) 

This method should be overridden to mock the promotions calculations from the Orchestrator. See prices() for usage example.

global virtual void defaultPromotions(CartCalculateCalculatorRequest request) 

This method should be overridden to mock the default Promotions calculator. See defaultPrices() for usage example.

global virtual void inventory(CartCalculateCalculatorRequest request) 

This method should be overridden to mock the inventory calculations from the Orchestrator. See prices() for usage example.

global virtual void defaultInventory(CartCalculateCalculatorRequest request) 

This method should be overridden to mock the default Inventory calculator. See defaultPrices() for usage example.

global virtual void shipping(CartCalculateCalculatorRequest request) 

This method should be overridden to mock the shipping calculations from the Orchestrator. See prices() for usage example.

global virtual void defaultShipping(CartCalculateCalculatorRequest request) 

This method should be overridden to mock the default Shipping calculator. See defaultPrices() for usage example.

global virtual void tax(CartCalculateCalculatorRequest request) 

This method should be overridden to mock the tax calculations from the Orchestrator. See prices() for usage example.

global virtual void defaultTax(CartCalculateCalculatorRequest request) 

This method should be overridden to mock the default Tax calculator. See defaultPrices() for usage example.

global virtual void postShipping(CartCalculateCalculatorRequest request) 

This method should be overridden to mock the post shipping calculations from the Orchestrator. See prices() for usage example.


Developer Preview

This release is in preview. Features described in this document don't become generally available until the latest general availability date that Salesforce announces for this release. Before then, and where features are noted as beta, pilot, or developer preview, we can't guarantee general availability within any particular time frame or at all. Make your purchase decisions only on the basis of generally available products and features.

DID THIS ARTICLE SOLVE YOUR ISSUE?
Let us know so we can improve!