Alexander Nicolaysen Sørnes : test_om_objects: Extend objectGetEntries test

Chris Morgan cmorgan at winehq.org
Wed Jan 23 13:33:49 CST 2008


Module: appdb
Branch: master
Commit: d8c67b4740e636ff0f7c5e9d380c6a481d1c120e
URL:    http://source.winehq.org/git/appdb.git/?a=commit;h=d8c67b4740e636ff0f7c5e9d380c6a481d1c120e

Author: Alexander Nicolaysen Sørnes <alex at thehandofagony.com>
Date:   Wed Jan 23 15:10:49 2008 +0100

test_om_objects: Extend objectGetEntries test

---

 include/downloadurl.php       |    5 ++++
 include/note.php              |   14 +++++++++++
 unit_test/test_om_objects.php |   50 ++++++++++++++++++++++++++++++++++++++--
 3 files changed, 66 insertions(+), 3 deletions(-)

diff --git a/include/downloadurl.php b/include/downloadurl.php
index 91c5f47..68c35fd 100644
--- a/include/downloadurl.php
+++ b/include/downloadurl.php
@@ -437,6 +437,11 @@ class downloadurl
         return appData::objectGetEntries($sState, $iRows, $iStart, 'downloadurl');
     }
 
+    function objectGetEntriesCount($sState)
+    {
+        return appData::objectGetEntriesCount($sState, 'downloadurl');
+    }
+
     function objectGetHeader()
     {
         return appData::objectGetHeader("downloadurl");
diff --git a/include/note.php b/include/note.php
index b5a7a9e..0e640b9 100644
--- a/include/note.php
+++ b/include/note.php
@@ -327,6 +327,20 @@ class Note {
         return $hResult;
     }
 
+    function objectGetEntriesCount($sState)
+    {
+        $sQuery = "SELECT COUNT(DISTINCT noteId) as count FROM appNotes";
+        $hResult = query_parameters($sQuery);
+
+        if(!$hResult)
+            return false;
+
+        if(($oRow = mysql_fetch_object($hResult)))
+            return $oRow->count;
+
+        return false;
+    }
+
     //TODO: not sure how to best let users view a table of notes
     //      since the note contents could be very long we would only
     //      want to show a small amount of the text. Implement this
diff --git a/unit_test/test_om_objects.php b/unit_test/test_om_objects.php
index 5531d06..a1d7c23 100644
--- a/unit_test/test_om_objects.php
+++ b/unit_test/test_om_objects.php
@@ -97,9 +97,7 @@ function test_class($sClassName, $aTestMethods)
     {
         switch($sMethod)
         {
-            /* Should also test for queued entries, but vendor does not support
-               queueing yet */
-            case "objectGetEntries":
+            case 'objectGetEntries':
                 if(!$oTestObject = create_object($sClassName, $oUser))
                     return FALSE;
 
@@ -115,8 +113,38 @@ function test_class($sClassName, $aTestMethods)
                     return FALSE;
                 }
 
+                /* Create an object as a regular user */
+                $oTestObject2 = create_object($sClassName, $oUser, false);
+
+                /* objectGetEntries() and objectGetEntriesCount() should return matching results */
+                $iExpected = mysql_num_rows($oTestObject2->objectGetEntries('accepted'));
+                $iReceived = $oTestObject2->objectGetEntriesCount('accepted');
+                if($iExpected != $iReceived)
+                {
+                    error("ObjectGetEntriesCount returned $iReceived, objectGetEntries fetched $iExpected rows\n");
+                    error("FAILED\t\t$sClassName::$sMethod");
+                    cleanup_and_purge($oTestObject, $oUser);
+                    cleanup_and_purge($oTestObject2, $oUser);
+                    return false;
+                }
+
+                /* Now test for queued objects, as admin */
+                $oUser->addPriv('admin');
+                $iExpected = mysql_num_rows($oTestObject2->objectGetEntries('queued'));
+                $iReceived = $oTestObject2->objectGetEntriesCount('queued');
+                $oUser->delPriv('admin');
+                if($iExpected != $iReceived)
+                {
+                    error("ObjectGetEntriesCount returned $iReceived, objectGetEntries fetched $iExpected rows\n");
+                    error("FAILED\t\t$sClassName::$sMethod");
+                    cleanup_and_purge($oTestObject, $oUser);
+                    cleanup_and_purge($oTestObject2, $oUser);
+                    return false;
+                }
+
                 /* Class specific clean-up */
                 cleanup_and_purge($oTestObject, $oUser);
+                cleanup_and_purge($oTestObject2, $oUser);
 
                 echo "PASSED\t\t$sClassName::$sMethod\n";
             break;
@@ -190,6 +218,14 @@ function cleanup_and_purge($oObject, $oUser)
     cleanup($oObject);
     $oObject->purge();
 
+    switch(get_class($oObject))
+    {
+        case 'application':
+            $oVendor = new vendor($oObject->iVendorId);
+            $oVendor->purge();
+        break;
+    }
+
     if(!$bWasAdmin)
         $oUser->delPriv('admin');
 }
@@ -203,6 +239,13 @@ function create_object($sClassName, $oUser, $bAsAdmin = true)
     /* Set up one test entry, depending on class */
     switch($sClassName)
     {
+        // Some application functions require a vendor to be set
+        case 'application':
+            $oVendor = new vendor();
+            $oVendor->create();
+            $oTestObject->iVendorId = $oVendor->objectGetId();
+        break;
+
         case "bug":
           // create a bug in the bugzilla database, we need a valid
           // bug id to create a bug entry
@@ -304,6 +347,7 @@ function test_object_methods()
                           "mustBeQueued",
                           "objectGetChildren",
                           "objectGetEntries",
+                          'objectGetEntriesCount',
                           "objectGetHeader",
                           "objectGetId",
                           "objectGetMail",




More information about the wine-cvs mailing list