4 +--------------------------------------------------------------------+
5 | Copyright CiviCRM LLC. All rights reserved. |
7 | This work is published under the GNU AGPLv3 license with some |
8 | permitted exceptions and without any warranty. For full license |
9 | and copyright information, see https://civicrm.org/licensing |
10 +--------------------------------------------------------------------+
16 * @copyright CiviCRM LLC https://civicrm.org/licensing
22 namespace api\v
4\Action
;
24 use Civi\Api4\Contact
;
29 class ContactGetTest
extends \api\v
4\UnitTestCase
{
31 public function testGetDeletedContacts() {
32 $last_name = uniqid('deleteContactTest');
34 $bob = Contact
::create()
35 ->setValues(['first_name' => 'Bob', 'last_name' => $last_name])
38 $jan = Contact
::create()
39 ->setValues(['first_name' => 'Jan', 'last_name' => $last_name])
42 $del = Contact
::create()
43 ->setValues(['first_name' => 'Del', 'last_name' => $last_name, 'is_deleted' => 1])
46 // Deleted contacts are not fetched by default
47 $this->assertCount(2, Contact
::get()->addWhere('last_name', '=', $last_name)->selectRowCount()->execute());
49 // You can search for them specifically
50 $contacts = Contact
::get()->addWhere('last_name', '=', $last_name)->addWhere('is_deleted', '=', 1)->addSelect('id')->execute();
51 $this->assertEquals($del['id'], $contacts->first()['id']);
54 $this->assertCount(3, Contact
::get()->addWhere('id', 'IN', [$bob['id'], $jan['id'], $del['id']])->selectRowCount()->execute());
56 // Putting is_deleted anywhere in the where clause will disable the default
57 $contacts = Contact
::get()->addClause('OR', ['last_name', '=', $last_name], ['is_deleted', '=', 0])->addSelect('id')->execute();
58 $this->assertContains($del['id'], $contacts->column('id'));
61 public function testGetWithLimit() {
62 $last_name = uniqid('getWithLimitTest');
64 $bob = Contact
::create()
65 ->setValues(['first_name' => 'Bob', 'last_name' => $last_name])
68 $jan = Contact
::create()
69 ->setValues(['first_name' => 'Jan', 'last_name' => $last_name])
72 $dan = Contact
::create()
73 ->setValues(['first_name' => 'Dan', 'last_name' => $last_name])
76 $num = Contact
::get()->setCheckPermissions(FALSE)->selectRowCount()->execute()->count();
77 $this->assertCount($num - 1, Contact
::get()->setCheckPermissions(FALSE)->setLimit(0)->setOffset(1)->execute());
78 $this->assertCount($num - 2, Contact
::get()->setCheckPermissions(FALSE)->setLimit(0)->setOffset(2)->execute());
79 $this->assertCount(2, Contact
::get()->setCheckPermissions(FALSE)->setLimit(2)->setOffset(0)->execute());