diff --git a/tests/SearchHistoryTest.php b/tests/SearchHistoryTest.php index 3716b37..f140063 100644 --- a/tests/SearchHistoryTest.php +++ b/tests/SearchHistoryTest.php @@ -55,63 +55,139 @@ class SearchHistoryTest extends TestBase + /** + * Set up all services + * + * @return void + */ protected function setUp() { - $this->us =SemanticScuttle_Service_Factory::get('User'); - $this->bs =SemanticScuttle_Service_Factory::get('Bookmark'); - $this->bs->deleteAll(); - $this->b2ts =SemanticScuttle_Service_Factory::get('Bookmark2Tag'); - $this->b2ts->deleteAll(); - $this->tts =SemanticScuttle_Service_Factory::get('Tag2Tag'); - $this->tts->deleteAll(); - $this->tsts =SemanticScuttle_Service_Factory::get('TagStat'); - $this->tsts->deleteAll(); - $this->shs =SemanticScuttle_Service_Factory::get('SearchHistory'); - $this->shs->deleteAll(); + $this->us = SemanticScuttle_Service_Factory::get('User'); + $this->bs = SemanticScuttle_Service_Factory::get('Bookmark'); + $this->bs->deleteAll(); + + $this->b2ts =SemanticScuttle_Service_Factory::get('Bookmark2Tag'); + $this->b2ts->deleteAll(); + + $this->tts = SemanticScuttle_Service_Factory::get('Tag2Tag'); + $this->tts->deleteAll(); + + $this->tsts = SemanticScuttle_Service_Factory::get('TagStat'); + $this->tsts->deleteAll(); + + $this->shs = SemanticScuttle_Service_Factory::get('SearchHistory'); + $this->shs->deleteAll(); + } + + /** + * Tests if adding searches to the database works + */ + public function testAddSearch() + { + $this->assertEquals(0, $this->shs->countSearches()); + + $this->assertTrue( + $this->shs->addSearch('testsearchterm', 'all', 0) + ); + $this->assertEquals(1, $this->shs->countSearches()); + } + + /** + * Tests if adding a search without terms should fail + */ + public function testAddSearchNoTerms() + { + $this->assertEquals(0, $this->shs->countSearches()); + + $this->assertFalse( + $this->shs->addSearch('', 'all', 0) + ); + $this->assertEquals(0, $this->shs->countSearches()); } public function testSearchHistory() { - $shs = $this->shs; + $shs = $this->shs; - $terms = 'bbqsdkbb;,:,:q;,qddds&é"\'\\\\\(-è_çà)'; - $terms2 = '~#{|`]'; - $range = 'all'; - $nbResults = 10908; - $uId = 10; + $terms = 'bbqsdkbb;,:,:q;,qddds&é"\'\\\\\(-è_çà)'; + $terms2 = '~#{|`]'; + $range = 'all'; + $nbResults = 10908; + $uId = 10; - $shs->addSearch($terms, $range, $nbResults, $uId); - $shs->addSearch($terms2, $range, $nbResults, $uId); - $shs->addSearch('', $range, $nbResults, $uId); // A void search must not be saved + $shs->addSearch($terms, $range, $nbResults, $uId); + $shs->addSearch($terms2, $range, $nbResults, $uId); + $shs->addSearch('', $range, $nbResults, $uId); // A void search must not be saved - $searches = $shs->getAllSearches(); - $this->assertSame(2, count($searches)); - $searches = $shs->getAllSearches($range, $uId); - $this->assertEquals(2, count($searches)); - $searches = $shs->getAllSearches($range, 20); // fake userid - $this->assertEquals(0, count($searches)); - $searches = $shs->getAllSearches($range, $uId, 1); - $this->assertEquals(1, count($searches)); - $searches = $shs->getAllSearches($range, null, 1, 1); - $this->assertEquals(1, count($searches)); + $searches = $shs->getAllSearches(); + $this->assertSame(2, count($searches)); + $searches = $shs->getAllSearches($range, $uId); + $this->assertEquals(2, count($searches)); + $searches = $shs->getAllSearches($range, 20); // fake userid + $this->assertEquals(0, count($searches)); + $searches = $shs->getAllSearches($range, $uId, 1); + $this->assertEquals(1, count($searches)); + $searches = $shs->getAllSearches($range, null, 1, 1); + $this->assertEquals(1, count($searches)); - //test content of results - $searches = $shs->getAllSearches(); - $this->assertSame($terms2, $searches[0]['shTerms']); - $this->assertSame($range, $searches[0]['shRange']); - $this->assertEquals($nbResults, $searches[0]['shNbResults']); - $this->assertEquals($uId, $searches[0]['uId']); - $this->assertSame($terms, $searches[1]['shTerms']); - $this->assertSame($range, $searches[1]['shRange']); - $this->assertEquals($nbResults, $searches[1]['shNbResults']); - $this->assertEquals($uId, $searches[1]['uId']); + //test content of results + $searches = $shs->getAllSearches(); + $this->assertSame($terms2, $searches[0]['shTerms']); + $this->assertSame($range, $searches[0]['shRange']); + $this->assertEquals($nbResults, $searches[0]['shNbResults']); + $this->assertEquals($uId, $searches[0]['uId']); + $this->assertSame($terms, $searches[1]['shTerms']); + $this->assertSame($range, $searches[1]['shRange']); + $this->assertEquals($nbResults, $searches[1]['shNbResults']); + $this->assertEquals($uId, $searches[1]['uId']); - //test distinct parameter - $shs->addSearch($terms, $range, $nbResults, 30); // we repeat a search (same terms) - $searches = $shs->getAllSearches(); - $this->assertSame(3, count($searches)); - $searches = $shs->getAllSearches(NULL, NULL, NULL, NULL, true); - $this->assertSame(2, count($searches)); + //test distinct parameter + $shs->addSearch( + $terms, $range, $nbResults, 30 + ); // we repeat a search (same terms) + $searches = $shs->getAllSearches(); + $this->assertSame(3, count($searches)); + $searches = $shs->getAllSearches(null, null, null, null, true); + $this->assertSame(2, count($searches)); + } + + /** + * Deleting the oldest search without any historical searches + */ + public function testDeleteOldestSearchNone() + { + $this->assertEquals(0, $this->shs->countSearches()); + $this->assertTrue($this->shs->deleteOldestSearch()); + $this->assertEquals(0, $this->shs->countSearches()); + } + + /** + * Test deleting the oldest search + */ + public function testDeleteOldestSearchSome() + { + $this->assertEquals(0, $this->shs->countSearches()); + $this->shs->addSearch('testsearchterm1', 'all', 0); + $this->shs->addSearch('testsearchterm2', 'all', 0); + + $rows = $this->shs->getAllSearches(); + $this->assertEquals(2, count($rows)); + + $highestId = -1; + foreach ($rows as $row) { + if ($row['shId'] > $highestId) { + $highestId = $row['shId']; + } + } + + $this->shs->deleteOldestSearch(); + + $rows = $this->shs->getAllSearches(); + $this->assertEquals(1, count($rows)); + $this->assertEquals( + $highestId, + $rows[0]['shId'] + ); } }