public function testPrepareDataForUpdate() { $connectionMock = $this->getMock('\\Magento\\Framework\\DB\\Adapter\\AdapterInterface', [], [], '', false); $context = (new \Magento\Framework\TestFramework\Unit\Helper\ObjectManager($this))->getObject('Magento\\Framework\\Model\\Context'); $registryMock = $this->getMock('\\Magento\\Framework\\Registry', [], [], '', false); $resourceMock = $this->getMock('Magento\\Framework\\Model\\ModelResource\\Db\\AbstractDb', ['_construct', 'getConnection', '__wakeup', 'getIdFieldName'], [], '', false); $connectionInterfaceMock = $this->getMock('Magento\\Framework\\DB\\Adapter\\AdapterInterface', [], [], '', false); $resourceMock->expects($this->any())->method('getConnection')->will($this->returnValue($connectionInterfaceMock)); $resourceCollectionMock = $this->getMockBuilder('Magento\\Framework\\Data\\Collection\\AbstractDb')->disableOriginalConstructor()->getMockForAbstractClass(); $abstractModelMock = $this->getMockForAbstractClass('Magento\\Framework\\Model\\AbstractModel', [$context, $registryMock, $resourceMock, $resourceCollectionMock]); $data = 'tableName'; $this->_resourcesMock->expects($this->any())->method('getConnection')->will($this->returnValue($connectionMock)); $this->_resourcesMock->expects($this->any())->method('getTableName')->with($data)->will($this->returnValue('tableName')); $mainTableReflection = new \ReflectionProperty('Magento\\Framework\\Model\\ModelResource\\Db\\AbstractDb', '_mainTable'); $mainTableReflection->setAccessible(true); $mainTableReflection->setValue($this->_model, 'tableName'); $idFieldNameReflection = new \ReflectionProperty('Magento\\Framework\\Model\\ModelResource\\Db\\AbstractDb', '_idFieldName'); $idFieldNameReflection->setAccessible(true); $idFieldNameReflection->setValue($this->_model, 'idFieldName'); $connectionMock->expects($this->any())->method('save')->with('tableName', 'idFieldName'); $connectionMock->expects($this->any())->method('quoteInto')->will($this->returnValue('idFieldName')); $abstractModelMock->setIdFieldName('id'); $abstractModelMock->setData(['id' => 12345, 'name' => 'Test Name', 'value' => 'Test Value']); $abstractModelMock->afterLoad(); $this->assertEquals($abstractModelMock->getData(), $abstractModelMock->getStoredData()); $newData = ['value' => 'Test Value New']; $this->_model->expects($this->once())->method('_prepareDataForTable')->will($this->returnValue($newData)); $abstractModelMock->addData($newData); $this->assertNotEquals($abstractModelMock->getData(), $abstractModelMock->getStoredData()); $abstractModelMock->isObjectNew(false); $connectionMock->expects($this->once())->method('update')->with('tableName', $newData, 'idFieldName'); $this->_model->save($abstractModelMock); }
/** * {@inheritdoc} */ public function save(\Magento\Framework\Model\AbstractModel $object) { $hasDataChanges = $object->hasDataChanges(); $object->setIsOptionsSaved(false); $result = parent::save($object); if ($hasDataChanges && !$object->isOptionsSaved()) { $object->saveItemOptions(); } return $result; }
/** * {@inheritdoc} */ public function save(\Magento\Framework\Model\AbstractModel $object) { $object->setHasDataChanges(true); return parent::save($object); }
/** * {@inheritdoc} */ public function save(\Magento\Framework\Model\AbstractModel $object) { $object->setUpdatedAt(gmdate('Y-m-d H:i:s')); return parent::save($object); }