diff options
author | Andrew Dolgov <[email protected]> | 2022-07-16 16:30:46 +0300 |
---|---|---|
committer | Andrew Dolgov <[email protected]> | 2022-07-16 16:30:46 +0300 |
commit | b8c1d622a77226b14fb307cfe3e0f4cea9e4268a (patch) | |
tree | 3df519798dcfef20c96a079e0956ebcd5509b619 /vendor/j4mie/idiorm/test/CacheTest53.php | |
parent | fdd1c43612011060b4b876db438eb7ec62dd077d (diff) |
add missing files for forked idiorm
Diffstat (limited to 'vendor/j4mie/idiorm/test/CacheTest53.php')
-rw-r--r-- | vendor/j4mie/idiorm/test/CacheTest53.php | 82 |
1 files changed, 82 insertions, 0 deletions
diff --git a/vendor/j4mie/idiorm/test/CacheTest53.php b/vendor/j4mie/idiorm/test/CacheTest53.php new file mode 100644 index 000000000..bc30b0aaf --- /dev/null +++ b/vendor/j4mie/idiorm/test/CacheTest53.php @@ -0,0 +1,82 @@ +<?php + +class CacheTest53 extends PHPUnit_Framework_TestCase { + + const ALTERNATE = 'alternate'; // Used as name of alternate connection + + public function setUp() { + // Set up the dummy database connections + ORM::set_db(new MockPDO('sqlite::memory:')); + ORM::set_db(new MockDifferentPDO('sqlite::memory:'), self::ALTERNATE); + + // Enable logging + ORM::configure('logging', true); + ORM::configure('logging', true, self::ALTERNATE); + ORM::configure('caching', true); + ORM::configure('caching', true, self::ALTERNATE); + } + + public function tearDown() { + ORM::reset_config(); + ORM::reset_db(); + } + + + public function testCustomCacheCallback() { + $phpunit = $this; + $my_cache = array(); + ORM::configure('caching_auto_clear', true); + + ORM::configure('create_cache_key', function ($query, $parameters, $table_name, $connection) use ($phpunit, &$my_cache) { + $phpunit->assertEquals(true, is_string($query)); + $phpunit->assertEquals(true, is_array($parameters)); + $phpunit->assertEquals(true, is_string($connection)); + $phpunit->assertEquals('widget', $table_name); + $parameter_string = join(',', $parameters); + $key = $query . ':' . $parameter_string; + $my_key = 'some-prefix'.crc32($key); + return $my_key; + }); + ORM::configure('cache_query_result', function ($cache_key, $value, $table_name, $connection_name) use ($phpunit, &$my_cache) { + $phpunit->assertEquals(true, is_string($cache_key)); + $phpunit->assertEquals('widget', $table_name); + $my_cache[$cache_key] = $value; + }); + ORM::configure('check_query_cache', function ($cache_key, $table_name, $connection_name) use ($phpunit, &$my_cache) { + $phpunit->assertEquals(true, is_string($cache_key)); + $phpunit->assertEquals(true, is_string($connection_name)); + $phpunit->assertEquals('widget', $table_name); + + if(isset($my_cache) and isset($my_cache[$cache_key])){ + $phpunit->assertEquals(true, is_array($my_cache[$cache_key])); + return $my_cache[$cache_key]; + } else { + return false; + } + }); + ORM::configure('clear_cache', function ($table_name, $connection_name) use ($phpunit, &$my_cache) { + $phpunit->assertEquals(true, is_string($table_name)); + $phpunit->assertEquals(true, is_string($connection_name)); + $my_cache = array(); + }); + ORM::for_table('widget')->where('name', 'Fred')->where('age', 21)->find_one(); + ORM::for_table('widget')->where('name', 'Fred')->where('age', 21)->find_one(); + ORM::for_table('widget')->where('name', 'Bob')->where('age', 42)->find_one(); + + //our custom cache should be full now + $this->assertEquals(true, !empty($my_cache)); + + //checking custom cache key + foreach($my_cache as $k=>$v){ + $this->assertEquals('some-prefix', substr($k,0,11)); + } + + $new = ORM::for_table('widget')->create(); + $new->name = "Joe"; + $new->age = 25; + $saved = $new->save(); + + //our custom cache should be empty now + $this->assertEquals(true, empty($my_cache)); + } +}
\ No newline at end of file |