]> gitweb.fluxo.info Git - semanticscuttle.git/commitdiff
implement rewriteVotings() and unittest the method
authorcweiske <cweiske@b3834d28-1941-0410-a4f8-b48e95affb8f>
Wed, 28 Oct 2009 22:15:14 +0000 (22:15 +0000)
committercweiske <cweiske@b3834d28-1941-0410-a4f8-b48e95affb8f>
Wed, 28 Oct 2009 22:15:14 +0000 (22:15 +0000)
git-svn-id: https://semanticscuttle.svn.sourceforge.net/svnroot/semanticscuttle/trunk@448 b3834d28-1941-0410-a4f8-b48e95affb8f

src/SemanticScuttle/Service/Vote.php
tests/VoteTest.php

index 168040da0b355047080e49ad57c9c65e0fc5f512..89088f0a2efb6ae9992769ffe237bdb803410e87 100644 (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);
     }
 
 
index 2579709b9105ca7617391ad7fe1effd67181cb6f..b9a859d405bdf0ceb366afe9bc1b9aa4e2e8b87e 100644 (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