public function execute(\Magento\Framework\Event\Observer $observer)
 {
     /** @var \Magento\Sales\Model\Order $order */
     $order = $observer->getData(self::DATA_ORDER);
     $state = $order->getState();
     if ($state == \Magento\Sales\Model\Order::STATE_PROCESSING) {
         try {
             $this->_logger->debug("Call to Odoo service to replicate order.");
             $req = new \Praxigento\Odoo\Service\Replicate\Request\OrderSave();
             $req->setSaleOrder($order);
             $this->_callReplicate->orderSave($req);
         } catch (\Exception $e) {
             /* catch all exceptions and steal them */
             $msg = 'Some error is occurred on sale order saving to Odoo. Error: ' . $e->getMessage();
             $this->_logger->error($msg);
         }
     }
 }
 public function test_orderSave()
 {
     /** === Test Data === */
     $ORDER_ID_MAGE = 4;
     $ORDER_ID_ODOO = 16;
     $REQ = new \Praxigento\Odoo\Service\Replicate\Request\OrderSave();
     /** === Setup Mocks === */
     // $mageOrder = $req->getSaleOrder();
     $mMageOrder = $this->_mock(\Magento\Sales\Api\Data\OrderInterface::class);
     $REQ->setSaleOrder($mMageOrder);
     // $orderIdMage = $mageOrder->getEntityId();
     $mMageOrder->shouldReceive('getEntityId')->once()->andReturn($ORDER_ID_MAGE);
     // $registeredOrder = $this->_repoEntitySaleOrder->getById($orderIdMage);
     $mRegisteredOrder = null;
     $this->mRepoEntitySaleOrder->shouldReceive('getById')->once()->with($ORDER_ID_MAGE)->andReturn($mRegisteredOrder);
     // $odooOrder = $this->_subCollector->getSaleOrder($mageOrder);
     $mOdooOrder = $this->_mock(\Praxigento\Odoo\Data\Odoo\SaleOrder::class);
     $this->mSubCollector->shouldReceive('getSaleOrder')->once()->andReturn($mOdooOrder);
     // $def = $this->_manTrans->begin();
     $mDef = $this->_mockTransactionDefinition();
     $this->mManTrans->shouldReceive('begin')->once()->andReturn($mDef);
     // $resp = $this->_repoOdooSaleOrder->save($odooOrder);
     $mResp = $this->_mock(\Praxigento\Odoo\Data\Odoo\SaleOrder\Response::class);
     $this->mRepoOdooSaleOrder->shouldReceive('save')->once()->andReturn($mResp);
     // $mageId = $mageOrder->getEntityId();
     $mMageOrder->shouldReceive('getEntityId')->once()->andReturn($ORDER_ID_MAGE);
     // $odooId = $resp->getIdOdoo();
     $mResp->shouldReceive('getIdOdoo')->once()->andReturn($ORDER_ID_ODOO);
     // $this->_repoEntitySaleOrder->create($registry);
     $this->mRepoEntitySaleOrder->shouldReceive('create')->once();
     // $this->_manTrans->commit($def);
     $this->mManTrans->shouldReceive('commit')->once();
     // $this->_manTrans->end($def);
     $this->mManTrans->shouldReceive('end')->once();
     /** === Call and asserts  === */
     $res = $this->obj->orderSave($REQ);
     $this->assertTrue($res instanceof \Praxigento\Odoo\Service\Replicate\Response\OrderSave);
     $this->assertTrue($res->isSucceed());
 }