diff options
author | Bart Visscher <bartv@thisnet.nl> | 2012-10-12 15:47:35 +0200 |
---|---|---|
committer | Bart Visscher <bartv@thisnet.nl> | 2012-10-12 15:47:41 +0200 |
commit | 35442e54744d74b18933d4e0b026ad189d90a650 (patch) | |
tree | b8ba6c6ecfaeea156883432f508fa831b612d21c /tests/lib/db.php | |
parent | 9a35bd76fb0d740029d0d827209a240a6b70777c (diff) | |
download | nextcloud-server-35442e54744d74b18933d4e0b026ad189d90a650.tar.gz nextcloud-server-35442e54744d74b18933d4e0b026ad189d90a650.zip |
Add unit tests for OC_DB
Diffstat (limited to 'tests/lib/db.php')
-rw-r--r-- | tests/lib/db.php | 90 |
1 files changed, 90 insertions, 0 deletions
diff --git a/tests/lib/db.php b/tests/lib/db.php new file mode 100644 index 00000000000..4f1f03ae6f2 --- /dev/null +++ b/tests/lib/db.php @@ -0,0 +1,90 @@ +<?php +/** + * Copyright (c) 2012 Bart Visscher <bartv@thisnet.nl> + * This file is licensed under the Affero General Public License version 3 or + * later. + * See the COPYING-README file. + */ + +class Test_DB extends UnitTestCase { + protected static $schema_file = 'static://test_db_scheme'; + protected $test_prefix; + + public function setUp() { + $dbfile = OC::$SERVERROOT.'/tests/data/db_structure.xml'; + + $r = '_'.OC_Util::generate_random_bytes('4').'_'; + $content = file_get_contents( $dbfile ); + $content = str_replace( '*dbprefix*', '*dbprefix*'.$r, $content ); + file_put_contents( self::$schema_file, $content ); + + $this->test_prefix = $r; + $this->table1 = $this->test_prefix.'contacts_addressbooks'; + $this->table2 = $this->test_prefix.'contacts_cards'; + } + + public function tearDown() { + unlink(self::$schema_file); + } + + protected function setUpDB() { + OC_DB::disconnect(); + OC_DB::createDbFromStructure(self::$schema_file); + } + protected function tearDownDB() { + OC_DB::removeDBStructure(self::$schema_file); + } + + // every thing in one test, phpunit messes with MDB2 + // also setUpDB and tearDownDB only once, otherwise sqlite doesn't finish + public function testDBCompatibility() { + $this->setUpDB(); + $this->doTestQuotes(); + $this->doTestNOW(); + $this->doTestUNIX_TIMESTAMP(); + $this->tearDownDB(); + } + + public function doTestQuotes() { + //$this->setUpDB(); + $query = OC_DB::prepare('SELECT `fullname` FROM *PREFIX*'.$this->table2.' WHERE `uri` = ?'); + $result = $query->execute(array('uri_1')); + $this->assertTrue($result); + $row = $result->fetchRow(); + $this->assertFalse($row); + $query = OC_DB::prepare('INSERT INTO *PREFIX*'.$this->table2.' (`fullname`,`uri`) VALUES (?,?)'); + $result = $query->execute(array('fullname test', 'uri_1')); + $this->assertTrue($result); + $query = OC_DB::prepare('SELECT `fullname`,`uri` FROM *PREFIX*'.$this->table2.' WHERE `uri` = ?'); + $result = $query->execute(array('uri_1')); + $this->assertTrue($result); + $row = $result->fetchRow(); + $this->assertArrayHasKey('fullname', $row); + $this->assertEqual($row['fullname'], 'fullname test'); + $row = $result->fetchRow(); + $this->assertFalse($row); + //$this->tearDownDB(); + } + + public function doTestNOW() { + //$this->setUpDB(); + $query = OC_DB::prepare('INSERT INTO *PREFIX*'.$this->table2.' (`fullname`,`uri`) VALUES (NOW(),?)'); + $result = $query->execute(array('uri_2')); + $this->assertTrue($result); + $query = OC_DB::prepare('SELECT `fullname`,`uri` FROM *PREFIX*'.$this->table2.' WHERE `uri` = ?'); + $result = $query->execute(array('uri_2')); + $this->assertTrue($result); + //$this->tearDownDB(); + } + + public function doTestUNIX_TIMESTAMP() { + //$this->setUpDB(); + $query = OC_DB::prepare('INSERT INTO *PREFIX*'.$this->table2.' (`fullname`,`uri`) VALUES (UNIX_TIMESTAMP(),?)'); + $result = $query->execute(array('uri_3')); + $this->assertTrue($result); + $query = OC_DB::prepare('SELECT `fullname`,`uri` FROM *PREFIX*'.$this->table2.' WHERE `uri` = ?'); + $result = $query->execute(array('uri_3')); + $this->assertTrue($result); + //$this->tearDownDB(); + } +} |