X-Git-Url: https://vcs.fsf.org/?a=blobdiff_plain;f=tests%2Fphpunit%2FCiviTest%2FCiviUnitTestCase.php;h=b6d5a62298cea411e39d254154117dcb3f0d0bb6;hb=ffea413fa2b6ae36bc0c423f4e883443f809e6e2;hp=912908c33dd6b01cffb91c6a4023b0db77938b69;hpb=4cbe18b880934fc136c432057b8612cefd988522;p=civicrm-core.git diff --git a/tests/phpunit/CiviTest/CiviUnitTestCase.php b/tests/phpunit/CiviTest/CiviUnitTestCase.php index 912908c33d..b6d5a62298 100644 --- a/tests/phpunit/CiviTest/CiviUnitTestCase.php +++ b/tests/phpunit/CiviTest/CiviUnitTestCase.php @@ -39,11 +39,6 @@ require_once CIVICRM_SETTINGS_PATH; /** * Include class definitions */ -require_once 'PHPUnit/Extensions/Database/TestCase.php'; -require_once 'PHPUnit/Framework/TestResult.php'; -require_once 'PHPUnit/Extensions/Database/DataSet/FlatXmlDataSet.php'; -require_once 'PHPUnit/Extensions/Database/DataSet/XmlDataSet.php'; -require_once 'PHPUnit/Extensions/Database/DataSet/QueryDataSet.php'; require_once 'tests/phpunit/Utils.php'; require_once 'api/api.php'; require_once 'CRM/Financial/BAO/FinancialType.php'; @@ -58,7 +53,7 @@ define('API_LATEST_VERSION', 3); class CiviUnitTestCase extends PHPUnit_Extensions_Database_TestCase { /** - * api version - easier to override than just a defin + * api version - easier to override than just a define */ protected $_apiversion = API_LATEST_VERSION; /** @@ -377,6 +372,7 @@ class CiviUnitTestCase extends PHPUnit_Extensions_Database_TestCase { else { error_reporting(E_ALL & ~E_NOTICE); } + $this->_sethtmlGlobals(); } /** @@ -390,7 +386,7 @@ class CiviUnitTestCase extends PHPUnit_Extensions_Database_TestCase { $xmlFiles = glob($fixturesDir . '/*.xml'); foreach ($xmlFiles as $xmlFixture) { $op = new PHPUnit_Extensions_Database_Operation_Insert(); - $dataset = new PHPUnit_Extensions_Database_DataSet_XMLDataSet($xmlFixture); + $dataset = $this->createXMLDataSet($xmlFixture); $this->_tablesToTruncate = array_merge($this->_tablesToTruncate, $dataset->getTableNames()); $op->execute($this->_dbconn, $dataset); } @@ -437,6 +433,8 @@ class CiviUnitTestCase extends PHPUnit_Extensions_Database_TestCase { */ protected function tearDown() { error_reporting(E_ALL & ~E_NOTICE); + $session = CRM_Core_Session::singleton(); + $session->set('userID', NULL); $tablesToTruncate = array('civicrm_contact'); $this->quickCleanup($tablesToTruncate); $this->cleanTempDirs(); @@ -987,38 +985,28 @@ class CiviUnitTestCase extends PHPUnit_Extensions_Database_TestCase { * Generic function to create Organisation, to be used in test cases * * @param array parameters for civicrm_contact_add api function call + * @param int sequence number if creating multiple organizations * * @return int id of Organisation created */ - function organizationCreate($params = array()) { + function organizationCreate($params = array(), $seq = 0) { if (!$params) { $params = array(); } - $orgParams = array( - 'organization_name' => 'Unit Test Organization', - 'contact_type' => 'Organization', - ); - return $this->_contactCreate(array_merge($orgParams, $params)); + $params = array_merge($this->sampleContact('Organization', $seq), $params); + return $this->_contactCreate($params); } /** * Generic function to create Individual, to be used in test cases * * @param array parameters for civicrm_contact_add api function call + * @param int sequence number if creating multiple individuals * * @return int id of Individual created */ - function individualCreate($params = array()) { - $params = array_merge(array( - 'first_name' => 'Anthony', - 'middle_name' => 'J.', - 'last_name' => 'Anderson', - 'prefix_id' => 3, - 'suffix_id' => 3, - 'email' => 'anthony_anderson@civicrm.org', - 'contact_type' => 'Individual', - ), $params); - + function individualCreate($params = array(), $seq = 0) { + $params = array_merge($this->sampleContact('Individual', $seq), $params); return $this->_contactCreate($params); } @@ -1026,17 +1014,52 @@ class CiviUnitTestCase extends PHPUnit_Extensions_Database_TestCase { * Generic function to create Household, to be used in test cases * * @param array parameters for civicrm_contact_add api function call + * @param int sequence number if creating multiple households * * @return int id of Household created */ - function householdCreate($params = array()) { - $params = array_merge(array( - 'household_name' => 'Unit Test household', - 'contact_type' => 'Household', - ), $params); + function householdCreate($params = array(), $seq = 0) { + $params = array_merge($this->sampleContact('Household', $seq), $params); return $this->_contactCreate($params); } + /** + * Helper function for getting sample contact properties + * + * @param enum contact type: Individual, Organization + * @param int sequence number for the values of this type + * + * @return array properties of sample contact (ie. $params for API call) + */ + function sampleContact($contact_type, $seq = 0) { + $samples = array( + 'Individual' => array( + // The number of values in each list need to be coprime numbers to not have duplicates + 'first_name' => array('Anthony', 'Joe', 'Terrence', 'Lucie', 'Albert', 'Bill', 'Kim'), + 'middle_name' => array('J.', 'M.', 'P', 'L.', 'K.', 'A.', 'B.', 'C.', 'D', 'E.', 'Z.'), + 'last_name' => array('Anderson', 'Miller', 'Smith', 'Collins', 'Peterson'), + ), + 'Organization' => array( + 'organization_name' => array('Unit Test Organization', 'Acme', 'Roberts and Sons', 'Cryo Space Labs', 'Sharper Pens'), + ), + 'Household' => array( + 'household_name' => array('Unit Test household'), + ), + ); + $params = array('contact_type' => $contact_type); + foreach ($samples[$contact_type] as $key => $values) { + $params[$key] = $values[$seq % sizeof($values)]; + } + if ($contact_type == 'Individual' ) { + $params['email'] = strtolower( + $params['first_name'] . '_' . $params['last_name'] . '@civicrm.org' + ); + $params['prefix_id'] = 3; + $params['suffix_id'] = 3; + } + return $params; + } + /** * Private helper function for calling civicrm_contact_add * @@ -1150,8 +1173,7 @@ class CiviUnitTestCase extends PHPUnit_Extensions_Database_TestCase { * @internal param int $membershipTypeID */ function membershipTypeDelete($params) { - $result = $this->callAPISuccess('MembershipType', 'Delete', $params); - return; + $this->callAPISuccess('MembershipType', 'Delete', $params); } /** @@ -2345,13 +2367,16 @@ AND ( TABLE_NAME LIKE 'civicrm_value_%' ) 'civicrm_membership', 'civicrm_membership_type', 'civicrm_membership_payment', - 'civicrm_membership_status', + 'civicrm_membership_log', + 'civicrm_membership_block', 'civicrm_event', 'civicrm_participant', 'civicrm_participant_payment', 'civicrm_pledge', + 'civicrm_price_set_entity', ); $this->quickCleanup($tablesToTruncate); + CRM_Core_DAO::executeQuery("DELETE FROM civicrm_membership_status WHERE name NOT IN('New', 'Current', 'Grace', 'Expired', 'Pending', 'Cancelled', 'Deceased')"); } /* * Function does a 'Get' on the entity & compares the fields in the Params with those returned @@ -2831,6 +2856,29 @@ AND ( TABLE_NAME LIKE 'civicrm_value_%' ) CRM_ACL_API::groupPermission('whatever', 9999, NULL, 'civicrm_saved_search', NULL, NULL, TRUE); } + /** + * alter default price set so that the field numbers are not all 1 (hiding errors) + */ + function offsetDefaultPriceSet() { + $contributionPriceSet = $this->callAPISuccess('price_set', 'getsingle', array('name' => 'default_contribution_amount')); + $firstID = $contributionPriceSet['id']; + $this->callAPISuccess('price_set', 'create', array('id' => $contributionPriceSet['id'], 'is_active' => 0, 'name' => 'old')); + unset($contributionPriceSet['id']); + $newPriceSet = $this->callAPISuccess('price_set', 'create', $contributionPriceSet); + $priceField = $this->callAPISuccess('price_field', 'getsingle', array('price_set_id' => $firstID, 'options' => array('limit' => 1))); + unset($priceField['id']); + $priceField['price_set_id'] = $newPriceSet['id']; + $newPriceField = $this->callAPISuccess('price_field', 'create', $priceField); + $priceFieldValue = $this->callAPISuccess('price_field_value', 'getsingle', array('price_set_id' => $firstID, 'sequential' => 1, 'options' => array('limit' => 1))); + + unset($priceFieldValue['id']); + //create some padding to use up ids + $this->callAPISuccess('price_field_value', 'create', $priceFieldValue); + $this->callAPISuccess('price_field_value', 'create', $priceFieldValue); + $this->callAPISuccess('price_field_value', 'create', array_merge($priceFieldValue, array('price_field_id' => $newPriceField['id']))); + + } + /** * Create an instance of the paypal processor * @todo this isn't a great place to put it - but really it belongs on a class that extends