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