Module: appdb Branch: master Commit: d8c67b4740e636ff0f7c5e9d380c6a481d1c120e URL: http://source.winehq.org/git/appdb.git/?a=commit;h=d8c67b4740e636ff0f7c5e9d3...
Author: Alexander Nicolaysen Sørnes alex@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",