From 8fee8f1c362627354f48b97111988d00c282aa22 Mon Sep 17 00:00:00 2001 From: eileen Date: Sat, 25 May 2019 09:27:18 +1200 Subject: [PATCH] [dbunit] remove dependency on discontinued dbunit --- tests/fixtures/contacts.yaml | 60 ++++----------------- tests/phpunit/CiviTest/CiviUnitTestCase.php | 29 +++++++--- 2 files changed, 33 insertions(+), 56 deletions(-) diff --git a/tests/fixtures/contacts.yaml b/tests/fixtures/contacts.yaml index 10c1e7717e66..42cc88775760 100644 --- a/tests/fixtures/contacts.yaml +++ b/tests/fixtures/contacts.yaml @@ -3,14 +3,13 @@ civicrm_contact: id: 3 contact_type: Individual contact_sub_type: - do_not_email: - do_not_phone: - do_not_mail: - do_not_sms: - do_not_trade: + do_not_email: 0 + do_not_phone: 0 + do_not_mail: 0 + do_not_sms: 0 + do_not_trade: 0 is_opt_out: 0 legal_identifier: - external_identifier: sort_name: Site Administrator display_name: Site Administrator nick_name: @@ -24,38 +23,18 @@ civicrm_contact: first_name: Site middle_name: last_name: Administrator - prefix_id: - suffix_id: - email_greeting_id: - email_greeting_custom: - postal_greeting_id: - postal_greeting_custom: - addressee_id: - addressee_custom: - job_title: - gender_id: - birth_date: - is_deceased: - deceased_date: - household_name: - primary_contact_id: - organization_name: - sic_code: - user_unique_id: - employer_id: - id: 17 contact_type: Individual contact_sub_type: - do_not_email: - do_not_phone: - do_not_mail: - do_not_sms: - do_not_trade: + do_not_email: 0 + do_not_phone: 0 + do_not_mail: 0 + do_not_sms: 0 + do_not_trade: 0 is_opt_out: 0 legal_identifier: - external_identifier: sort_name: display_name: Test Contact nick_name: @@ -69,22 +48,3 @@ civicrm_contact: first_name: Test middle_name: last_name: Contact - prefix_id: - suffix_id: - email_greeting_id: - email_greeting_custom: - postal_greeting_id: - postal_greeting_custom: - addressee_id: - addressee_custom: - job_title: - gender_id: - birth_date: - is_deceased: 0 - deceased_date: - household_name: - primary_contact_id: - organization_name: - sic_code: - user_unique_id: - employer_id: diff --git a/tests/phpunit/CiviTest/CiviUnitTestCase.php b/tests/phpunit/CiviTest/CiviUnitTestCase.php index e973a1ba451a..1588cec40c86 100644 --- a/tests/phpunit/CiviTest/CiviUnitTestCase.php +++ b/tests/phpunit/CiviTest/CiviUnitTestCase.php @@ -27,6 +27,7 @@ */ use Civi\Payment\System; +use Symfony\Component\Yaml\Yaml; /** * Include class definitions @@ -371,17 +372,33 @@ protected function setUp() { public function loadAllFixtures() { $fixturesDir = __DIR__ . '/../../fixtures'; - $this->getConnection()->getConnection()->query("SET FOREIGN_KEY_CHECKS = 0;"); + CRM_Core_DAO::executeQuery("SET FOREIGN_KEY_CHECKS = 0;"); $yamlFiles = glob($fixturesDir . '/*.yaml'); foreach ($yamlFiles as $yamlFixture) { - $op = new PHPUnit_Extensions_Database_Operation_Insert(); - $dataset = new PHPUnit_Extensions_Database_DataSet_YamlDataSet($yamlFixture); - $this->_tablesToTruncate = array_merge($this->_tablesToTruncate, $dataset->getTableNames()); - $op->execute($this->_dbconn, $dataset); + $yaml = Yaml::parse(file_get_contents($yamlFixture)); + foreach ($yaml as $tableName => $vars) { + if ($tableName === 'civicrm_contact') { + CRM_Core_DAO::executeQuery('DELETE c FROM civicrm_contact c LEFT JOIN civicrm_domain d ON d.contact_id = c.id WHERE d.id IS NULL'); + } + else { + CRM_Core_DAO::executeQuery("TRUNCATE $tableName"); + } + foreach ($vars as $entity) { + $keys = $values = []; + foreach ($entity as $key => $value) { + $keys[] = $key; + $values[] = is_numeric($value) ? $value : "'{$value}'"; + } + CRM_Core_DAO::executeQuery(" + INSERT INTO $tableName (" . implode(',', $keys) . ') VALUES(' . implode(',', $values) . ')' + ); + } + + } } - $this->getConnection()->getConnection()->query("SET FOREIGN_KEY_CHECKS = 1;"); + CRM_Core_DAO::executeQuery("SET FOREIGN_KEY_CHECKS = 1;"); } /**