1
0
mirror of https://github.com/phpbb/phpbb.git synced 2025-01-18 06:38:43 +01:00
php-phpbb/tests/config/db_test.php
2012-01-02 19:10:36 +01:00

167 lines
4.6 KiB
PHP

<?php
/**
*
* @package testing
* @copyright (c) 2010 phpBB Group
* @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License v2
*
*/
require_once dirname(__FILE__) . '/../mock/cache.php';
class phpbb_config_db_test extends phpbb_database_test_case
{
private $cache;
private $db;
private $config;
public function getDataSet()
{
return $this->createXMLDataSet(dirname(__FILE__) . '/fixtures/config.xml');
}
public function setUp()
{
parent::setUp();
$this->cache = new phpbb_mock_cache;
$this->db = $this->new_dbal();
$this->config = new phpbb_config_db($this->db, $this->cache, 'phpbb_config');
}
public function test_load_config()
{
$this->assertEquals('23', $this->config['foo']);
$this->assertEquals('42', $this->config['bar']);
}
public function test_load_cached()
{
$cache = new phpbb_mock_cache(array('config' => array('x' => 'y')));
$this->config = new phpbb_config_db($this->db, $cache, 'phpbb_config');
$this->assertTrue(!isset($this->config['foo']));
$this->assertEquals('42', $this->config['bar']);
$this->assertEquals('y', $this->config['x']);
}
public function test_offset_set()
{
$this->config['foo'] = 'x'; // temporary set
$this->assertEquals('x', $this->config['foo']);
$config2 = new phpbb_config_db($this->db, $this->cache, 'phpbb_config');
$this->assertEquals('23', $config2['foo']);
}
public function test_set_overwrite()
{
$this->config->set('foo', '17');
$this->assertEquals('17', $this->config['foo']);
// re-read config and populate cache
$config2 = new phpbb_config_db($this->db, $this->cache, 'phpbb_config');
$this->cache->checkVar($this, 'config', array('foo' => '17'));
}
public function test_set_overwrite_uncached()
{
$this->config->set('bar', '17', false);
// re-read config and populate cache
$config2 = new phpbb_config_db($this->db, $this->cache, 'phpbb_config');
$this->cache->checkVar($this, 'config', array('foo' => '23'));
}
public function test_set_new()
{
$this->config->set('foobar', '5');
$this->assertEquals('5', $this->config['foobar']);
// re-read config and populate cache
$config2 = new phpbb_config_db($this->db, $this->cache, 'phpbb_config');
$this->cache->checkVar($this, 'config', array('foo' => '23', 'foobar' => '5'));
}
public function test_set_new_uncached()
{
$this->config->set('foobar', '5', false);
$this->assertEquals('5', $this->config['foobar']);
// re-read config and populate cache
$config2 = new phpbb_config_db($this->db, $this->cache, 'phpbb_config');
$this->cache->checkVar($this, 'config', array('foo' => '23'));
}
public function test_set_atomic_overwrite()
{
$this->assertTrue($this->config->set_atomic('foo', '23', '17'));
$this->assertEquals('17', $this->config['foo']);
}
public function test_set_atomic_new()
{
$this->assertTrue($this->config->set_atomic('foobar', false, '5'));
$this->assertEquals('5', $this->config['foobar']);
}
public function test_set_atomic_failure()
{
$this->assertFalse($this->config->set_atomic('foo', 'wrong', '17'));
$this->assertEquals('23', $this->config['foo']);
}
public function test_increment()
{
$this->config->increment('foo', 3);
$this->assertEquals(26, $this->config['foo']);
$this->config->increment('foo', 1);
$this->assertEquals(27, $this->config['foo']);
}
public function test_increment_new()
{
$this->config->increment('foobar', 3);
$this->assertEquals(3, $this->config['foobar']);;
}
public function test_delete()
{
$this->assertTrue(isset($this->config['foo']));
$this->config->delete('foo');
$this->cache->checkVarUnset($this, 'foo');
$this->assertFalse(isset($this->config['foo']));
// re-read config and populate cache
$cache2 = new phpbb_mock_cache;
$config2 = new phpbb_config_db($this->db, $cache2, 'phpbb_config');
$cache2->checkVarUnset($this, 'foo');
$this->assertFalse(isset($config2['foo']));
}
public function test_delete_write_read_not_cacheable()
{
// bar is dynamic
$this->assertTrue(isset($this->config['bar']));
$this->config->delete('bar');
$this->cache->checkVarUnset($this, 'bar');
$this->assertFalse(isset($this->config['bar']));
$this->config->set('bar', 'new bar', false);
$this->assertEquals('new bar', $this->config['bar']);
}
public function test_delete_write_read_cacheable()
{
// foo is not dynamic
$this->assertTrue(isset($this->config['foo']));
$this->config->delete('foo');
$this->cache->checkVarUnset($this, 'foo');
$this->assertFalse(isset($this->config['foo']));
$this->config->set('foo', 'new foo', true);
$this->assertEquals('new foo', $this->config['foo']);
}
}