Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
UpdateCustomOrderStatusTest.php
Go to the documentation of this file.
1 <?php
8 
10 use Magento\Sales\Test\Fixture\OrderStatus;
11 use Magento\Sales\Test\Page\Adminhtml\OrderIndex;
12 use Magento\Sales\Test\Page\Adminhtml\OrderStatusEdit;
13 use Magento\Sales\Test\Page\Adminhtml\OrderStatusIndex;
14 use Magento\Mtf\Fixture\FixtureFactory;
15 use Magento\Mtf\TestCase\Injectable;
16 
33 class UpdateCustomOrderStatusTest extends Injectable
34 {
35  /* tags */
36  const MVP = 'yes';
37  /* end tags */
38 
44  protected $orderStatusIndex;
45 
51  protected $orderStatusEdit;
52 
58  protected $orderIndex;
59 
65  protected $orderStatus;
66 
73 
79  protected $order;
80 
89  public function __inject(
90  OrderStatusIndex $orderStatusIndex,
91  OrderStatusEdit $orderStatusEdit,
92  OrderIndex $orderIndex
93  ) {
94  $this->orderStatusIndex = $orderStatusIndex;
95  $this->orderStatusEdit = $orderStatusEdit;
96  $this->orderIndex = $orderIndex;
97  }
98 
109  public function test(
110  OrderStatus $orderStatusInitial,
111  OrderStatus $orderStatus,
112  OrderInjectable $order,
113  FixtureFactory $fixtureFactory,
114  $orderExist
115  ) {
116  // Preconditions:
117  $orderStatusInitial->persist();
118  if ($orderExist == 'Yes') {
119  $config = $fixtureFactory->createByCode('configData', [
120  'dataset' => 'checkmo_custom_new_order_status',
121  'data' => ['payment/checkmo/order_status' => ['value' => $orderStatusInitial->getStatus()]]
122  ]);
123  $config->persist();
124  $order->persist();
125  }
126  // Steps:
127  $this->orderStatusIndex->open();
128  $this->orderStatusIndex->getOrderStatusGrid()->searchAndOpen(['label' => $orderStatusInitial->getLabel()]);
129  $this->orderStatusEdit->getOrderStatusForm()->fill($orderStatus);
130  $this->orderStatusEdit->getFormPageActions()->save();
131 
132  // Configuring orderStatus for asserts.
133  $orderStatus = $fixtureFactory->createByCode(
134  'orderStatus',
135  ['data' => array_merge($orderStatusInitial->getData(), $orderStatus->getData())]
136  );
137 
138  // Prepare data for tear down
139  $this->orderStatus = $orderStatus;
140  $this->orderStatusInitial = $orderStatusInitial;
141  $this->order = $order;
142 
143  return [
144  'orderStatus' => $orderStatus,
145  'status' => $orderStatus->getLabel(),
146  'customer' => $order->getDataFieldConfig('customer_id')['source']->getCustomer()
147  ];
148  }
149 
155  public function tearDown()
156  {
157  if ($this->order->hasData('id')) {
158  $this->orderIndex->open()->getSalesOrderGrid()->massaction([['id' => $this->order->getId()]], 'Cancel');
159  $filter = ['label' => $this->orderStatus->getLabel(), 'status' => $this->orderStatusInitial->getStatus()];
160  $this->orderStatusIndex->open()->getOrderStatusGrid()->searchAndUnassign($filter);
161  $this->objectManager->create(
162  \Magento\Config\Test\TestStep\SetupConfigurationStep::class,
163  ['configData' => 'checkmo_custom_new_order_status_rollback']
164  )->run();
165  }
166  }
167 }
$config
Definition: fraud_order.php:17
test(OrderStatus $orderStatusInitial, OrderStatus $orderStatus, OrderInjectable $order, FixtureFactory $fixtureFactory, $orderExist)
__inject(OrderStatusIndex $orderStatusIndex, OrderStatusEdit $orderStatusEdit, OrderIndex $orderIndex)