Example #1
0
 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));
     // проверяем что запись в БД осталась, т.е. транзакция с удалением была откачена
 }
Example #2
0
 /**
  * Тест проверяет вызов 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);
 }
Example #3
0
 /**
  * Тест проверяет создание, сохранение, загрузку и удаление объекта через 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));
     // проверяем что записей с таким ИД в таблице нет
 }
Example #4
0
<?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