require_once 'application/Utils.php';
require_once 'tests/utils/ReferenceLinkDB.php';
-define('PHPPREFIX', '<?php /* ');
-define('PHPSUFFIX', ' */ ?>');
-
/**
* Unitary tests for LinkDB
{
// datastore to test write operations
protected static $testDatastore = 'tests/datastore.php';
- protected static $dummyDatastoreSHA1 = 'e3edea8ea7bb50be4bcb404df53fbb4546a7156e';
protected static $refDB = null;
protected static $publicLinkDB = null;
protected static $privateLinkDB = null;
public static function setUpBeforeClass()
{
self::$refDB = new ReferenceLinkDB();
- self::$refDB->write(self::$testDatastore, PHPPREFIX, PHPSUFFIX);
+ self::$refDB->write(self::$testDatastore);
- $GLOBALS['config']['DATASTORE'] = self::$testDatastore;
- self::$publicLinkDB = new LinkDB(false);
- self::$privateLinkDB = new LinkDB(true);
+ self::$publicLinkDB = new LinkDB(self::$testDatastore, false, false);
+ self::$privateLinkDB = new LinkDB(self::$testDatastore, true, false);
}
/**
*/
protected function setUp()
{
- $GLOBALS['config']['DATASTORE'] = self::$testDatastore;
if (file_exists(self::$testDatastore)) {
unlink(self::$testDatastore);
}
*/
public function testConstructLoggedIn()
{
- new LinkDB(true);
+ new LinkDB(self::$testDatastore, true, false);
$this->assertFileExists(self::$testDatastore);
}
*/
public function testConstructLoggedOut()
{
- new LinkDB(false);
+ new LinkDB(self::$testDatastore, false, false);
$this->assertFileExists(self::$testDatastore);
}
*/
public function testConstructDatastoreNotWriteable()
{
- $GLOBALS['config']['DATASTORE'] = 'null/store.db';
- new LinkDB(false);
+ new LinkDB('null/store.db', false, false);
}
/**
*/
public function testCheckDBNew()
{
- $linkDB = new LinkDB(false);
+ $linkDB = new LinkDB(self::$testDatastore, false, false);
unlink(self::$testDatastore);
$this->assertFileNotExists(self::$testDatastore);
- $checkDB = self::getMethod('checkDB');
+ $checkDB = self::getMethod('_checkDB');
$checkDB->invokeArgs($linkDB, array());
$this->assertFileExists(self::$testDatastore);
// ensure the correct data has been written
- $this->assertEquals(
- self::$dummyDatastoreSHA1,
- sha1_file(self::$testDatastore)
- );
+ $this->assertGreaterThan(0, filesize(self::$testDatastore));
}
/**
*/
public function testCheckDBLoad()
{
- $linkDB = new LinkDB(false);
- $this->assertEquals(
- self::$dummyDatastoreSHA1,
- sha1_file(self::$testDatastore)
- );
+ $linkDB = new LinkDB(self::$testDatastore, false, false);
+ $datastoreSize = filesize(self::$testDatastore);
+ $this->assertGreaterThan(0, $datastoreSize);
- $checkDB = self::getMethod('checkDB');
+ $checkDB = self::getMethod('_checkDB');
$checkDB->invokeArgs($linkDB, array());
// ensure the datastore is left unmodified
$this->assertEquals(
- self::$dummyDatastoreSHA1,
- sha1_file(self::$testDatastore)
+ $datastoreSize,
+ filesize(self::$testDatastore)
);
}
*/
public function testReadEmptyDB()
{
- file_put_contents(self::$testDatastore, PHPPREFIX.'S7QysKquBQA='.PHPSUFFIX);
- $emptyDB = new LinkDB(false);
+ file_put_contents(self::$testDatastore, '<?php /* S7QysKquBQA= */ ?>');
+ $emptyDB = new LinkDB(self::$testDatastore, false, false);
$this->assertEquals(0, sizeof($emptyDB));
$this->assertEquals(0, count($emptyDB));
}
*/
public function testSaveDB()
{
- $testDB = new LinkDB(true);
+ $testDB = new LinkDB(self::$testDatastore, true, false);
$dbSize = sizeof($testDB);
$link = array(
$testDB->savedb();
- $testDB = new LinkDB(true);
+ $testDB = new LinkDB(self::$testDatastore, true, false);
$this->assertEquals($dbSize + 1, sizeof($testDB));
}
);
}
+ /**
+ * Count existing links - public links hidden
+ */
+ public function testCountHiddenPublic()
+ {
+ $linkDB = new LinkDB(self::$testDatastore, false, true);
+
+ $this->assertEquals(
+ 0,
+ $linkDB->count()
+ );
+ $this->assertEquals(
+ 0,
+ $linkDB->count()
+ );
+ }
+
/**
* List the days for which links have been posted
*/
public function testDays()
{
$this->assertEquals(
- ['20121206', '20130614', '20150310'],
+ array('20121206', '20130614', '20150310'),
self::$publicLinkDB->days()
);
$this->assertEquals(
- ['20121206', '20130614', '20141125', '20150310'],
+ array('20121206', '20130614', '20141125', '20150310'),
self::$privateLinkDB->days()
);
}
public function testAllTags()
{
$this->assertEquals(
- [
+ array(
'web' => 3,
'cartoon' => 2,
'gnu' => 2,
'software' => 1,
'stallman' => 1,
'free' => 1
- ],
+ ),
self::$publicLinkDB->allTags()
);
$this->assertEquals(
- [
+ array(
'web' => 4,
'cartoon' => 3,
'gnu' => 2,
'w3c' => 1,
'css' => 1,
'Mercurial' => 1
- ],
+ ),
self::$privateLinkDB->allTags()
);
}
/**
* Use an invalid date format
+ * @expectedException Exception
+ * @expectedExceptionMessageRegExp /Invalid date format/
*/
- public function testFilterInvalidDay()
+ public function testFilterInvalidDayWithChars()
{
- $this->assertEquals(
- 0,
- sizeof(self::$privateLinkDB->filterDay('Rainy day, dream away'))
- );
+ self::$privateLinkDB->filterDay('Rainy day, dream away');
+ }
- // TODO: check input format
- $this->assertEquals(
- 6,
- sizeof(self::$privateLinkDB->filterDay('20'))
- );
+ /**
+ * Use an invalid date format
+ * @expectedException Exception
+ * @expectedExceptionMessageRegExp /Invalid date format/
+ */
+ public function testFilterInvalidDayDigits()
+ {
+ self::$privateLinkDB->filterDay('20');
}
/**