Reworking database tests
This commit is contained in:
parent
07ed22c58f
commit
c8d97aac26
1 changed files with 312 additions and 66 deletions
|
@ -2,8 +2,54 @@
|
||||||
|
|
||||||
class DatabaseTest extends PHPUnit_Framework_TestCase
|
class DatabaseTest extends PHPUnit_Framework_TestCase
|
||||||
{
|
{
|
||||||
|
public function setUp()
|
||||||
|
{
|
||||||
|
$_SERVER['REQUEST_METHOD'] = 'GET';
|
||||||
|
$_SERVER['SERVER_NAME'] = '127.0.0.1';
|
||||||
|
|
||||||
|
file_put_contents('/tmp/pickles.php', '<?php
|
||||||
|
$config = [
|
||||||
|
"environments" => [
|
||||||
|
"local" => "127.0.0.1",
|
||||||
|
"production" => "123.456.789.0",
|
||||||
|
],
|
||||||
|
"pickles" => [
|
||||||
|
"namespace" => "",
|
||||||
|
"datasource" => "mysql",
|
||||||
|
],
|
||||||
|
"datasources" => [
|
||||||
|
"mysql" => [
|
||||||
|
"type" => "mysql",
|
||||||
|
"driver" => "pdo_mysql",
|
||||||
|
"database" => "test",
|
||||||
|
"hostname" => "localhost",
|
||||||
|
"username" => "root",
|
||||||
|
"password" => "",
|
||||||
|
"database" => "test",
|
||||||
|
],
|
||||||
|
],
|
||||||
|
];
|
||||||
|
');
|
||||||
|
|
||||||
|
Pickles\Config::getInstance('/tmp/pickles.php');
|
||||||
|
}
|
||||||
|
|
||||||
public function testGetInstanceFalse()
|
public function testGetInstanceFalse()
|
||||||
{
|
{
|
||||||
|
file_put_contents('/tmp/pickles.php', '<?php
|
||||||
|
$config = [
|
||||||
|
"environments" => [
|
||||||
|
"local" => "127.0.0.1",
|
||||||
|
"production" => "123.456.789.0",
|
||||||
|
],
|
||||||
|
"datasources" => [
|
||||||
|
|
||||||
|
],
|
||||||
|
];
|
||||||
|
');
|
||||||
|
|
||||||
|
Pickles\Config::getInstance('/tmp/pickles.php');
|
||||||
|
|
||||||
$this->assertFalse(Pickles\Database::getInstance());
|
$this->assertFalse(Pickles\Database::getInstance());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -13,8 +59,21 @@ class DatabaseTest extends PHPUnit_Framework_TestCase
|
||||||
*/
|
*/
|
||||||
public function testGetInstanceDatasourceNotDefined()
|
public function testGetInstanceDatasourceNotDefined()
|
||||||
{
|
{
|
||||||
$config = Pickles\Config::getInstance();
|
file_put_contents('/tmp/pickles.php', '<?php
|
||||||
$config->data['pickles']['datasource'] = 'bad';
|
$config = [
|
||||||
|
"environments" => [
|
||||||
|
"local" => "127.0.0.1",
|
||||||
|
"production" => "123.456.789.0",
|
||||||
|
],
|
||||||
|
"pickles" => [
|
||||||
|
"namespace" => "",
|
||||||
|
"datasource" => "bad",
|
||||||
|
],
|
||||||
|
];
|
||||||
|
');
|
||||||
|
|
||||||
|
Pickles\Config::getInstance('/tmp/pickles.php');
|
||||||
|
|
||||||
Pickles\Database::getInstance();
|
Pickles\Database::getInstance();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -24,12 +83,26 @@ class DatabaseTest extends PHPUnit_Framework_TestCase
|
||||||
*/
|
*/
|
||||||
public function testGetInstanceDatasourceLacksDriver()
|
public function testGetInstanceDatasourceLacksDriver()
|
||||||
{
|
{
|
||||||
$config = Pickles\Config::getInstance();
|
file_put_contents('/tmp/pickles.php', '<?php
|
||||||
$config->data['datasources'] = [
|
$config = [
|
||||||
'bad' => [
|
"environments" => [
|
||||||
'type' => 'mysql',
|
"local" => "127.0.0.1",
|
||||||
|
"production" => "123.456.789.0",
|
||||||
|
],
|
||||||
|
"pickles" => [
|
||||||
|
"namespace" => "",
|
||||||
|
"datasource" => "bad",
|
||||||
|
],
|
||||||
|
"datasources" => [
|
||||||
|
"bad" => [
|
||||||
|
"type" => "mysql",
|
||||||
|
],
|
||||||
],
|
],
|
||||||
];
|
];
|
||||||
|
');
|
||||||
|
|
||||||
|
Pickles\Config::getInstance('/tmp/pickles.php');
|
||||||
|
|
||||||
$this->assertInstanceOf('Pickles\\Database', Pickles\Database::getInstance());
|
$this->assertInstanceOf('Pickles\\Database', Pickles\Database::getInstance());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -39,46 +112,122 @@ class DatabaseTest extends PHPUnit_Framework_TestCase
|
||||||
*/
|
*/
|
||||||
public function testOpenConfigError()
|
public function testOpenConfigError()
|
||||||
{
|
{
|
||||||
$config = Pickles\Config::getInstance();
|
file_put_contents('/tmp/pickles.php', '<?php
|
||||||
$config->data['datasources'] = [
|
$config = [
|
||||||
'bad' => [
|
"environments" => [
|
||||||
'type' => 'mysql',
|
"local" => "127.0.0.1",
|
||||||
'driver' => 'pdo_mysql',
|
"production" => "123.456.789.0",
|
||||||
'database' => 'test',
|
],
|
||||||
|
"pickles" => [
|
||||||
|
"namespace" => "",
|
||||||
|
"datasource" => "bad",
|
||||||
|
],
|
||||||
|
"datasources" => [
|
||||||
|
"bad" => [
|
||||||
|
"type" => "mysql",
|
||||||
|
"driver" => "pdo_mysql",
|
||||||
|
"database" => "test",
|
||||||
|
],
|
||||||
],
|
],
|
||||||
];
|
];
|
||||||
|
');
|
||||||
|
|
||||||
|
Pickles\Config::getInstance('/tmp/pickles.php');
|
||||||
|
|
||||||
$db = Pickles\Database::getInstance();
|
$db = Pickles\Database::getInstance();
|
||||||
$db->open();
|
$db->open();
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testGetInstanceDatasourcesArray()
|
public function testGetInstanceDatasourcesArray()
|
||||||
{
|
{
|
||||||
$config = Pickles\Config::getInstance();
|
file_put_contents('/tmp/pickles.php', '<?php
|
||||||
$config->data['datasources'] = [
|
$config = [
|
||||||
'mysql' => [
|
"environments" => [
|
||||||
'type' => 'mysql',
|
"local" => "127.0.0.1",
|
||||||
'driver' => 'pdo_mysql',
|
"production" => "123.456.789.0",
|
||||||
'hostname' => 'localhost',
|
],
|
||||||
'username' => 'root',
|
"pickles" => [
|
||||||
'password' => '',
|
"namespace" => "",
|
||||||
'database' => 'test',
|
"datasource" => "bad",
|
||||||
|
],
|
||||||
|
"datasources" => [
|
||||||
|
"bad" => [
|
||||||
|
"type" => "mysql",
|
||||||
|
"driver" => "pdo_mysql",
|
||||||
|
"database" => "test",
|
||||||
|
"hostname" => "localhost",
|
||||||
|
"username" => "root",
|
||||||
|
"password" => "",
|
||||||
|
"database" => "test",
|
||||||
|
],
|
||||||
],
|
],
|
||||||
];
|
];
|
||||||
|
');
|
||||||
|
|
||||||
|
Pickles\Config::getInstance('/tmp/pickles.php');
|
||||||
|
|
||||||
$this->assertInstanceOf('Pickles\\Database', Pickles\Database::getInstance());
|
$this->assertInstanceOf('Pickles\\Database', Pickles\Database::getInstance());
|
||||||
}
|
}
|
||||||
|
|
||||||
// Also tests the datasource being missing and selecting the first one
|
// Also tests the datasource being missing and selecting the first one
|
||||||
public function testGetInstanceMySQL()
|
public function testGetInstanceMySQL()
|
||||||
{
|
{
|
||||||
$config = Pickles\Config::getInstance();
|
file_put_contents('/tmp/pickles.php', '<?php
|
||||||
unset($config->data['pickles']['datasource']);
|
$config = [
|
||||||
|
"environments" => [
|
||||||
|
"local" => "127.0.0.1",
|
||||||
|
"production" => "123.456.789.0",
|
||||||
|
],
|
||||||
|
"pickles" => [
|
||||||
|
"namespace" => "",
|
||||||
|
],
|
||||||
|
"datasources" => [
|
||||||
|
"bad" => [
|
||||||
|
"type" => "mysql",
|
||||||
|
"driver" => "pdo_mysql",
|
||||||
|
"database" => "test",
|
||||||
|
"hostname" => "localhost",
|
||||||
|
"username" => "root",
|
||||||
|
"password" => "",
|
||||||
|
"database" => "test",
|
||||||
|
],
|
||||||
|
],
|
||||||
|
];
|
||||||
|
');
|
||||||
|
|
||||||
|
Pickles\Config::getInstance('/tmp/pickles.php');
|
||||||
|
|
||||||
$this->assertInstanceOf('Pickles\\Database', Pickles\Database::getInstance());
|
$this->assertInstanceOf('Pickles\\Database', Pickles\Database::getInstance());
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testOpenMySQL()
|
public function testOpenMySQL()
|
||||||
{
|
{
|
||||||
$config = Pickles\Config::getInstance();
|
file_put_contents('/tmp/pickles.php', '<?php
|
||||||
$config->data['pickles']['datasource'] = 'mysql';
|
$config = [
|
||||||
|
"environments" => [
|
||||||
|
"local" => "127.0.0.1",
|
||||||
|
"production" => "123.456.789.0",
|
||||||
|
],
|
||||||
|
"pickles" => [
|
||||||
|
"namespace" => "",
|
||||||
|
"datasource" => "mysql",
|
||||||
|
],
|
||||||
|
"datasources" => [
|
||||||
|
"mysql" => [
|
||||||
|
"type" => "mysql",
|
||||||
|
"driver" => "pdo_mysql",
|
||||||
|
"database" => "test",
|
||||||
|
"hostname" => "localhost",
|
||||||
|
"username" => "root",
|
||||||
|
"password" => "",
|
||||||
|
"database" => "test",
|
||||||
|
],
|
||||||
|
],
|
||||||
|
];
|
||||||
|
');
|
||||||
|
|
||||||
|
Pickles\Config::getInstance('/tmp/pickles.php');
|
||||||
|
|
||||||
$db = Pickles\Database::getInstance();
|
$db = Pickles\Database::getInstance();
|
||||||
$db->open();
|
$db->open();
|
||||||
}
|
}
|
||||||
|
@ -101,9 +250,33 @@ class DatabaseTest extends PHPUnit_Framework_TestCase
|
||||||
|
|
||||||
public function testFetch()
|
public function testFetch()
|
||||||
{
|
{
|
||||||
$config = Pickles\Config::getInstance();
|
file_put_contents('/tmp/pickles.php', '<?php
|
||||||
$config->data['pickles']['logging'] = true;
|
$config = [
|
||||||
$config->data['pickles']['profiler'] = true;
|
"environments" => [
|
||||||
|
"local" => "127.0.0.1",
|
||||||
|
"production" => "123.456.789.0",
|
||||||
|
],
|
||||||
|
"pickles" => [
|
||||||
|
"namespace" => "",
|
||||||
|
"datasource" => "mysql",
|
||||||
|
"profiler" => true,
|
||||||
|
],
|
||||||
|
"datasources" => [
|
||||||
|
"mysql" => [
|
||||||
|
"type" => "mysql",
|
||||||
|
"driver" => "pdo_mysql",
|
||||||
|
"database" => "test",
|
||||||
|
"hostname" => "localhost",
|
||||||
|
"username" => "root",
|
||||||
|
"password" => "",
|
||||||
|
"database" => "test",
|
||||||
|
],
|
||||||
|
],
|
||||||
|
];
|
||||||
|
');
|
||||||
|
|
||||||
|
Pickles\Config::getInstance('/tmp/pickles.php');
|
||||||
|
|
||||||
$db = Pickles\Database::getInstance();
|
$db = Pickles\Database::getInstance();
|
||||||
$this->assertEquals([], $db->fetch('SELECT * FROM pickles WHERE id != ?', ['0']));
|
$this->assertEquals([], $db->fetch('SELECT * FROM pickles WHERE id != ?', ['0']));
|
||||||
}
|
}
|
||||||
|
@ -131,16 +304,32 @@ class DatabaseTest extends PHPUnit_Framework_TestCase
|
||||||
|
|
||||||
public function testGetInstancePostgreSQL()
|
public function testGetInstancePostgreSQL()
|
||||||
{
|
{
|
||||||
$config = Pickles\Config::getInstance();
|
file_put_contents('/tmp/pickles.php', '<?php
|
||||||
$config->data['pickles']['datasource'] = 'pgsql';
|
$config = [
|
||||||
$config->data['datasources']['pgsql'] = [
|
"environments" => [
|
||||||
'type' => 'pgsql',
|
"local" => "127.0.0.1",
|
||||||
'driver' => 'pdo_pgsql',
|
"production" => "123.456.789.0",
|
||||||
'hostname' => 'localhost',
|
],
|
||||||
'username' => '',
|
"pickles" => [
|
||||||
'password' => '',
|
"namespace" => "",
|
||||||
'database' => 'test',
|
"datasource" => "pgsql",
|
||||||
|
],
|
||||||
|
"datasources" => [
|
||||||
|
"pgsql" => [
|
||||||
|
"type" => "pgsql",
|
||||||
|
"driver" => "pdo_pgsql",
|
||||||
|
"database" => "test",
|
||||||
|
"hostname" => "localhost",
|
||||||
|
"username" => "root",
|
||||||
|
"password" => "",
|
||||||
|
"database" => "test",
|
||||||
|
],
|
||||||
|
],
|
||||||
];
|
];
|
||||||
|
');
|
||||||
|
|
||||||
|
Pickles\Config::getInstance('/tmp/pickles.php');
|
||||||
|
|
||||||
$this->assertInstanceOf('Pickles\\Database', Pickles\Database::getInstance());
|
$this->assertInstanceOf('Pickles\\Database', Pickles\Database::getInstance());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -150,24 +339,65 @@ class DatabaseTest extends PHPUnit_Framework_TestCase
|
||||||
*/
|
*/
|
||||||
public function testOpenPostgreSQL()
|
public function testOpenPostgreSQL()
|
||||||
{
|
{
|
||||||
// Also throws an exception since I don't have PostgreSQL set up
|
file_put_contents('/tmp/pickles.php', '<?php
|
||||||
$config = Pickles\Config::getInstance();
|
$config = [
|
||||||
|
"environments" => [
|
||||||
|
"local" => "127.0.0.1",
|
||||||
|
"production" => "123.456.789.0",
|
||||||
|
],
|
||||||
|
"pickles" => [
|
||||||
|
"namespace" => "",
|
||||||
|
"datasource" => "pgsql",
|
||||||
|
],
|
||||||
|
"datasources" => [
|
||||||
|
"pgsql" => [
|
||||||
|
"type" => "pgsql",
|
||||||
|
"driver" => "pdo_pgsql",
|
||||||
|
"database" => "test",
|
||||||
|
"hostname" => "localhost",
|
||||||
|
"username" => "root",
|
||||||
|
"password" => "",
|
||||||
|
"database" => "test",
|
||||||
|
],
|
||||||
|
],
|
||||||
|
];
|
||||||
|
');
|
||||||
|
|
||||||
|
Pickles\Config::getInstance('/tmp/pickles.php');
|
||||||
|
|
||||||
|
// Throws an error because I don't have PostgreSQL installed
|
||||||
$db = Pickles\Database::getInstance();
|
$db = Pickles\Database::getInstance();
|
||||||
$db->open();
|
$db->open();
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testGetInstanceSQLite()
|
public function testGetInstanceSQLite()
|
||||||
{
|
{
|
||||||
$config = Pickles\Config::getInstance();
|
file_put_contents('/tmp/pickles.php', '<?php
|
||||||
$config->data['pickles']['datasource'] = 'sqlite';
|
$config = [
|
||||||
$config->data['datasources']['sqlite'] = [
|
"environments" => [
|
||||||
'type' => 'sqlite',
|
"local" => "127.0.0.1",
|
||||||
'driver' => 'pdo_sqlite',
|
"production" => "123.456.789.0",
|
||||||
'hostname' => 'localhost',
|
],
|
||||||
'username' => '',
|
"pickles" => [
|
||||||
'password' => '',
|
"namespace" => "",
|
||||||
'database' => 'test',
|
"datasource" => "sqlite",
|
||||||
|
],
|
||||||
|
"datasources" => [
|
||||||
|
"sqlite" => [
|
||||||
|
"type" => "sqlite",
|
||||||
|
"driver" => "pdo_sqlite",
|
||||||
|
"database" => "test",
|
||||||
|
"hostname" => "localhost",
|
||||||
|
"username" => "root",
|
||||||
|
"password" => "",
|
||||||
|
"database" => "test",
|
||||||
|
],
|
||||||
|
],
|
||||||
];
|
];
|
||||||
|
');
|
||||||
|
|
||||||
|
Pickles\Config::getInstance('/tmp/pickles.php');
|
||||||
|
|
||||||
$this->assertInstanceOf('Pickles\\Database', Pickles\Database::getInstance());
|
$this->assertInstanceOf('Pickles\\Database', Pickles\Database::getInstance());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -177,16 +407,32 @@ class DatabaseTest extends PHPUnit_Framework_TestCase
|
||||||
*/
|
*/
|
||||||
public function testGetInstanceInvalidDriver()
|
public function testGetInstanceInvalidDriver()
|
||||||
{
|
{
|
||||||
$config = Pickles\Config::getInstance();
|
file_put_contents('/tmp/pickles.php', '<?php
|
||||||
$config->data['pickles']['datasource'] = 'invalid';
|
$config = [
|
||||||
$config->data['datasources']['invalid'] = [
|
"environments" => [
|
||||||
'type' => 'invalid',
|
"local" => "127.0.0.1",
|
||||||
'driver' => 'pdo_invalid',
|
"production" => "123.456.789.0",
|
||||||
'hostname' => 'localhost',
|
],
|
||||||
'username' => '',
|
"pickles" => [
|
||||||
'password' => '',
|
"namespace" => "",
|
||||||
'database' => 'test',
|
"datasource" => "invalid",
|
||||||
|
],
|
||||||
|
"datasources" => [
|
||||||
|
"invalid" => [
|
||||||
|
"type" => "invalid",
|
||||||
|
"driver" => "pdo_invalid",
|
||||||
|
"database" => "test",
|
||||||
|
"hostname" => "localhost",
|
||||||
|
"username" => "root",
|
||||||
|
"password" => "",
|
||||||
|
"database" => "test",
|
||||||
|
],
|
||||||
|
],
|
||||||
];
|
];
|
||||||
|
');
|
||||||
|
|
||||||
|
Pickles\Config::getInstance('/tmp/pickles.php');
|
||||||
|
|
||||||
Pickles\Database::getInstance();
|
Pickles\Database::getInstance();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue