diff options
| author | Joas Schilling <nickvergessen@gmx.de> | 2014-10-06 23:20:50 +0200 |
|---|---|---|
| committer | Joas Schilling <nickvergessen@gmx.de> | 2014-10-06 23:20:50 +0200 |
| commit | a12a7d0b9058cd3b7ca43bcea3c5a569df7b700b (patch) | |
| tree | 2dd5c309fd2a516c4ada96f6bf4a54cfad9f271c /tests/cache/cache_memory_test.php | |
| parent | ce0c33f62a0e34a733b9da57cb41f4bf573740c2 (diff) | |
| parent | 74a96bf7c2c6d4bb0c68cf74858260d0466ed3cc (diff) | |
| download | forums-a12a7d0b9058cd3b7ca43bcea3c5a569df7b700b.tar forums-a12a7d0b9058cd3b7ca43bcea3c5a569df7b700b.tar.gz forums-a12a7d0b9058cd3b7ca43bcea3c5a569df7b700b.tar.bz2 forums-a12a7d0b9058cd3b7ca43bcea3c5a569df7b700b.tar.xz forums-a12a7d0b9058cd3b7ca43bcea3c5a569df7b700b.zip | |
Merge pull request #2460 from Nicofuma/ticket/11224
[ticket/11224] SQL cache destroy does not destroy queries to tables joined
Diffstat (limited to 'tests/cache/cache_memory_test.php')
| -rw-r--r-- | tests/cache/cache_memory_test.php | 125 |
1 files changed, 125 insertions, 0 deletions
diff --git a/tests/cache/cache_memory_test.php b/tests/cache/cache_memory_test.php new file mode 100644 index 0000000000..7a529c1d04 --- /dev/null +++ b/tests/cache/cache_memory_test.php @@ -0,0 +1,125 @@ +<?php +/** +* +* @package testing +* @copyright (c) 2014 phpBB Group +* @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License v2 +* +*/ + +require_once dirname(__FILE__) . '/cache_memory.php'; + +class phpbb_cache_memory_test extends phpbb_database_test_case +{ + protected $cache; + + public function getDataSet() + { + return $this->createXMLDataSet(dirname(__FILE__).'/fixtures/cache_memory.xml'); + } + + protected function setUp() + { + global $db; + parent::setUp(); + + $this->cache = new phpbb_cache_memory(); + $db = $this->new_dbal(); + } + + static public function cache_single_query_data() + { + return array( + array( + array( + array( + 'SELECT * FROM ' . POSTS_TABLE, + 3, + ), + ), + POSTS_TABLE, + ), + array( + array( + array( + 'SELECT * FROM ' . POSTS_TABLE, + 3, + ), + array( + 'SELECT * FROM ' . POSTS_TABLE . ' p + LEFT JOIN ' . TOPICS_TABLE . ' t ON p.topic_id = t.topic_id', + 3, + ), + ), + POSTS_TABLE, + ), + array( + array( + array( + 'SELECT * FROM ' . POSTS_TABLE, + 3, + ), + array( + 'SELECT * FROM ' . POSTS_TABLE . ' p + LEFT JOIN ' . TOPICS_TABLE . ' t ON p.topic_id = t.topic_id', + 3, + ), + array( + 'SELECT * FROM ' . POSTS_TABLE . ' p + LEFT JOIN ' . TOPICS_TABLE . ' t ON p.topic_id = t.topic_id + LEFT JOIN ' . USERS_TABLE . ' u ON p.poster_id = u.user_id', + 3, + ), + ), + POSTS_TABLE, + ), + array( + array( + array( + 'SELECT * FROM ' . POSTS_TABLE . ' p + LEFT JOIN ' . TOPICS_TABLE . ' t ON p.topic_id = t.topic_id', + 3, + ), + array( + 'SELECT * FROM ' . POSTS_TABLE . ' p + LEFT JOIN ' . TOPICS_TABLE . ' t ON p.topic_id = t.topic_id + LEFT JOIN ' . USERS_TABLE . ' u ON p.poster_id = u.user_id', + 3, + ), + ), + TOPICS_TABLE, + ), + ); + } + + /** + * @dataProvider cache_single_query_data + */ + public function test_cache_single_query($sql_queries, $table) + { + global $db; + + foreach ($sql_queries as $query) + { + $sql_request_res = $db->sql_query($query[0]); + + $this->cache->sql_save($query[0], $sql_request_res, 1); + + $results = array(); + $query_id = $this->cache->sql_load($query[0]); + while ($row = $this->cache->sql_fetchrow($query_id)) + { + $results[] = $row; + } + $this->cache->sql_freeresult($query_id); + $this->assertEquals($query[1], sizeof($results)); + } + + $this->cache->destroy('sql', $table); + + foreach ($sql_queries as $query) + { + $this->assertNotEquals(false, $this->cache->sql_load($query[0])); + } + } +} |
