/**
  * Run Unassign Custom OrderStatus test.
  *
  * @param OrderStatus $orderStatus
  * @return void
  */
 public function test(OrderStatus $orderStatus)
 {
     // Preconditions:
     $orderStatus->persist();
     // Steps:
     $orderStatusLabel = $orderStatus->getLabel();
     $this->orderStatusIndex->open();
     $this->orderStatusIndex->getOrderStatusGrid()->searchAndUnassign(['label' => $orderStatusLabel]);
 }
 /**
  * Run Update Custom OrderStatus Test.
  *
  * @param OrderStatus $orderStatusInitial
  * @param OrderStatus $orderStatus
  * @param OrderInjectable $order
  * @param FixtureFactory $fixtureFactory
  * @param string $orderExist
  * @return array
  */
 public function test(OrderStatus $orderStatusInitial, OrderStatus $orderStatus, OrderInjectable $order, FixtureFactory $fixtureFactory, $orderExist)
 {
     // Preconditions:
     $orderStatusInitial->persist();
     if ($orderExist == 'Yes') {
         $config = $fixtureFactory->createByCode('configData', ['dataset' => 'checkmo_custom_new_order_status', 'data' => ['payment/checkmo/order_status' => ['value' => $orderStatusInitial->getStatus()]]]);
         $config->persist();
         $order->persist();
     }
     // Steps:
     $this->orderStatusIndex->open();
     $this->orderStatusIndex->getOrderStatusGrid()->searchAndOpen(['label' => $orderStatusInitial->getLabel()]);
     $this->orderStatusEdit->getOrderStatusForm()->fill($orderStatus);
     $this->orderStatusEdit->getFormPageActions()->save();
     // Configuring orderStatus for asserts.
     $orderStatus = $fixtureFactory->createByCode('orderStatus', ['data' => array_merge($orderStatusInitial->getData(), $orderStatus->getData())]);
     // Prepare data for tear down
     $this->orderStatus = $orderStatus;
     $this->orderStatusInitial = $orderStatusInitial;
     $this->order = $order;
     return ['orderStatus' => $orderStatus, 'status' => $orderStatus->getLabel(), 'customer' => $order->getDataFieldConfig('customer_id')['source']->getCustomer()];
 }
 /**
  * Run Assign Custom OrderStatus.
  *
  * @param OrderStatus $orderStatus
  * @param OrderInjectable $order
  * @param array $orderStatusState
  * @param AssertOrderStatusSuccessAssignMessage $assertion
  * @return array
  */
 public function test(OrderStatus $orderStatus, OrderInjectable $order, array $orderStatusState, AssertOrderStatusSuccessAssignMessage $assertion)
 {
     // Preconditions:
     $orderStatus->persist();
     /** @var OrderStatus $orderStatus */
     $orderStatus = $this->fixtureFactory->createByCode('orderStatus', ['data' => array_merge($orderStatus->getData(), $orderStatusState)]);
     $this->orderStatus = $orderStatus;
     // Steps:
     $this->orderStatusIndex->open();
     $this->orderStatusIndex->getGridPageActions()->assignStatusToState();
     $this->orderStatusAssign->getAssignForm()->fill($orderStatus);
     $this->orderStatusAssign->getPageActionsBlock()->save();
     $assertion->processAssert($this->orderStatusIndex);
     $order->persist();
     $this->order = $order;
     return ['orderId' => $order->getId(), 'customer' => $order->getDataFieldConfig('customer_id')['source']->getCustomer(), 'status' => $orderStatus->getLabel()];
 }