implement rewriteVotings() and unittest the method

git-svn-id: https://semanticscuttle.svn.sourceforge.net/svnroot/semanticscuttle/trunk@448 b3834d28-1941-0410-a4f8-b48e95affb8f
This commit is contained in:
cweiske 2009-10-28 22:15:14 +00:00
parent 03bc498eff
commit bb5205053e
2 changed files with 33 additions and 4 deletions

View file

@ -261,17 +261,18 @@ class SemanticScuttle_Service_Vote extends SemanticScuttle_DbService
* Re-calculates all votings for all bookmarks
* and updates the voting values in the bookmarks
* table.
* This is mainly meant to be an administrative method
* to fix a broken database.
*
* @return void
*/
public function rewriteVotings()
{
throw new Exception('Not implemented yet');
//FIXME
$bm = SemanticScuttle_Service_Factory::get('Bookmark');
$sql = 'UPDATE ' . $bm->getTableName() . ' as B SET bVoting = '
$bm = SemanticScuttle_Service_Factory::get('Bookmark');
$query = 'UPDATE ' . $bm->getTableName() . ' as B SET bVoting = '
. '(SELECT SUM(vote) FROM ' . $this->getTableName() . ' as V'
. ' WHERE V.bId = B.bId GROUP BY bid)';
$this->db->sql_query($query);
}

View file

@ -329,6 +329,34 @@ class VoteTest extends TestBase
$this->assertEquals(-1, $this->vs->getVote($bid, $uid));
}
/**
* Test that rewriting votings does work
*
* @return void
*/
public function testRewriteVotings()
{
$uid = 1;
$bid = $this->addBookmark();
$this->assertTrue($this->vs->vote($bid, $uid, 1));
$bm = $this->bs->getBookmark($bid);
$this->assertEquals(1, $bm['bVoting']);
$this->vs->deleteAll();
//we assume that $vs->deleteAll() does *not* reset
//voting in bookmarks table
$bm = $this->bs->getBookmark($bid);
$this->assertEquals(1, $bm['bVoting']);
$this->vs->rewriteVotings();
$bm = $this->bs->getBookmark($bid);
//now it should be reset to 0
$this->assertEquals(0, $bm['bVoting']);
}
}//class VoteTest extends TestBase