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\\ResourceModel\\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\\ResourceModel\\Db\\AbstractDb', '_mainTable'); $mainTableReflection->setAccessible(true); $mainTableReflection->setValue($this->_model, 'tableName'); $idFieldNameReflection = new \ReflectionProperty('Magento\\Framework\\Model\\ResourceModel\\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' => 0, 'name' => 'Test Name', 'value' => 'Test Value']); $abstractModelMock->afterLoad(); $this->assertEquals($abstractModelMock->getData(), $abstractModelMock->getStoredData()); $newData = ['value' => 'Test Value New']; $this->_model->expects($this->atLeastOnce())->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'); $select = $this->getMockBuilder(\Magento\Framework\DB\Select::class)->disableOriginalConstructor()->getMock(); $select->expects($this->once())->method('from')->with('tableName')->willReturnSelf(); $connectionMock->expects($this->once())->method('select')->willReturn($select); $select->expects($this->once())->method('reset')->with(\Magento\Framework\DB\Select::WHERE); $select->expects($this->exactly(2))->method('where')->withConsecutive(['uniqueField IS NULL'], ['idFieldName!=?', 0]); $this->_model->addUniqueField(['field' => 'uniqueField']); $this->_model->save($abstractModelMock); }
public function testAddUniqueFieldArray() { $this->assertInstanceOf('\\Magento\\Framework\\Model\\ResourceModel\\Db\\AbstractDb', $this->_model->addUniqueField(['someField'])); }