![]() Server : Apache System : Linux server2.corals.io 4.18.0-348.2.1.el8_5.x86_64 #1 SMP Mon Nov 15 09:17:08 EST 2021 x86_64 User : corals ( 1002) PHP Version : 7.4.33 Disable Function : exec,passthru,shell_exec,system Directory : /home/corals/old/dev/tests/integration/framework/Magento/TestFramework/ |
<?php /** * Copyright © Magento, Inc. All rights reserved. * See COPYING.txt for license details. */ namespace Magento\TestFramework; /** * Class that implements CRUD tests for \Magento\Framework\Model\AbstractModel based objects */ class Entity { /** * @var \Magento\Framework\Model\AbstractModel */ protected $_model; /** * @var array */ protected $_updateData; /** * @var string */ protected $_modelClass; /** * @param \Magento\Framework\Model\AbstractModel $model * @param array $updateData * @param string|null $modelClass Class of a model to use when creating new instances, or NULL for auto-detection * @throws \InvalidArgumentException */ public function __construct(\Magento\Framework\Model\AbstractModel $model, array $updateData, $modelClass = null) { $this->_model = $model; $this->_updateData = $updateData; if ($modelClass) { if (!$model instanceof $modelClass) { throw new \InvalidArgumentException("Class '$modelClass' is irrelevant to the tested model."); } $this->_modelClass = $modelClass; } else { $this->_modelClass = get_class($this->_model); } } /** * Test Create -> Read -> Update -> Delete operations */ public function testCrud() { $this->_testCreate(); try { $this->_testRead(); $this->_testUpdate(); $this->_testDelete(); } catch (\Exception $e) { $this->_model->delete(); throw $e; } } /** * Retrieve new instance of not yet loaded model * * @return \Magento\Framework\Model\AbstractModel */ protected function _getEmptyModel() { return \Magento\TestFramework\Helper\Bootstrap::getObjectManager()->create($this->_modelClass); } protected function _testCreate() { if ($this->_model->getId()) { \PHPUnit\Framework\Assert::fail("Can't run creation test for models with defined id"); } $this->_model->save(); \PHPUnit\Framework\Assert::assertNotEmpty($this->_model->getId(), 'CRUD Create error'); } protected function _testRead() { $model = $this->_getEmptyModel(); $model->load($this->_model->getId()); \PHPUnit\Framework\Assert::assertEquals($this->_model->getId(), $model->getId(), 'CRUD Read error'); } protected function _testUpdate() { foreach ($this->_updateData as $key => $value) { $this->_model->setDataUsingMethod($key, $value); } $this->_model->save(); $model = $this->_getEmptyModel(); $model->load($this->_model->getId()); foreach ($this->_updateData as $key => $value) { \PHPUnit\Framework\Assert::assertEquals( $value, $model->getDataUsingMethod($key), 'CRUD Update "' . $key . '" error' ); } } protected function _testDelete() { $modelId = $this->_model->getId(); $this->_model->delete(); $model = $this->_getEmptyModel(); $model->load($modelId); \PHPUnit\Framework\Assert::assertEmpty($model->getId(), 'CRUD Delete error'); } }