szuru/tests/AbstractDatabaseTestCase.php
2015-11-25 11:39:45 +01:00

71 lines
2.2 KiB
PHP

<?php
namespace Szurubooru\Tests;
use Szurubooru\Config;
use Szurubooru\Dao\PublicFileDao;
use Szurubooru\DatabaseConnection;
use Szurubooru\Entities\Post;
use Szurubooru\Entities\Tag;
use Szurubooru\Entities\User;
use Szurubooru\Injector;
use Szurubooru\Tests\AbstractTestCase;
abstract class AbstractDatabaseTestCase extends AbstractTestCase
{
protected $databaseConnection;
public function setUp()
{
parent::setUp();
$realConfig = Injector::get(Config::class);
$config = $this->mockConfig($this->createTestDirectory());
$config->set('database/dsn', $realConfig->database->tests->dsn);
$config->set('database/user', $realConfig->database->tests->user);
$config->set('database/password', $realConfig->database->tests->password);
$this->databaseConnection = new DatabaseConnection($config);
$this->databaseConnection->getPDO()->exec('USE szuru_test');
$this->databaseConnection->getPDO()->beginTransaction();
Injector::set(DatabaseConnection::class, $this->databaseConnection);
}
public function tearDown()
{
$this->databaseConnection->getPDO()->rollBack();
parent::tearDown();
if ($this->databaseConnection)
$this->databaseConnection->close();
}
protected static function getTestTag($name = 'test')
{
$tag = new Tag();
$tag->setName($name);
$tag->setCreationTime(date('c'));
$tag->setLastEditTime(date('c'));
return $tag;
}
protected static function getTestPost()
{
$post = new Post();
$post->setName('test');
$post->setCreationTime(date('c'));
$post->setLastEditTime(date('c'));
$post->setSafety(Post::POST_SAFETY_SAFE);
$post->setContentType(Post::POST_TYPE_YOUTUBE);
$post->setContentChecksum('whatever');
return $post;
}
protected static function getTestUser($userName = 'test')
{
$user = new User();
$user->setName($userName);
$user->setPasswordHash('whatever');
$user->setLastLoginTime(date('c', mktime(1, 2, 3)));
$user->setCreationTime(date('c', mktime(3, 2, 1)));
$user->setAccessRank(User::ACCESS_RANK_REGULAR_USER);
return $user;
}
}