Merge pull request #17920 from eileenmcnaughton/dupe
[civicrm-core.git] / tests / phpunit / api / v4 / Action / BasicCustomFieldTest.php
index 0c6162cb615b1b540f8fd52e4d236391c62ae2b2..991f5609ff6f7b675e4bf47f9165f1b06e412037 100644 (file)
@@ -14,8 +14,6 @@
  *
  * @package CRM
  * @copyright CiviCRM LLC https://civicrm.org/licensing
- * $Id$
- *
  */
 
 
@@ -32,15 +30,13 @@ class BasicCustomFieldTest extends BaseCustomValueTest {
 
   public function testWithSingleField() {
 
-    $customGroup = CustomGroup::create()
-      ->setCheckPermissions(FALSE)
+    $customGroup = CustomGroup::create(FALSE)
       ->addValue('name', 'MyIndividualFields')
       ->addValue('extends', 'Individual')
       ->execute()
       ->first();
 
-    CustomField::create()
-      ->setCheckPermissions(FALSE)
+    CustomField::create(FALSE)
       ->addValue('label', 'FavColor')
       ->addValue('custom_group_id', $customGroup['id'])
       ->addValue('html_type', 'Text')
@@ -48,13 +44,12 @@ class BasicCustomFieldTest extends BaseCustomValueTest {
       ->execute();
 
     // Individual fields should show up when contact_type = null|Individual but not other contact types
-    $getFields = Contact::getFields()->setCheckPermissions(FALSE);
+    $getFields = Contact::getFields(FALSE);
     $this->assertContains('MyIndividualFields.FavColor', $getFields->execute()->column('name'));
     $this->assertContains('MyIndividualFields.FavColor', $getFields->setValues(['contact_type' => 'Individual'])->execute()->column('name'));
     $this->assertNotContains('MyIndividualFields.FavColor', $getFields->setValues(['contact_type' => 'Household'])->execute()->column('name'));
 
-    $contactId = Contact::create()
-      ->setCheckPermissions(FALSE)
+    $contactId = Contact::create(FALSE)
       ->addValue('first_name', 'Johann')
       ->addValue('last_name', 'Tester')
       ->addValue('contact_type', 'Individual')
@@ -62,8 +57,7 @@ class BasicCustomFieldTest extends BaseCustomValueTest {
       ->execute()
       ->first()['id'];
 
-    $contact = Contact::get()
-      ->setCheckPermissions(FALSE)
+    $contact = Contact::get(FALSE)
       ->addSelect('first_name')
       ->addSelect('MyIndividualFields.FavColor')
       ->addWhere('id', '=', $contactId)
@@ -78,8 +72,7 @@ class BasicCustomFieldTest extends BaseCustomValueTest {
       ->addValue('MyIndividualFields.FavColor', 'Blue')
       ->execute();
 
-    $contact = Contact::get()
-      ->setCheckPermissions(FALSE)
+    $contact = Contact::get(FALSE)
       ->addSelect('MyIndividualFields.FavColor')
       ->addWhere('id', '=', $contactId)
       ->execute()
@@ -90,31 +83,39 @@ class BasicCustomFieldTest extends BaseCustomValueTest {
 
   public function testWithTwoFields() {
 
-    $customGroup = CustomGroup::create()
-      ->setCheckPermissions(FALSE)
+    // First custom set
+    CustomGroup::create(FALSE)
       ->addValue('name', 'MyContactFields')
       ->addValue('extends', 'Contact')
-      ->execute()
-      ->first();
-
-    CustomField::create()
-      ->setCheckPermissions(FALSE)
-      ->addValue('label', 'FavColor')
-      ->addValue('custom_group_id', $customGroup['id'])
-      ->addValue('html_type', 'Text')
-      ->addValue('data_type', 'String')
+      ->addChain('field1', CustomField::create()
+        ->addValue('label', 'FavColor')
+        ->addValue('custom_group_id', '$id')
+        ->addValue('html_type', 'Text')
+        ->addValue('data_type', 'String'))
+      ->addChain('field2', CustomField::create()
+        ->addValue('label', 'FavFood')
+        ->addValue('custom_group_id', '$id')
+        ->addValue('html_type', 'Text')
+        ->addValue('data_type', 'String'))
       ->execute();
 
-    CustomField::create()
-      ->setCheckPermissions(FALSE)
-      ->addValue('label', 'FavFood')
-      ->addValue('custom_group_id', $customGroup['id'])
-      ->addValue('html_type', 'Text')
-      ->addValue('data_type', 'String')
+    // Second custom set
+    CustomGroup::create(FALSE)
+      ->addValue('name', 'MyContactFields2')
+      ->addValue('extends', 'Contact')
+      ->addChain('field1', CustomField::create()
+        ->addValue('label', 'FavColor')
+        ->addValue('custom_group_id', '$id')
+        ->addValue('html_type', 'Text')
+        ->addValue('data_type', 'String'))
+      ->addChain('field2', CustomField::create()
+        ->addValue('label', 'FavFood')
+        ->addValue('custom_group_id', '$id')
+        ->addValue('html_type', 'Text')
+        ->addValue('data_type', 'String'))
       ->execute();
 
-    $contactId1 = Contact::create()
-      ->setCheckPermissions(FALSE)
+    $contactId1 = Contact::create(FALSE)
       ->addValue('first_name', 'Johann')
       ->addValue('last_name', 'Tester')
       ->addValue('MyContactFields.FavColor', 'Red')
@@ -122,8 +123,7 @@ class BasicCustomFieldTest extends BaseCustomValueTest {
       ->execute()
       ->first()['id'];
 
-    $contactId2 = Contact::create()
-      ->setCheckPermissions(FALSE)
+    $contactId2 = Contact::create(FALSE)
       ->addValue('first_name', 'MaryLou')
       ->addValue('last_name', 'Tester')
       ->addValue('MyContactFields.FavColor', 'Purple')
@@ -131,8 +131,7 @@ class BasicCustomFieldTest extends BaseCustomValueTest {
       ->execute()
       ->first()['id'];
 
-    $contact = Contact::get()
-      ->setCheckPermissions(FALSE)
+    $contact = Contact::get(FALSE)
       ->addSelect('first_name')
       ->addSelect('MyContactFields.FavColor')
       ->addSelect('MyContactFields.FavFood')
@@ -141,26 +140,50 @@ class BasicCustomFieldTest extends BaseCustomValueTest {
       ->addWhere('MyContactFields.FavFood', '=', 'Cherry')
       ->execute()
       ->first();
-
     $this->assertArrayHasKey('MyContactFields.FavColor', $contact);
     $this->assertEquals('Red', $contact['MyContactFields.FavColor']);
 
+    // By default custom fields are not returned
+    $contact = Contact::get(FALSE)
+      ->addWhere('id', '=', $contactId1)
+      ->addWhere('MyContactFields.FavColor', '=', 'Red')
+      ->addWhere('MyContactFields.FavFood', '=', 'Cherry')
+      ->execute()
+      ->first();
+    $this->assertArrayNotHasKey('MyContactFields.FavColor', $contact);
+
+    // Update 2nd set and ensure 1st hasn't changed
+    Contact::update()
+      ->addWhere('id', '=', $contactId1)
+      ->addValue('MyContactFields2.FavColor', 'Orange')
+      ->addValue('MyContactFields2.FavFood', 'Tangerine')
+      ->execute();
+    $contact = Contact::get(FALSE)
+      ->addSelect('MyContactFields.FavColor', 'MyContactFields2.FavColor', 'MyContactFields.FavFood', 'MyContactFields2.FavFood')
+      ->addWhere('id', '=', $contactId1)
+      ->execute()
+      ->first();
+    $this->assertEquals('Red', $contact['MyContactFields.FavColor']);
+    $this->assertEquals('Orange', $contact['MyContactFields2.FavColor']);
+    $this->assertEquals('Cherry', $contact['MyContactFields.FavFood']);
+    $this->assertEquals('Tangerine', $contact['MyContactFields2.FavFood']);
+
+    // Update 1st set and ensure 2st hasn't changed
     Contact::update()
       ->addWhere('id', '=', $contactId1)
       ->addValue('MyContactFields.FavColor', 'Blue')
       ->execute();
-
-    $contact = Contact::get()
-      ->setCheckPermissions(FALSE)
-      ->addSelect('MyContactFields.FavColor')
+    $contact = Contact::get(FALSE)
+      ->addSelect('custom.*')
       ->addWhere('id', '=', $contactId1)
       ->execute()
       ->first();
-
     $this->assertEquals('Blue', $contact['MyContactFields.FavColor']);
+    $this->assertEquals('Orange', $contact['MyContactFields2.FavColor']);
+    $this->assertEquals('Cherry', $contact['MyContactFields.FavFood']);
+    $this->assertEquals('Tangerine', $contact['MyContactFields2.FavFood']);
 
-    $search = Contact::get()
-      ->setCheckPermissions(FALSE)
+    $search = Contact::get(FALSE)
       ->addClause('OR', ['MyContactFields.FavColor', '=', 'Blue'], ['MyContactFields.FavFood', '=', 'Grapes'])
       ->addSelect('id')
       ->addOrderBy('id')
@@ -169,8 +192,7 @@ class BasicCustomFieldTest extends BaseCustomValueTest {
 
     $this->assertEquals([$contactId1, $contactId2], array_keys((array) $search));
 
-    $search = Contact::get()
-      ->setCheckPermissions(FALSE)
+    $search = Contact::get(FALSE)
       ->addClause('NOT', ['MyContactFields.FavColor', '=', 'Purple'], ['MyContactFields.FavFood', '=', 'Grapes'])
       ->addSelect('id')
       ->addOrderBy('id')
@@ -179,8 +201,7 @@ class BasicCustomFieldTest extends BaseCustomValueTest {
 
     $this->assertNotContains($contactId2, array_keys((array) $search));
 
-    $search = Contact::get()
-      ->setCheckPermissions(FALSE)
+    $search = Contact::get(FALSE)
       ->addClause('NOT', ['MyContactFields.FavColor', '=', 'Purple'], ['MyContactFields.FavFood', '=', 'Grapes'])
       ->addSelect('id')
       ->addOrderBy('id')
@@ -190,8 +211,7 @@ class BasicCustomFieldTest extends BaseCustomValueTest {
     $this->assertContains($contactId1, array_keys((array) $search));
     $this->assertNotContains($contactId2, array_keys((array) $search));
 
-    $search = Contact::get()
-      ->setCheckPermissions(FALSE)
+    $search = Contact::get(FALSE)
       ->setWhere([['NOT', ['OR', [['MyContactFields.FavColor', '=', 'Blue'], ['MyContactFields.FavFood', '=', 'Grapes']]]]])
       ->addSelect('id')
       ->addOrderBy('id')