mirror of
https://github.com/kamilwylegala/cakephp2-php8.git
synced 2024-11-15 03:18:26 +00:00
Add tests for cacheMethodFilter
This commit is contained in:
parent
71535d2d2c
commit
1952d2ee17
2 changed files with 59 additions and 0 deletions
|
@ -797,6 +797,37 @@ class DboSource extends DataSource {
|
|||
* Filters to apply to the results of `name` and `fields`. When the filter for a given method does not return `true`
|
||||
* then the result is not added to the memory cache.
|
||||
*
|
||||
* Some examples:
|
||||
*
|
||||
* ```
|
||||
* // For method fields, do not cache values that contain floats
|
||||
* if ($method === 'fields') {
|
||||
* $hasFloat = preg_grep('/(\d+)?\.\d+/', $value);
|
||||
*
|
||||
* return count($hasFloat) === 0;
|
||||
* }
|
||||
*
|
||||
* return true;
|
||||
* ```
|
||||
*
|
||||
* ```
|
||||
* // For method name, do not cache values that have the name created
|
||||
* if ($method === 'name') {
|
||||
* return preg_match('/^`created`$/', $value) !== 1;
|
||||
* }
|
||||
*
|
||||
* return true;
|
||||
* ```
|
||||
*
|
||||
* ```
|
||||
* // For method name, do not cache values that have the key 472551d38e1f8bbc78d7dfd28106166f
|
||||
* if ($key === '472551d38e1f8bbc78d7dfd28106166f') {
|
||||
* return false;
|
||||
* }
|
||||
*
|
||||
* return true;
|
||||
* ```
|
||||
*
|
||||
* @param string $method Name of the method being cached.
|
||||
* @param string $key The key name for the cache operation.
|
||||
* @param mixed $value The value to cache into memory.
|
||||
|
|
|
@ -737,6 +737,34 @@ class DboSourceTest extends CakeTestCase {
|
|||
$this->assertNull($result);
|
||||
}
|
||||
|
||||
/**
|
||||
* Test that cacheMethodFilter does not filter by default.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function testCacheMethodFilter() {
|
||||
$method = 'name';
|
||||
$key = '49d9207adfce6df1dd3ee8c30c434414';
|
||||
$value = '`menus`';
|
||||
$actual = $this->testDb->cacheMethodFilter($method, $key, $value);
|
||||
|
||||
$this->assertTrue($actual);
|
||||
|
||||
$method = 'fields';
|
||||
$key = '2b57253ab1fffb3e95fa4f95299220b1';
|
||||
$value = ["`Menu`.`id`", "`Menu`.`name`"];
|
||||
$actual = $this->testDb->cacheMethodFilter($method, $key, $value);
|
||||
|
||||
$this->assertTrue($actual);
|
||||
|
||||
$method = 'non-existing';
|
||||
$key = '';
|
||||
$value = '``';
|
||||
$actual = $this->testDb->cacheMethodFilter($method, $key, $value);
|
||||
|
||||
$this->assertTrue($actual);
|
||||
}
|
||||
|
||||
/**
|
||||
* Test that rare collisions do not happen with method caching
|
||||
*
|
||||
|
|
Loading…
Reference in a new issue