2017-10-18 11:42:03 +02:00
|
|
|
<?php
|
|
|
|
/**
|
|
|
|
* EGroupware test app to test eg. Api\Storage\Base
|
|
|
|
*
|
|
|
|
* @package api
|
|
|
|
* @subpackage tests
|
|
|
|
* @link http://www.egroupware.org
|
|
|
|
* @author Ralf Becker <RalfBecker@outdoor-training.de>
|
|
|
|
* @copyright 2017RalfBecker@outdoor-training.de
|
|
|
|
* @license http://opensource.org/licenses/gpl-license.php GPL - GNU General Public License
|
|
|
|
*/
|
|
|
|
|
|
|
|
use PHPUnit\Framework\TestCase;
|
|
|
|
use EGroupware\Api;
|
|
|
|
|
|
|
|
class BaseTest extends TestCase
|
|
|
|
{
|
|
|
|
/**
|
|
|
|
*
|
|
|
|
* @var Api\Db
|
|
|
|
*/
|
|
|
|
private static $db;
|
|
|
|
|
|
|
|
/**
|
|
|
|
*
|
|
|
|
* @var Api\Storage\Base
|
|
|
|
*/
|
|
|
|
private $storage;
|
|
|
|
|
2020-03-04 18:47:48 +01:00
|
|
|
public static function setUpBeforeClass() : void
|
2017-10-18 11:42:03 +02:00
|
|
|
{
|
|
|
|
if (ini_get('session.save_handler') == 'files' && !is_writable(ini_get('session.save_path')) && is_dir('/tmp') && is_writable('/tmp'))
|
|
|
|
{
|
|
|
|
ini_set('session.save_path','/tmp'); // regular users may have no rights to apache's session dir
|
|
|
|
}
|
|
|
|
$_REQUEST['domain'] = $GLOBALS['EGW_DOMAIN'];
|
|
|
|
|
|
|
|
$GLOBALS['egw_info'] = array(
|
|
|
|
'flags' => array(
|
|
|
|
'noheader' => True,
|
|
|
|
'nonavbar' => True,
|
|
|
|
'currentapp' => 'setup',
|
|
|
|
'noapi' => true,
|
|
|
|
));
|
|
|
|
require(__DIR__.'/../../../header.inc.php');
|
|
|
|
|
|
|
|
$GLOBALS['egw'] = new stdClass();
|
|
|
|
$GLOBALS['egw']->db = self::$db = new Api\Db($GLOBALS['egw_domain'][$GLOBALS['EGW_DOMAIN']]);
|
|
|
|
self::$db->connect();
|
|
|
|
}
|
|
|
|
|
2020-03-04 18:47:48 +01:00
|
|
|
protected function setUp() : void
|
2017-10-18 11:42:03 +02:00
|
|
|
{
|
|
|
|
$this->storage = new Api\Storage\Base('test', 'egw_test', self::$db);
|
|
|
|
}
|
|
|
|
|
2020-03-04 18:47:48 +01:00
|
|
|
protected function assertPreConditions() : void
|
2017-10-18 11:42:03 +02:00
|
|
|
{
|
|
|
|
$tables = self::$db->table_names(true);
|
2017-10-20 10:20:49 +02:00
|
|
|
$this->assertContains('egw_test', $tables, 'Could not find DB table "egw_test", make sure test app is installed');
|
2017-10-18 11:42:03 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
public function testSaveInternalState()
|
|
|
|
{
|
|
|
|
$this->storage->data = $data = array(
|
|
|
|
't_title' => 'Test',
|
|
|
|
't_desc' => "First Line\nSecond Line\n\n...",
|
|
|
|
't_start' => $start=Api\DateTime::to('now', 'ts'),
|
|
|
|
't_end' => $end=Api\DateTime::to('now', 'ts'),
|
|
|
|
't_modifier' => 123,
|
|
|
|
);
|
|
|
|
$this->storage->Save();
|
|
|
|
$this->assertGreaterThan(0, $this->storage->data['t_id']);
|
|
|
|
|
|
|
|
$row = self::$db->select('egw_test', '*', array('t_id' => $this->storage->data['t_id']),
|
|
|
|
__LINE__, __FILE__, false, '', 'test')->fetch();
|
|
|
|
$this->assertInternalType('array', $row);
|
|
|
|
$this->assertEquals($data['t_title'], $row['t_title']);
|
|
|
|
$this->assertEquals($data['t_desc'], $row['t_desc']);
|
|
|
|
$this->assertEquals($data['t_modifier'], $row['t_modifier']);
|
|
|
|
$this->assertEquals(Api\DateTime::user2server($start), $row['t_start']);
|
|
|
|
$this->assertEquals(Api\DateTime::user2server($end, Api\DateTime::DATABASE), $row['t_end']);
|
|
|
|
$this->assertEquals(new DateTime('now'), new DateTime($row['t_modified']), '', 1);
|
|
|
|
|
|
|
|
return $this->storage->data;
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
*
|
|
|
|
* @param array $data
|
|
|
|
* @depends testSaveInternalState
|
|
|
|
*/
|
|
|
|
public function testReadFromDb(array $data)
|
|
|
|
{
|
|
|
|
$read = $this->storage->read($data['t_id']);
|
|
|
|
// not set above, just be DB or read method
|
|
|
|
unset($read['t_modified'], $read['user_timezone_read']);
|
|
|
|
// set as ts, but read as is in DB
|
|
|
|
$data['t_end'] = Api\DateTime::to($data['t_end'], Api\DateTime::DATABASE);
|
|
|
|
$this->assertEquals($data, $read);
|
|
|
|
}
|
|
|
|
|
|
|
|
/*public function testSaveGivenState()
|
|
|
|
{
|
|
|
|
|
|
|
|
}*/
|
|
|
|
}
|