Add database tests for INSERT/SELECT date format.

This commit is contained in:
Andreas Fischer 2013-09-12 22:36:28 +02:00
parent 786017c247
commit bd1163b7d5
3 changed files with 80 additions and 0 deletions

View File

@ -178,4 +178,25 @@
</declaration>
</table>
<table>
<name>*dbprefix*timestamp</name>
<declaration>
<field>
<name>id</name>
<autoincrement>1</autoincrement>
<type>integer</type>
<default>0</default>
<notnull>true</notnull>
<length>4</length>
</field>
<field>
<name>timestamptest</name>
<type>timestamp</type>
<default></default>
<notnull>false</notnull>
</field>
</declaration>
</table>
</database>

View File

@ -75,4 +75,25 @@
</table>
<table>
<name>*dbprefix*timestamp</name>
<declaration>
<field>
<name>id</name>
<autoincrement>1</autoincrement>
<type>integer</type>
<default>0</default>
<notnull>true</notnull>
<length>4</length>
</field>
<field>
<name>timestamptest</name>
<type>timestamp</type>
<default></default>
<notnull>false</notnull>
</field>
</declaration>
</table>
</database>

View File

@ -145,4 +145,42 @@ class Test_DB extends PHPUnit_Framework_TestCase {
$this->assertEquals(1, $result->numRows());
}
/**
* Tests whether the database is configured so it accepts and returns dates
* in the expected format.
*/
public function testTimestampDateFormat() {
$table = '*PREFIX*'.$this->test_prefix.'timestamp';
$column = 'timestamptest';
$expectedFormat = 'Y-m-d H:i:s';
$now = new \DateTime;
$query = OC_DB::prepare("INSERT INTO `$table` (`$column`) VALUES (?)");
$result = $query->execute(array($now->format($expectedFormat)));
$this->assertEquals(
1,
$result,
"Database failed to accept dates in the format '$expectedFormat'."
);
$id = OC_DB::insertid($table);
$query = OC_DB::prepare("SELECT * FROM `$table` WHERE `id` = ?");
$result = $query->execute(array($id));
$row = $result->fetchRow();
$dateFromDb = \DateTime::createFromFormat($expectedFormat, $row[$column]);
$this->assertInstanceOf(
'\DateTime',
$dateFromDb,
"Database failed to return dates in the format '$expectedFormat'."
);
$this->assertEquals(
$now->format('c u'),
$dateFromDb->format('c u'),
'Failed asserting that the returned date is the same as the inserted.'
);
}
}