/** @inheritdoc */ public function create($data) { /** @var $result AggWarehouse */ $result = null; $def = $this->_manTrans->begin(); try { $wrhsData = $this->_repoWrhsAggWarehouse->create($data); /* create odoo related entries */ $bind = [EntityWarehouse::ATTR_MAGE_REF => $wrhsData->getId(), EntityWarehouse::ATTR_ODOO_REF => $data->getOdooId()]; $this->_repoEntityWarehouse->create($bind); $this->_manTrans->commit($def); /* compose result from warehouse module's data and odoo module's data */ $result = $this->_manObj->create(AggWarehouse::class); $result->setData($wrhsData); $result->setOdooId($data->getOdooId()); } finally { $this->_manTrans->end($def); } return $result; }
/** * @SuppressWarnings(PHPMD.ShortVariable) */ public function test_create_noStockId() { /** === Test Data === */ $id = 32; $data = new AggWarehouse([AggWarehouse::AS_CODE => 'code', AggWarehouse::AS_WEBSITE_ID => 'website_id', AggWarehouse::AS_CURRENCY => 'currency', AggWarehouse::AS_NOTE => 'note']); /** === Setup Mocks === */ // $def = $this->_manTrans->begin(); $mDef = $this->_mock(\Praxigento\Core\Transaction\Database\IDefinition::class); $this->mManTrans->shouldReceive('begin')->once()->andReturn($mDef); // $id = $this->_repoBasic->addEntity($tbl, $bind); $this->mRepoGeneric->shouldReceive('addEntity')->once()->andReturn($id); // $this->_repoBasic->addEntity($tbl, $bind); $this->mRepoGeneric->shouldReceive('addEntity')->once(); // $this->_manTrans->commit($def); $this->mManTrans->shouldReceive('commit')->once()->with($mDef); // $this->_manTrans->end($def); $this->mManTrans->shouldReceive('end')->once()->with($mDef); /** === Call and asserts === */ $res = $this->obj->create($data); $this->assertInstanceOf(AggWarehouse::class, $res); $this->assertEquals($id, $res->getId()); }