Refactoring DBA-mocking tests
- Reducing DB-dependencies - Creating DB-cache mocks - Creating DB-lock mocks - Switching to mocked dependencies for Cache/Lock/App
This commit is contained in:
parent
f7e95f65b1
commit
433d6abe8c
21 changed files with 848 additions and 193 deletions
76
tests/Util/DbaCacheMockTrait.php
Normal file
76
tests/Util/DbaCacheMockTrait.php
Normal file
|
|
@ -0,0 +1,76 @@
|
|||
<?php
|
||||
|
||||
namespace Friendica\Test\Util;
|
||||
|
||||
trait DbaCacheMockTrait
|
||||
{
|
||||
use DBAMockTrait;
|
||||
use DateTimeFormatMockTrait;
|
||||
|
||||
protected function mockDelete($key, $return = true, $times = null)
|
||||
{
|
||||
$this->mockDBADelete('cache', ['k' => $key], $return, $times);
|
||||
}
|
||||
|
||||
protected function mockGet($key, $return = null, $time = null, $times = null)
|
||||
{
|
||||
if ($time === null) {
|
||||
$time = time();
|
||||
}
|
||||
|
||||
$value = @serialize($return);
|
||||
|
||||
$this->mockSelectFirst('cache', ['v'], ['`k` = ? AND (`expires` >= ? OR `expires` = -1)', $key, $time], ['v' => $value], $times);
|
||||
$this->mockIsResult(['v' => $value], isset($return), $times);
|
||||
}
|
||||
|
||||
protected function mockSet($key, $value, $ttl = Cache::FIVE_MINUTES, $time = null, $return = true, $times = null)
|
||||
{
|
||||
if ($time === null) {
|
||||
$time = time();
|
||||
}
|
||||
|
||||
if ($ttl > 0) {
|
||||
$this->mockUtc('now + ' . $ttl . 'seconds', $time + $ttl, $times);
|
||||
$fields = [
|
||||
'v' => serialize($value),
|
||||
'expires' => $time + $ttl,
|
||||
'updated' => $time
|
||||
];
|
||||
} else {
|
||||
$fields = [
|
||||
'v' => serialize($value),
|
||||
'expires' => -1,
|
||||
'updated' => $time
|
||||
];
|
||||
}
|
||||
|
||||
$this->mockDBAUpdate('cache', $fields, ['k' => $key], true, $return, $times);
|
||||
}
|
||||
|
||||
protected function mockClear($outdated = true, $return = true, $times = null)
|
||||
{
|
||||
if ($outdated) {
|
||||
$this->mockDBADelete('cache', ['`expires` < NOW()'], $return, $times);
|
||||
} else {
|
||||
$this->mockDBADelete('cache', ['`k` IS NOT NULL '], $return, $times);
|
||||
}
|
||||
}
|
||||
|
||||
protected function mockGetAllKeys($prefix = null, $return = [], $time = null, $times = null)
|
||||
{
|
||||
if ($time === null) {
|
||||
$time = time();
|
||||
}
|
||||
|
||||
if (empty($prefix)) {
|
||||
$where = ['`expires` >= ?', $time];
|
||||
} else {
|
||||
$where = ['`expires` >= ? AND `k` LIKE CONCAT(?, \'%\')', $time, $prefix];
|
||||
}
|
||||
|
||||
$this->mockSelect('cache', ['k'], $where, $return, $times);
|
||||
$this->mockFetchLoop($return, $times);
|
||||
$this->mockDbaClose(true, $times);
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue