dba = new \dba_pdo( \getenv('hz_db_server'), \getenv('hz_db_scheme'), \getenv('hz_db_port'), \getenv('hz_db_user'), \getenv('hz_db_pass'), \getenv('hz_db_database') ); } protected function assertPreConditions() { $this->assertSame('pdo', $this->dba->getdriver(), "Driver is expected to be 'pdo'."); $this->assertInstanceOf('dba_driver', $this->dba); $this->assertTrue($this->dba->connected, 'Pre condition failed, DB is not connected.'); $this->assertInstanceOf('PDO', $this->dba->db); } protected function tearDown() { $this->dba = null; } /** * @group mysql */ public function testQuoteintervalOnMysql() { $this->assertSame('value', $this->dba->quote_interval('value')); } /** * @group postgresql */ public function testQuoteintervalOnPostgresql() { $this->assertSame("'value'", $this->dba->quote_interval('value')); } /** * @group mysql */ public function testGenerateMysqlConcatSql() { $this->assertSame('GROUP_CONCAT(DISTINCT field SEPARATOR \';\')', $this->dba->concat('field', ';')); $this->assertSame('GROUP_CONCAT(DISTINCT field2 SEPARATOR \' \')', $this->dba->concat('field2', ' ')); } /** * @group postgresql */ public function testGeneratePostgresqlConcatSql() { $this->assertSame('string_agg(field,\';\')', $this->dba->concat('field', ';')); $this->assertSame('string_agg(field2,\' \')', $this->dba->concat('field2', ' ')); } public function testConnectToSqlServer() { // connect() is done in dba_pdo constructor which is called in setUp() $this->assertTrue($this->dba->connected); } /** * @depends testConnectToSqlServer */ public function testCloseSqlServerConnection() { $this->dba->close(); $this->assertNull($this->dba->db); $this->assertFalse($this->dba->connected); } /** * @depends testConnectToSqlServer */ public function testSelectQueryShouldReturnArray() { $ret = $this->dba->q('SELECT * FROM account'); $this->assertTrue(is_array($ret)); } /** * @depends testConnectToSqlServer */ public function testInsertQueryShouldReturnPdostatement() { // Fixture account.yml adds two entries to account table $this->assertEquals(2, $this->getConnection()->getRowCount('account'), 'Pre-Condition'); $ret = $this->dba->q('INSERT INTO account (account_id, account_email, account_language) VALUES (100, \'insert@example.com\', \'de\') '); $this->assertInstanceOf('PDOStatement', $ret); $this->assertEquals(3, $this->getConnection()->getRowCount('account'), 'Inserting failed'); } public function testConnectToWrongSqlServer() { $nodba = new \dba_pdo('wrongserver', \getenv('hz_db_scheme'), \getenv('hz_db_port'), \getenv('hz_db_user'), \getenv('hz_db_pass'), \getenv('hz_db_database') ); $this->assertSame('pdo', $nodba->getdriver()); $this->assertInstanceOf('dba_pdo', $nodba); $this->assertFalse($nodba->connected); $this->assertNull($nodba->db); $this->assertFalse($nodba->q('SELECT * FROM account')); } /** * @depends testConnectToSqlServer */ public function testSelectQueryToNonExistentTableShouldReturnFalse() { $ret = $this->dba->q('SELECT * FROM non_existent_table'); $this->assertFalse($ret); } /** * @depends testConnectToSqlServer */ public function testInsertQueryToNonExistentTableShouldReturnEmptyArray() { $ret = $this->dba->q('INSERT INTO non_existent_table (account_email, account_language) VALUES (\'email@example.com\', \'en\') '); $this->assertNotInstanceOf('PDOStatement', $ret); $this->isEmpty($ret); } }