public function testAfterDeleteAndTransaction() { \PHPModelDemo\ModelDemoConfig::init(); // нормальное удаление модели $obj = new \Tests\TestModel(); $obj->setThrowExceptionAfterDelete(true); $obj->save(); $obj_id = $obj->getId(); $this->expectException(\Exception::class); $this->expectExceptionMessage('After delete'); $obj->delete(); $test_model_ids_arr = \OLOG\DB\DBWrapper::readColumn(\Tests\TestModel::DB_ID, 'select id from ' . \Tests\TestModel::DB_TABLE_NAME . ' where id = ?', array($obj_id)); $this->assertEquals(1, count($test_model_ids_arr)); // проверяем что запись в БД осталась, т.е. транзакция с удалением была откачена }
/** * Тест проверяет вызов beforeSave при сохранении объекта через activeRecord */ public function testBeforeSave() { \PHPModelDemo\ModelDemoConfig::init(); // проверим как вызывается при сохранении нового объекта $test_title = rand(1, 1000000); $new_node_obj = new \Tests\TestNode(); $new_node_obj->setTitle($test_title); $new_node_obj->save(); $node_id = $new_node_obj->getId(); $loaded_node_obj = \Tests\TestNode::factory($node_id); $this->assertEquals($loaded_node_obj->getBody(), $test_title . $test_title); // проверим как вызывается при сохранении существующего объекта $test_title_2 = rand(1, 1000000); $loaded_node_obj->setTitle($test_title_2); $loaded_node_obj->save(); $loaded_node_obj_2 = \Tests\TestNode::factory($node_id); $this->assertEquals($loaded_node_obj_2->getBody(), $test_title_2 . $test_title_2); }
/** * Тест проверяет создание, сохранение, загрузку и удаление объекта через activeRecord и factory */ public function testSaveLoadDelete() { \PHPModelDemo\ModelDemoConfig::init(); $test_title = rand(1, 10000); $new_model = new \Tests\TestModel(); $new_model->setTitle($test_title); $new_model->save(); $test_model_id = $new_model->getId(); $this->assertNotEmpty($test_model_id); // тестирует генерацию непустого идентификатора модели при первом сохранении $loaded_model_obj = \Tests\TestModel::factory($test_model_id); $this->assertEquals($test_title, $loaded_model_obj->getTitle()); // тестируем совпадение заголовков сохраненной и загруженной модели $loaded_model_obj->delete(); $test_model_ids_arr = \OLOG\DB\DBWrapper::readColumn(\Tests\TestModel::DB_ID, 'select id from ' . \Tests\TestModel::DB_TABLE_NAME . ' where id = ?', array($test_model_id)); $this->assertEquals(0, count($test_model_ids_arr)); // проверяем что записей с таким ИД в таблице нет }
<?php require_once '../vendor/autoload.php'; \PHPModelDemo\ModelDemoConfig::init(); echo '<div>MODELS <a href="/?a=add_model">+</a></div>'; // ACTIONS if (isset($_GET['a'])) { if ($_GET['a'] == 'add_model') { $new_model = new \PHPModelDemo\DemoModel(); $new_model->setTitle(rand(1, 1000)); $new_model->save(); } } // DISPLAY $models_ids_arr = \OLOG\DB\DBWrapper::readColumn(\PHPModelDemo\ModelDemoConfig::DB_NAME_PHPMODELDEMO, 'select id from ' . \PHPModelDemo\DemoModel::DB_TABLE_NAME . ' order by id desc'); echo '<ul>'; foreach ($models_ids_arr as $model_id) { $model_obj = \PHPModelDemo\DemoModel::factory($model_id); echo '<div>' . $model_obj->getTitle() . '</div>'; } echo '</ul>'; echo '<div>CONST MODELS <a href="/?a=add_constmodel">+</a></div>'; // ACTIONS if (isset($_GET['a'])) { if ($_GET['a'] == 'add_constmodel') { $new_model = new \PHPModelDemo\ConstTest(); $new_model->setTitle(rand(1, 1000)); $new_model->save(); } } // DISPLAY