Merge pull request #6634 from tobiasd/20190210-crepairwarning
[friendica.git/.git] / tests / Util / DbaCacheMockTrait.php
1 <?php
2
3 namespace Friendica\Test\Util;
4
5 trait DbaCacheMockTrait
6 {
7         use DBAMockTrait;
8         use DateTimeFormatMockTrait;
9
10         protected function mockDelete($key, $return = true, $times = null)
11         {
12                 $this->mockDBADelete('cache', ['k' => $key], $return, $times);
13         }
14
15         protected function mockGet($key, $return = null, $time = null, $times = null)
16         {
17                 if ($time === null) {
18                         $time = time();
19                 }
20
21                 $value = @serialize($return);
22
23                 $this->mockSelectFirst('cache', ['v'], ['`k` = ? AND (`expires` >= ? OR `expires` = -1)', $key, $time], ['v' => $value], $times);
24                 $this->mockIsResult(['v' => $value], isset($return), $times);
25         }
26
27         protected function mockSet($key, $value, $ttl = Cache::FIVE_MINUTES, $time = null, $return = true, $times = null)
28         {
29                 if ($time === null) {
30                         $time = time();
31                 }
32
33                 if ($ttl > 0) {
34                         $this->mockUtc('now + ' . $ttl . 'seconds', $time + $ttl, $times);
35                         $fields = [
36                                 'v' => serialize($value),
37                                 'expires' => $time + $ttl,
38                                 'updated' => $time
39                         ];
40                 } else {
41                         $fields = [
42                                 'v' => serialize($value),
43                                 'expires' => -1,
44                                 'updated' => $time
45                         ];
46                 }
47
48                 $this->mockDBAUpdate('cache', $fields, ['k' => $key], true, $return, $times);
49         }
50
51         protected function mockClear($outdated = true, $return = true, $times = null)
52         {
53                 if ($outdated) {
54                         $this->mockDBADelete('cache', ['`expires` < NOW()'], $return, $times);
55                 } else {
56                         $this->mockDBADelete('cache', ['`k` IS NOT NULL '], $return, $times);
57                 }
58         }
59
60         protected function mockGetAllKeys($prefix = null, $return = [], $time = null, $times = null)
61         {
62                 if ($time === null) {
63                         $time = time();
64                 }
65
66                 if (empty($prefix)) {
67                         $where = ['`expires` >= ?', $time];
68                 } else {
69                         $where = ['`expires` >= ? AND `k` LIKE CONCAT(?, \'%\')', $time, $prefix];
70                 }
71
72                 $this->mockSelect('cache', ['k'], $where, $return, $times);
73                 $this->mockFetchLoop($return, $times);
74                 $this->mockDbaClose(true, $times);
75         }
76 }