Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
AbstractAssertOrderTaxOnBackend.php
Go to the documentation of this file.
1 <?php
8 
9 use Magento\Mtf\Constraint\AbstractConstraint;
10 use Magento\Sales\Test\Page\Adminhtml\SalesOrderView;
11 use Magento\Sales\Test\Page\Adminhtml\OrderIndex;
12 use Magento\Sales\Test\Page\Adminhtml\OrderInvoiceNew;
13 use Magento\Sales\Test\Page\Adminhtml\OrderCreditMemoNew;
14 use Magento\Mtf\Fixture\InjectableFixture;
15 
19 abstract class AbstractAssertOrderTaxOnBackend extends AbstractConstraint
20 {
26  protected $salesOrderView;
27 
33  protected $orderInvoiceNew;
34 
41 
47  protected $severeness = 'high';
48 
55  abstract protected function getOrderTotals($actualPrices);
56 
63  abstract protected function getInvoiceNewTotals($actualPrices);
64 
71  abstract protected function getCreditMemoNewTotals($actualPrices);
72 
84  public function processAssert(
85  array $prices,
86  InjectableFixture $product,
87  OrderIndex $orderIndex,
88  SalesOrderView $salesOrderView,
89  OrderInvoiceNew $orderInvoiceNew,
90  OrderCreditMemoNew $orderCreditMemoNew
91  ) {
92  $this->salesOrderView = $salesOrderView;
93  $this->orderInvoiceNew = $orderInvoiceNew;
94  $this->orderCreditMemoNew = $orderCreditMemoNew;
95  $orderIndex->open();
96  $orderIndex->getSalesOrderGrid()->openFirstRow();
97  //Check prices on order page
98  $actualPrices = [];
99  $actualPrices = $this->getOrderPrices($actualPrices, $product);
100  $actualPrices = $this->getOrderTotals($actualPrices);
101  $prices = $this->preparePrices($prices);
102  $message = 'Prices on order view page should be equal to defined in dataset.';
103  \PHPUnit\Framework\Assert::assertEquals($prices, array_filter($actualPrices), $message);
104  $salesOrderView->getPageActions()->invoice();
105  //Check prices on invoice creation page
106  $actualPrices = [];
107  $actualPrices = $this->getInvoiceNewPrices($actualPrices, $product);
108  $actualPrices = $this->getInvoiceNewTotals($actualPrices);
109  $message = 'Prices on invoice new page should be equal to defined in dataset.';
110  \PHPUnit\Framework\Assert::assertEquals($prices, array_filter($actualPrices), $message);
111  $orderInvoiceNew->getTotalsBlock()->submit();
112  //Check prices after invoice on order page
113  $actualPrices = [];
114  $actualPrices = $this->getOrderPrices($actualPrices, $product);
115  $actualPrices = $this->getOrderTotals($actualPrices);
116  $message = 'Prices on invoice page should be equal to defined in dataset.';
117  \PHPUnit\Framework\Assert::assertEquals($prices, array_filter($actualPrices), $message);
118  $salesOrderView->getPageActions()->orderCreditMemo();
119  //Check prices on credit memo creation page
120  $actualPrices = [];
121  $actualPrices = $this->getCreditMemoNewPrices($actualPrices, $product);
122  $actualPrices = $this->getCreditMemoNewTotals($actualPrices);
123  $message = 'Prices on credit memo new page should be equal to defined in dataset.';
124  \PHPUnit\Framework\Assert::assertEquals(
125  array_diff_key($prices, ['shipping_excl_tax' => null, 'shipping_incl_tax' => null]),
126  array_filter($actualPrices),
127  $message
128  );
129  $orderCreditMemoNew->getFormBlock()->submit();
130  //Check prices after refund on order page
131  $actualPrices = [];
132  $actualPrices = $this->getOrderPrices($actualPrices, $product);
133  $actualPrices = $this->getOrderTotals($actualPrices);
134  $message = 'Prices on credit memo page should be equal to defined in dataset.';
135  \PHPUnit\Framework\Assert::assertEquals($prices, array_filter($actualPrices), $message);
136  }
137 
144  protected function preparePrices($prices)
145  {
146  $deletePrices = [
147  'category_price',
148  'category_special_price',
149  'category_price_excl_tax',
150  'category_price_incl_tax',
151  'product_view_price',
152  'product_view_special_price',
153  'product_view_price_excl_tax',
154  'product_view_price_incl_tax'
155  ];
156  foreach ($deletePrices as $key) {
157  if (array_key_exists($key, $prices)) {
158  unset($prices[$key]);
159  }
160  }
161 
162  return $prices;
163  }
164 
172  public function getOrderPrices($actualPrices, InjectableFixture $product)
173  {
174  $viewBlock = $this->salesOrderView->getItemsOrderedBlock();
175  $actualPrices['cart_item_price_excl_tax'] = $viewBlock->getItemPriceExclTax($product->getName());
176  $actualPrices['cart_item_price_incl_tax'] = $viewBlock->getItemPriceInclTax($product->getName());
177  $actualPrices['cart_item_subtotal_excl_tax'] = $viewBlock->getItemSubExclTax($product->getName());
178  $actualPrices['cart_item_subtotal_incl_tax'] = $viewBlock->getItemSubInclTax($product->getName());
179  return $actualPrices;
180  }
181 
189  public function getInvoiceNewPrices($actualPrices, InjectableFixture $product)
190  {
191  $productBlock = $this->orderInvoiceNew->getFormBlock()->getItemsBlock()->getItemProductBlock($product);
192  $actualPrices['cart_item_price_excl_tax'] = $productBlock->getItemPriceExclTax();
193  $actualPrices['cart_item_price_incl_tax'] = $productBlock->getItemPriceInclTax();
194  $actualPrices['cart_item_subtotal_excl_tax'] = $productBlock->getItemSubExclTax();
195  $actualPrices['cart_item_subtotal_incl_tax'] = $productBlock->getItemSubInclTax();
196  return $actualPrices;
197  }
198 
206  public function getCreditMemoNewPrices($actualPrices, InjectableFixture $product)
207  {
208  $productBlock = $this->orderCreditMemoNew->getFormBlock()->getItemsBlock()->getItemProductBlock($product);
209  $actualPrices['cart_item_price_excl_tax'] = $productBlock->getItemPriceExclTax();
210  $actualPrices['cart_item_price_incl_tax'] = $productBlock->getItemPriceInclTax();
211  $actualPrices['cart_item_subtotal_excl_tax'] = $productBlock->getItemSubExclTax();
212  $actualPrices['cart_item_subtotal_incl_tax'] = $productBlock->getItemSubInclTax();
213  return $actualPrices;
214  }
215 
221  public function toString()
222  {
223  return 'Prices on backend after order creation is correct.';
224  }
225 }
$message
processAssert(array $prices, InjectableFixture $product, OrderIndex $orderIndex, SalesOrderView $salesOrderView, OrderInvoiceNew $orderInvoiceNew, OrderCreditMemoNew $orderCreditMemoNew)