Developer Preview
Let us know so we can improve!
Mock executor for the various calculators within Cart Calculate API. Should be used only for tests.
This method should be overridden to mock the default Cart Calculate Orchestrator.
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 }This method should be overridden to mock the price calculations from the Orchestrator.
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}This method should be overridden to mock the default Price calculator.
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}This method should be overridden to mock the promotions calculations from the Orchestrator. See prices() for usage example.
This method should be overridden to mock the default Promotions calculator. See defaultPrices() for usage example.
This method should be overridden to mock the inventory calculations from the Orchestrator. See prices() for usage example.
This method should be overridden to mock the default Inventory calculator. See defaultPrices() for usage example.
This method should be overridden to mock the shipping calculations from the Orchestrator. See prices() for usage example.
This method should be overridden to mock the default Shipping calculator. See defaultPrices() for usage example.
This method should be overridden to mock the tax calculations from the Orchestrator. See prices() for usage example.
This method should be overridden to mock the default Tax calculator. See defaultPrices() for usage example.
This method should be overridden to mock the post shipping calculations from the Orchestrator. See prices() for usage example.
Developer Preview