Fix foreign key error reported by the findById DAO test.
authorAnthony Nemirovsky <anemirovsky@giantrabbit.com>
Thu, 4 Dec 2014 21:36:25 +0000 (13:36 -0800)
committerAnthony Nemirovsky <anemirovsky@giantrabbit.com>
Thu, 4 Dec 2014 21:45:23 +0000 (13:45 -0800)
The root cause of the error was a problem with the CiviUnitTestCase
setUpBeforeClass and tearDown methods. The setUpBeforeClass method imports an
sql file that creates two domains and two contacts to associate with those
domains. The tearDown was set to truncate the civicrm_contact table and this
would happen after every test function run. So, if a test function that was
not the first test function in the class created a contact that it then
wanted to delete, the foreign key error would be thrown. Rather than doing
a workaround, I decided to fix the underlying issue and add back the two
domain contacts after the db tables are truncated.

This broke some tests that were depending on using contact ID 1 for the
contact record that was created, so I went ahead and fixed those, too.

tests/phpunit/CRM/Member/Form/MembershipTest.php
tests/phpunit/CiviTest/CiviUnitTestCase.php
tests/phpunit/api/v3/MailingContactTest.php
tests/phpunit/api/v3/dataset/mailing_bounced.xml
tests/phpunit/api/v3/dataset/mailing_delivered.xml

index d6db032709f2ae665abb2fdb2c367cd99ccc83a8..4567ce9941a8446c82b8eb4b8214e813e49b975c 100644 (file)
@@ -81,7 +81,6 @@ class CRM_Member_Form_MembershipTest extends CiviUnitTestCase {
         'civicrm_acl_contact_cache',
         'civicrm_relationship_type',
         'civicrm_saved_search',
-        'civicrm_contact_type',
         'civicrm_mailing_component',
         'civicrm_mailing_bounce_type',
         'civicrm_mailing_bounce_pattern',
index c043e2dfb67ce1aa89f211cb922d041466fa7a63..ca8620d142242ff3977a28cf25b0c8049c30264f 100644 (file)
@@ -444,6 +444,15 @@ class CiviUnitTestCase extends PHPUnit_Extensions_Database_TestCase {
     $this->tempDirs = array();
   }
 
+  /**
+   * Create default domain contacts for the two domains added during test class
+   * database population.
+   */
+  public function createDomainContacts() {
+    $default_domain_contact = $this->organizationCreate();
+    $second_domain_contact = $this->organizationCreate();
+  }
+
   /**
    *  Common teardown functions for all unit tests
    */
@@ -453,6 +462,7 @@ class CiviUnitTestCase extends PHPUnit_Extensions_Database_TestCase {
     $session->set('userID', NULL);
     $tablesToTruncate = array('civicrm_contact');
     $this->quickCleanup($tablesToTruncate);
+    $this->createDomainContacts();
     $this->cleanTempDirs();
     $this->unsetExtensionSystem();
     CRM_Core_Transaction::forceRollbackIfEnabled();
index 87a622a11dc98714d0d97d8928e00303b86f6f2b..b1863f860100c4223c7996b289e3fc5aeb7d02b5 100644 (file)
@@ -155,7 +155,7 @@ class api_v3_MailingContactTest extends CiviUnitTestCase {
     $this->assertFalse(empty($result['values']), "In line " . __LINE__);
     $this->assertEquals($result['values'][1]['mailing_id'], 1, "In line " . __LINE__);
     $this->assertEquals($result['values'][1]['subject'], "Some Subject", "In line " . __LINE__);
-    $this->assertEquals($result['values'][1]['creator_id'], 1, "In line " . __LINE__);
+    $this->assertEquals($result['values'][1]['creator_id'], 3, "In line " . __LINE__);
     $this->assertEquals($result['values'][1]['creator_name'], "xyz1, abc1", "In line " . __LINE__);
   }
 
@@ -188,7 +188,7 @@ class api_v3_MailingContactTest extends CiviUnitTestCase {
     $this->assertFalse(empty($result['values']), "In line " . __LINE__);
     $this->assertEquals($result['values'][2]['mailing_id'], 2, "In line " . __LINE__);
     $this->assertEquals($result['values'][2]['subject'], "Some Subject", "In line " . __LINE__);
-    $this->assertEquals($result['values'][2]['creator_id'], 1, "In line " . __LINE__);
+    $this->assertEquals($result['values'][2]['creator_id'], 3, "In line " . __LINE__);
     $this->assertEquals($result['values'][2]['creator_name'], "xyz1, abc1", "In line " . __LINE__);
   }
 }
index 5224911cbee15751d5db56ad406612edf0496b5c..228aea0c61a849d73118ca22b2645f6d509ea50d 100644 (file)
@@ -60,7 +60,7 @@
     <value>1</value> <!--  is_completed       -->
     <null /> <!--  msg_template_id    -->
     <null /> <!--  override_verp      -->
-    <value>1</value> <!--  created_id         -->
+    <value>3</value> <!--  created_id         -->
     <null /> <!--  created_date       -->
     <null /> <!--  scheduled_id       -->
     <null /> <!--  scheduled_date     -->
index cc530236c88805354b5600b5ee2aaae96eda41ce..ea2430e55290852589a5cf2c4355b63e52cc2ed4 100644 (file)
@@ -60,7 +60,7 @@
     <value>1</value> <!--  is_completed       -->
     <null /> <!--  msg_template_id    -->
     <null /> <!--  override_verp      -->
-    <value>1</value> <!--  created_id         -->
+    <value>3</value> <!--  created_id         -->
     <null /> <!--  created_date       -->
     <null /> <!--  scheduled_id       -->
     <null /> <!--  scheduled_date     -->