* @link https://www.oxidmodule.com */ namespace D3\Webauthn\tests\integration; use D3\ModCfg\Application\Model\DependencyInjectionContainer\d3DicHandler; use D3\ModCfg\Tests\unit\d3ModCfgUnitTestCase; use Exception; use OxidEsales\Eshop\Application\Model\Article; use OxidEsales\Eshop\Application\Model\Rights; use OxidEsales\Eshop\Application\Model\User; use OxidEsales\Eshop\Core\Model\BaseModel; abstract class integrationTestCase extends d3ModCfgUnitTestCase { /** * Set up fixture. */ public function setUp(): void { d3DicHandler::getUncompiledInstance(); parent::setUp(); $this->createTestData(); } /** * Tear down fixture. */ public function tearDown(): void { $this->cleanTestData(); parent::tearDown(); d3DicHandler::removeInstance(); } abstract public function createTestData(); abstract public function cleanTestData(); /** * @param $sClass * @param $sId * @param array $aFields * @param bool $blAdmin * @throws Exception */ public function createObject($sClass, $sId, array $aFields = [], bool $blAdmin = false) { /** @var BaseModel $oObject */ $oObject = oxNew($sClass); $oObject->setAdminMode($blAdmin); if ($oObject->exists($sId)) { $oObject->delete($sId); } $oObject->setId($sId); $oObject->assign($aFields); $oObject->save(); } /** * @param $sTableName * @param $sId * @param array $aFields * @throws Exception */ public function createBaseModelObject($sTableName, $sId, array $aFields = []) { /** @var BaseModel $oObject */ $oObject = oxNew(BaseModel::class); $oObject->init($sTableName); $oObject->setId($sId); $oObject->assign($aFields); $oObject->save(); } /** * @param $sId * @param array $aFields * @throws Exception */ public function createArticle($sId, array $aFields = []) { $this->createObject( Article::class, $sId, array_merge( ['oxprice' => 0], $aFields ) ); } /** * @param $sId * @param array $aFields * @param bool $blAdmin * @throws Exception */ public function createUser($sId, array $aFields = [], bool $blAdmin = false) { $this->createObject( User::class, $sId, array_merge(['oxusername' => $sId], $aFields), $blAdmin ); } /** * @param $sClass * @param $sId */ public function deleteObject($sClass, $sId) { try { /** @var BaseModel $oObject */ $oObject = oxNew($sClass); if (method_exists($oObject, 'setRights')) { $oObject->setRights(oxNew(Rights::class)); } if ($oObject->exists($sId)) { $oObject->delete($sId); } } catch (Exception $ex) { } } /** * @param $sTableName * @param $sId */ public function deleteBaseModelObject($sTableName, $sId) { try { /** @var BaseModel $oObject */ $oObject = oxNew(BaseModel::class); $oObject->init($sTableName); if (method_exists($oObject, 'setRights')) { $oObject->setRights(oxNew(Rights::class)); } if ($oObject->exists($sId)) { $oObject->delete($sId); } } catch (Exception $ex) { } } /** * @param $sId */ public function deleteUser($sId) { $this->deleteObject(User::class, $sId); } }