Fixes bug in serendipity_serverOffsetHour (cp. http://board.s9y.org/viewtopic.php?f=3&t=19963) and adds test case

This commit is contained in:
Matthias Gutjahr 2014-06-05 16:41:56 +02:00
parent b515c7f050
commit becf99ad1f
5 changed files with 105 additions and 1 deletions

1
.gitignore vendored
View File

@ -15,3 +15,4 @@ plugins/additional_plugins*
.DS_Store
.editorconfig
*.git
tests/phpunit.xml

View File

@ -62,7 +62,7 @@ function serendipity_gzCompression() {
function serendipity_serverOffsetHour($timestamp = null, $negative = false) {
global $serendipity;
if ($timestamp == null) {
if ($timestamp === null) {
$timestamp = time();
}

2
tests/bootstrap.php Normal file
View File

@ -0,0 +1,2 @@
<?php
define('S9Y_INCLUDE_PATH', dirname(__FILE__) . '/../');

View File

@ -0,0 +1,73 @@
<?php
$serendipity['dbType'] = 'pdo-sqlite';
require_once dirname(__FILE__) . '/../../include/functions.inc.php';
/**
* Class functionsTest
*/
class functionsTest extends PHPUnit_Framework_TestCase
{
/**
* @test
* @dataProvider serverOffsetHourDataProvider
*/
public function test_serendipity_serverOffsetHour($serverOffsetHours, $timestamp, $negative, $expected)
{
global $serendipity;
$serendipity['serverOffsetHours'] = $serverOffsetHours;
$result = serendipity_serverOffsetHour($timestamp, $negative);
$this->assertEquals($expected, $result);
}
/**
* @return array
*/
public function serverOffsetHourDataProvider()
{
return array(
array(0, 0, false, 0),
array(0, 0, true, 0),
array(0, 960793800, false, 960793800),
array(0, 960793800, true, 960793800),
array(10, 0, false, 36000),
array(10, 0, true, -36000),
array(10, 960793800, false, 960829800),
array(10, 960793800, true, 960757800),
);
}
/**
* @test
* @dataProvider serverOffsetHourWithTimestampNullDataProvider
*/
public function test_serendipity_serverOffsetHourWithTimestampNull($serverOffsetHours, $negative)
{
global $serendipity;
$now = time();
$serendipity['serverOffsetHours'] = $serverOffsetHours;
$result = serendipity_serverOffsetHour(null, $negative);
if ($serverOffsetHours > 0) {
if ($negative) {
$this->assertGreaterThanOrEqual($now - ($serverOffsetHours * 3600), $result);
} else {
$this->assertGreaterThan($now - ($serverOffsetHours * 3600), $result);
}
} else {
$this->assertGreaterThanOrEqual($now, $result);
}
}
/**
* @return array
*/
public function serverOffsetHourWithTimestampNullDataProvider()
{
return array(
array(null, false),
array(null, true),
array(10, false),
array(10, true),
);
}
}

28
tests/phpunit.xml.dist Normal file
View File

@ -0,0 +1,28 @@
<?xml version="1.0" encoding="UTF-8" ?>
<phpunit bootstrap="bootstrap.php"
backupGlobals="true"
convertErrorsToExceptions="true"
convertNoticesToExceptions="true"
convertWarningsToExceptions="true"
colors="true">
<php>
<const name="IN_serendipity" value="true"/>
<!--<const name="IS_installed" value="true"/>-->
<!--<const name="USERLEVEL_ADMIN" value="255"/>-->
<!--<const name="USERLEVEL_CHIEF" value="1"/>-->
<!--<const name="USERLEVEL_EDITOR" value="0"/>-->
<!--<const name="DB_DSN" value="sqlite:dbname=s9y_test;host=localhost" />-->
<!--<const name="DB_HOST" value="localhost" />-->
<!--<const name="DB_TYPE" value="pdo-sqlite" />-->
<!--<const name="DB_USER" value="s9y_test" />-->
<!--<const name="DB_PASSWD" value="s9y_test" />-->
<!--<const name="DB_DBNAME" value="s9y_test" />-->
<!--<const name="TEST_DB" value="test.db" />-->
<!--<const name="PATH_SMARTY_COMPILE" value="templates_c" />-->
</php>
<testsuites>
<testsuite name="include">
<directory>../tests/include</directory>
</testsuite>
</testsuites>
</phpunit>