Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
PlaceOrderWithPaypalStep.php
Go to the documentation of this file.
1 <?php
7 
10 use Magento\Checkout\Test\Page\CheckoutOnepage;
11 use Magento\Checkout\Test\Page\CheckoutOnepageSuccess;
12 use Magento\Mtf\Fixture\FixtureFactory;
13 use Magento\Mtf\TestStep\TestStepInterface;
15 
19 class PlaceOrderWithPaypalStep implements TestStepInterface
20 {
26  private $checkoutOnepage;
27 
33  private $assertGrandTotalOrderReview;
34 
40  private $assertBillingAddressAbsentInPayment;
41 
47  private $checkoutOnepageSuccess;
48 
54  private $prices;
55 
61  private $fixtureFactory;
62 
68  private $products;
69 
75  private $order;
76 
87  public function __construct(
88  CheckoutOnepage $checkoutOnepage,
89  AssertGrandTotalOrderReview $assertGrandTotalOrderReview,
90  AssertBillingAddressAbsentInPayment $assertBillingAddressAbsentInPayment,
91  CheckoutOnepageSuccess $checkoutOnepageSuccess,
92  FixtureFactory $fixtureFactory,
93  array $products,
94  array $prices = [],
95  OrderInjectable $order = null
96  ) {
97  $this->checkoutOnepage = $checkoutOnepage;
98  $this->assertGrandTotalOrderReview = $assertGrandTotalOrderReview;
99  $this->assertBillingAddressAbsentInPayment = $assertBillingAddressAbsentInPayment;
100  $this->checkoutOnepageSuccess = $checkoutOnepageSuccess;
101  $this->fixtureFactory = $fixtureFactory;
102  $this->products = $products;
103  $this->prices = $prices;
104  $this->order = $order;
105  }
106 
112  public function run()
113  {
114  if (isset($this->prices['grandTotal'])) {
115  $this->assertGrandTotalOrderReview->processAssert($this->checkoutOnepage, $this->prices['grandTotal']);
116  }
117 
118  $this->assertBillingAddressAbsentInPayment->processAssert($this->checkoutOnepage);
119 
120  $parentWindow = $this->checkoutOnepage->getPaymentBlock()
121  ->getSelectedPaymentMethodBlock()
122  ->clickPayWithPaypal();
123  $this->checkoutOnepage->getBraintreePaypalBlock()->process($parentWindow);
124  $data = [
125  'entity_id' => ['products' => $this->products]
126  ];
127  $orderData = $this->order !== null ? $this->order->getData() : [];
128  $order = $this->fixtureFactory->createByCode(
129  'orderInjectable',
130  ['data' => array_merge($data, $orderData)]
131  );
132 
133  return [
134  'orderId' => $this->checkoutOnepageSuccess->getSuccessBlock()->getGuestOrderId(),
135  'order' => $order
136  ];
137  }
138 }
__construct(CheckoutOnepage $checkoutOnepage, AssertGrandTotalOrderReview $assertGrandTotalOrderReview, AssertBillingAddressAbsentInPayment $assertBillingAddressAbsentInPayment, CheckoutOnepageSuccess $checkoutOnepageSuccess, FixtureFactory $fixtureFactory, array $products, array $prices=[], OrderInjectable $order=null)