resourceMock = $this->createMock(\Magento\Framework\App\ResourceConnection::class); $this->quoteItemMock = $this->createMock(\Magento\Quote\Model\Quote\Item::class); $this->connectionMock = $this->createPartialMock(\Magento\Framework\DB\Adapter\Pdo\Mysql::class, [ 'describeTable', 'insert', 'lastInsertId', 'beginTransaction', 'rollback', 'commit', 'quoteInto', 'update' ]); $this->entitySnapshotMock = $this->createMock( \Magento\Framework\Model\ResourceModel\Db\VersionControl\Snapshot::class ); $this->relationCompositeMock = $this->createMock( \Magento\Framework\Model\ResourceModel\Db\VersionControl\RelationComposite::class ); $this->objectRelationProcessorMock = $this->createMock( \Magento\Framework\Model\ResourceModel\Db\ObjectRelationProcessor::class ); $contextMock = $this->createMock(\Magento\Framework\Model\ResourceModel\Db\Context::class); $contextMock->expects($this->once())->method('getResources')->willReturn($this->resourceMock); $contextMock->expects($this->once()) ->method('getObjectRelationProcessor') ->willReturn($this->objectRelationProcessorMock); $objectManager = new ObjectManagerHelper($this); $this->model = $objectManager->getObject( \Magento\Quote\Model\ResourceModel\Quote\Item::class, [ 'context' => $contextMock, 'entitySnapshot' => $this->entitySnapshotMock, 'entityRelationComposite' => $this->relationCompositeMock ] ); } public function testInstanceOf() { $this->assertInstanceOf( \Magento\Framework\Model\ResourceModel\Db\VersionControl\AbstractDb::class, $this->model ); } public function testSaveNotModifiedItem() { $this->entitySnapshotMock->expects($this->exactly(2)) ->method('isModified') ->with($this->quoteItemMock) ->willReturn(false); $this->quoteItemMock->expects($this->never()) ->method('isOptionsSaved'); $this->quoteItemMock->expects($this->never()) ->method('saveItemOptions'); $this->resourceMock->expects($this->any()) ->method('getConnection') ->willReturn($this->connectionMock); $this->assertEquals($this->model, $this->model->save($this->quoteItemMock)); } public function testSaveSavedBeforeItem() { $this->entitySnapshotMock->expects($this->exactly(2)) ->method('isModified') ->with($this->quoteItemMock) ->willReturn(true); $this->quoteItemMock->expects($this->once()) ->method('isOptionsSaved') ->willReturn(true); $this->quoteItemMock->expects($this->never()) ->method('saveItemOptions'); $this->resourceMock->expects($this->any()) ->method('getConnection') ->willReturn($this->connectionMock); $this->assertEquals($this->model, $this->model->save($this->quoteItemMock)); } public function testSaveModifiedItem() { $this->entitySnapshotMock->expects($this->exactly(2)) ->method('isModified') ->with($this->quoteItemMock) ->willReturn(true); $this->quoteItemMock->expects($this->once()) ->method('isOptionsSaved') ->willReturn(false); $this->quoteItemMock->expects($this->once()) ->method('saveItemOptions'); $this->resourceMock->expects($this->any()) ->method('getConnection') ->willReturn($this->connectionMock); $this->assertEquals($this->model, $this->model->save($this->quoteItemMock)); } }