3 +--------------------------------------------------------------------+
4 | CiviCRM version 4.5 |
5 +--------------------------------------------------------------------+
6 | Copyright CiviCRM LLC (c) 2004-2014 |
7 +--------------------------------------------------------------------+
8 | This file is a part of CiviCRM. |
10 | CiviCRM is free software; you can copy, modify, and distribute it |
11 | under the terms of the GNU Affero General Public License |
12 | Version 3, 19 November 2007 and the CiviCRM Licensing Exception. |
14 | CiviCRM is distributed in the hope that it will be useful, but |
15 | WITHOUT ANY WARRANTY; without even the implied warranty of |
16 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. |
17 | See the GNU Affero General Public License for more details. |
19 | You should have received a copy of the GNU Affero General Public |
20 | License and the CiviCRM Licensing Exception along |
21 | with this program; if not, contact CiviCRM LLC |
22 | at info[AT]civicrm[DOT]org. If you have questions about the |
23 | GNU Affero General Public License or the licensing of CiviCRM, |
24 | see the CiviCRM license FAQ at http://civicrm.org/licensing |
25 +--------------------------------------------------------------------+
31 * @copyright CiviCRM LLC (c) 2004-2014
38 * Generic function to compare expected values after an api call to retrieved
41 * @daoName string DAO Name of object we're evaluating.
42 * @id int Id of object
43 * @match array Associative array of field name => expected value. Empty if asserting
44 * that a DELETE occurred
45 * @delete boolean True if we're checking that a DELETE action occurred.
47 function assertDBState(&$testCase, $daoName, $id, $match, $delete = FALSE) {
49 // adding this here since developers forget to check for an id
50 // and hence we get the first value in the db
51 $testCase->fail('ID not populated. Please fix your assertDBState usage!!!');
54 $object = new $daoName();
58 // If we're asserting successful record deletion, make sure object is NOT found.
60 if ($object->find(TRUE)) {
61 $testCase->fail("Object not deleted by delete operation: $daoName, $id");
66 // Otherwise check matches of DAO field values against expected values in $match.
67 if ($object->find(TRUE)) {
68 $fields = &$object->fields();
69 foreach ($fields as $name => $value) {
70 $dbName = $value['name'];
71 if (isset($match[$name])) {
73 $testCase->assertEquals($object->$dbName, $match[$name]);
75 elseif (isset($match[$dbName])) {
77 $testCase->assertEquals($object->$dbName, $match[$dbName]);
82 $testCase->fail("Could not retrieve object: $daoName, $id");
85 $matchSize = count($match);
86 if ($verifiedCount != $matchSize) {
87 $testCase->fail("Did not verify all fields in match array: $daoName, $id. Verified count = $verifiedCount. Match array size = $matchSize");
92 * Request a record from the DB by seachColumn+searchValue. Success if a record is found.
94 function assertDBNotNull(&$testCase, $daoName, $searchValue, $returnColumn, $searchColumn, $message) {
95 if (empty($searchValue)) {
96 $testCase->fail("empty value passed to assertDBNotNull");
98 $value = CRM_Core_DAO
::getFieldValue($daoName, $searchValue, $returnColumn, $searchColumn);
99 $testCase->assertNotNull($value, $message);
105 * Request a record from the DB by seachColumn+searchValue. Success if returnColumn value is NULL.
107 function assertDBNull(&$testCase, $daoName, $searchValue, $returnColumn, $searchColumn, $message) {
108 $value = CRM_Core_DAO
::getFieldValue($daoName, $searchValue, $returnColumn, $searchColumn);
109 $testCase->assertNull($value, $message);
113 * Request a record from the DB by id. Success if row not found.
115 function assertDBRowNotExist(&$testCase, $daoName, $id, $message) {
116 $value = CRM_Core_DAO
::getFieldValue($daoName, $id, 'id', 'id');
117 $testCase->assertNull($value, $message);
121 * Compare a single column value in a retrieved DB record to an expected value
125 * @param $searchValue
126 * @param $returnColumn
127 * @param $searchColumn
128 * @param $expectedValue
129 * @param string $message
131 function assertDBCompareValue(&$testCase, $daoName, $searchValue, $returnColumn, $searchColumn,
132 $expectedValue, $message
134 $value = CRM_Core_DAO
::getFieldValue($daoName, $searchValue, $returnColumn, $searchColumn);
135 $testCase->assertEquals($value, $expectedValue, $message);
139 * Compare all values in a single retrieved DB record to an array of expected values
141 function assertDBCompareValues(&$testCase, $daoName, $searchParams, $expectedValues) {
142 //get the values from db
144 CRM_Core_DAO
::commonRetrieve($daoName, $searchParams, $dbValues);
147 // compare db values with expected values
148 self
::assertAttributesEquals($testCase, $expectedValues, $dbValues);
153 * @param $expectedValues
154 * @param $actualValues
156 function assertAttributesEquals(&$testCase, &$expectedValues, &$actualValues) {
157 foreach ($expectedValues as $paramName => $paramValue) {
158 if (isset($actualValues[$paramName])) {
159 $testCase->assertEquals($paramValue, $actualValues[$paramName]);
162 $testCase->fail("Attribute '$paramName' not present in actual array.");