From 532c893a4cd1c0eb8e1190db695aa39bcf8a3732 Mon Sep 17 00:00:00 2001 From: eileen Date: Tue, 9 Jun 2020 19:50:02 +1200 Subject: [PATCH] [Ref] Unit test attempt to create reported bugs , minor refactor This lays the ground work to test a couple of reported bugs. Minor cleanup of code --- CRM/Member/Import/Parser.php | 6 +-- CRM/Member/Import/Parser/Membership.php | 2 +- .../Member/Import/Parser/MembershipTest.php | 39 +++++++++++++++++-- 3 files changed, 38 insertions(+), 9 deletions(-) diff --git a/CRM/Member/Import/Parser.php b/CRM/Member/Import/Parser.php index 7ad2f3f4cf80..4f0f2a0b1986 100644 --- a/CRM/Member/Import/Parser.php +++ b/CRM/Member/Import/Parser.php @@ -10,11 +10,7 @@ */ /** - * - * @package CRM - * @copyright CiviCRM LLC https://civicrm.org/licensing - * $Id$ - * + * Class CRM_Member_Import_Parser */ abstract class CRM_Member_Import_Parser extends CRM_Import_Parser { diff --git a/CRM/Member/Import/Parser/Membership.php b/CRM/Member/Import/Parser/Membership.php index b43b507705f7..25ce6fcffee6 100644 --- a/CRM/Member/Import/Parser/Membership.php +++ b/CRM/Member/Import/Parser/Membership.php @@ -268,7 +268,7 @@ public function import($onDuplicate, &$values) { } $session = CRM_Core_Session::singleton(); - $dateType = $session->get('dateTypes'); + $dateType = CRM_Core_Session::singleton()->get('dateTypes'); $formatted = []; $customDataType = !empty($params['contact_type']) ? $params['contact_type'] : 'Membership'; $customFields = CRM_Core_BAO_CustomField::getFields($customDataType); diff --git a/tests/phpunit/CRM/Member/Import/Parser/MembershipTest.php b/tests/phpunit/CRM/Member/Import/Parser/MembershipTest.php index efc8748ce0c0..392a15001651 100644 --- a/tests/phpunit/CRM/Member/Import/Parser/MembershipTest.php +++ b/tests/phpunit/CRM/Member/Import/Parser/MembershipTest.php @@ -31,6 +31,8 @@ * @group headless */ class CRM_Member_Import_Parser_MembershipTest extends CiviUnitTestCase { + use CRMTraits_Custom_CustomDataTrait; + /** * Membership type name used in test function. * @@ -79,8 +81,8 @@ public function setUp() { 'fixed_period_start_day' => 101, 'fixed_period_rollover_day' => 1231, ]; - $ids = []; - $membershipType = CRM_Member_BAO_MembershipType::add($params, $ids); + + $membershipType = CRM_Member_BAO_MembershipType::add($params); $this->_membershipTypeID = $membershipType->id; $this->_mebershipStatusID = $this->membershipStatusCreate('test status'); @@ -102,10 +104,10 @@ public function tearDown() { 'civicrm_membership_payment', 'civicrm_contact', ]; - $this->quickCleanup($tablesToTruncate, TRUE); $this->relationshipTypeDelete($this->_relationshipTypeId); $this->membershipTypeDelete(['id' => $this->_membershipTypeID]); $this->membershipStatusDelete($this->_mebershipStatusID); + $this->quickCleanup($tablesToTruncate, TRUE); } /** @@ -328,4 +330,35 @@ protected function createImportObject(array $fields): \CRM_Member_Import_Parser_ return $membershipImporter; } + /** + * Test importing to a custom field. + * + * @throws \API_Exception + * @throws \CRM_Core_Exception + */ + public function testImportCustomData() { + $donaldDuckID = $this->individualCreate(['first_name' => 'Donald', 'last_name' => 'Duck']); + $this->createCustomGroupWithFieldsOfAllTypes(['extends' => 'Membership']); + $membershipImporter = $this->createImportObject([ + 'membership_contact_id', + 'membership_type_id', + 'membership_start_date', + $this->getCustomFieldName('text'), + $this->getCustomFieldName('select_string'), + ]); + $importValues = [ + $this->individualCreate(), + $this->_membershipTypeID, + date('Y-m-d'), + 'blah', + 'Red', + ]; + + $importResponse = $membershipImporter->import(CRM_Import_Parser::DUPLICATE_UPDATE, $importValues); + $this->assertEquals(CRM_Import_Parser::VALID, $importResponse); + $membership = $this->callAPISuccessGetSingle('Membership', []); + $this->assertEquals('blah', $membership[$this->getCustomFieldName('text')]); + $this->assertEquals('R', $membership[$this->getCustomFieldName('select_string')]); + } + }