*/
class LinkFilterTest extends PHPUnit_Framework_TestCase
{
+ /**
+ * @var string Test datastore path.
+ */
+ protected static $testDatastore = 'sandbox/datastore.php';
/**
* @var LinkFilter instance.
*/
protected static $linkFilter;
+ /**
+ * @var ReferenceLinkDB instance
+ */
+ protected static $refDB;
+
+ /**
+ * @var LinkDB instance
+ */
+ protected static $linkDB;
+
/**
* Instanciate linkFilter with ReferenceLinkDB data.
*/
public static function setUpBeforeClass()
{
- $refDB = new ReferenceLinkDB();
- self::$linkFilter = new LinkFilter($refDB->getLinks());
+ self::$refDB = new ReferenceLinkDB();
+ self::$refDB->write(self::$testDatastore);
+ self::$linkDB = new LinkDB(self::$testDatastore, true, false);
+ self::$linkFilter = new LinkFilter(self::$linkDB);
}
/**
public function testFilter()
{
$this->assertEquals(
- ReferenceLinkDB::$NB_LINKS_TOTAL,
+ self::$refDB->countLinks(),
count(self::$linkFilter->filter('', ''))
);
+ $this->assertEquals(
+ self::$refDB->countLinks(),
+ count(self::$linkFilter->filter('', '', 'all'))
+ );
+
+ $this->assertEquals(
+ self::$refDB->countLinks(),
+ count(self::$linkFilter->filter('', '', 'randomstr'))
+ );
+
// Private only.
$this->assertEquals(
- 2,
- count(self::$linkFilter->filter('', '', false, true))
+ self::$refDB->countPrivateLinks(),
+ count(self::$linkFilter->filter('', '', false, 'private'))
+ );
+
+ // Public only.
+ $this->assertEquals(
+ self::$refDB->countPublicLinks(),
+ count(self::$linkFilter->filter('', '', false, 'public'))
);
$this->assertEquals(
count(self::$linkFilter->filter(LinkFilter::$FILTER_TAG, ''))
);
+ $this->assertEquals(
+ self::$refDB->countUntaggedLinks(),
+ count(self::$linkFilter->filter(LinkFilter::$FILTER_TAG, /*$request=*/'', /*$casesensitive=*/false, /*$visibility=*/'all', /*$untaggedonly=*/true))
+ );
+
$this->assertEquals(
ReferenceLinkDB::$NB_LINKS_TOTAL,
count(self::$linkFilter->filter(LinkFilter::$FILTER_TEXT, ''))
count(self::$linkFilter->filter(LinkFilter::$FILTER_TAG, 'web', false))
);
+ $this->assertEquals(
+ 4,
+ count(self::$linkFilter->filter(LinkFilter::$FILTER_TAG, 'web', false, 'all'))
+ );
+
+ $this->assertEquals(
+ 4,
+ count(self::$linkFilter->filter(LinkFilter::$FILTER_TAG, 'web', false, 'default-blabla'))
+ );
+
// Private only.
$this->assertEquals(
1,
- count(self::$linkFilter->filter(LinkFilter::$FILTER_TAG, 'web', false, true))
+ count(self::$linkFilter->filter(LinkFilter::$FILTER_TAG, 'web', false, 'private'))
+ );
+
+ // Public only.
+ $this->assertEquals(
+ 3,
+ count(self::$linkFilter->filter(LinkFilter::$FILTER_TAG, 'web', false, 'public'))
);
}
public function testFilterDay()
{
$this->assertEquals(
- 3,
+ 4,
count(self::$linkFilter->filter(LinkFilter::$FILTER_DAY, '20121206'))
);
}
$this->assertEquals(
'MediaGoblin',
- $links['20130614_184135']['title']
+ $links[7]['title']
);
}
/**
* No link for this hash
+ *
+ * @expectedException LinkNotFoundException
*/
public function testFilterUnknownSmallHash()
{
- $this->assertEquals(
- 0,
- count(self::$linkFilter->filter(LinkFilter::$FILTER_HASH, 'Iblaah'))
- );
+ self::$linkFilter->filter(LinkFilter::$FILTER_HASH, 'Iblaah');
}
/**
public function testFilterFullTextTags()
{
$this->assertEquals(
- 2,
- count(self::$linkFilter->filter(LinkFilter::$FILTER_TEXT, 'gnu'))
+ 6,
+ count(self::$linkFilter->filter(LinkFilter::$FILTER_TEXT, 'web'))
+ );
+
+ $this->assertEquals(
+ 6,
+ count(self::$linkFilter->filter(LinkFilter::$FILTER_TEXT, 'web', 'all'))
+ );
+
+ $this->assertEquals(
+ 6,
+ count(self::$linkFilter->filter(LinkFilter::$FILTER_TEXT, 'web', 'bla'))
);
// Private only.
$this->assertEquals(
1,
- count(self::$linkFilter->filter(LinkFilter::$FILTER_TEXT, 'web', false, true))
+ count(self::$linkFilter->filter(LinkFilter::$FILTER_TEXT, 'web', false, 'private'))
+ );
+
+ // Public only.
+ $this->assertEquals(
+ 5,
+ count(self::$linkFilter->filter(LinkFilter::$FILTER_TEXT, 'web', false, 'public'))
);
}
);
$this->assertEquals(
- 6,
+ ReferenceLinkDB::$NB_LINKS_TOTAL - 1,
count(self::$linkFilter->filter(LinkFilter::$FILTER_TEXT, '-revolution'))
);
}
);
$this->assertEquals(
- 6,
+ ReferenceLinkDB::$NB_LINKS_TOTAL - 1,
count(self::$linkFilter->filter(LinkFilter::$FILTER_TAG, '-free'))
);
}
array('', $terms)
))
);
+ $this->assertEquals(
+ 1,
+ count(self::$linkFilter->filter(
+ LinkFilter::$FILTER_TAG | LinkFilter::$FILTER_TEXT,
+ array(false, 'PSR-2')
+ ))
+ );
$this->assertEquals(
1,
count(self::$linkFilter->filter(
))
);
}
+
+ /**
+ * Filter links by #hashtag.
+ */
+ public function testFilterByHashtag()
+ {
+ $hashtag = 'hashtag';
+ $this->assertEquals(
+ 3,
+ count(self::$linkFilter->filter(
+ LinkFilter::$FILTER_TAG,
+ $hashtag
+ ))
+ );
+
+ $hashtag = 'private';
+ $this->assertEquals(
+ 1,
+ count(self::$linkFilter->filter(
+ LinkFilter::$FILTER_TAG,
+ $hashtag,
+ false,
+ 'private'
+ ))
+ );
+ }
}