crm_core-8.x-3.x-dev/modules/crm_core_contact/tests/src/Kernel/IndividualPrimaryFieldsTest.php
modules/crm_core_contact/tests/src/Kernel/IndividualPrimaryFieldsTest.php
<?php
namespace Drupal\Tests\crm_core_contact\Kernel;
use Drupal\crm_core_contact\Entity\Individual;
use Drupal\crm_core_contact\Entity\IndividualType;
use Drupal\field\Entity\FieldConfig;
use Drupal\field\Entity\FieldStorageConfig;
use Drupal\KernelTests\KernelTestBase;
/**
* Tests primary fields in Individual.
*
* @group crm_core
* @requires module address
* @coversDefaultClass \Drupal\crm_core_contact\Entity\Individual
*/
class IndividualPrimaryFieldsTest extends KernelTestBase {
/**
* Modules to enable.
*
* @var array
*/
protected static $modules = [
'field',
'text',
'user',
'crm_core',
'crm_core_contact',
'name',
'options',
'address',
'telephone',
];
/**
* {@inheritdoc}
*/
protected function setUp(): void {
parent::setUp();
$this->installConfig(['field']);
$this->installConfig(['name']);
$this->installEntitySchema('crm_core_individual');
$this->installEntitySchema('user');
}
/**
* Test primary fields.
*
* @covers ::getPrimaryAddress
* @covers ::getPrimaryPhone
* @covers ::getPrimaryEmail
* @covers ::getPrimaryField
*/
public function testPrimaryFields() {
$type = IndividualType::create([
'name' => 'Customer',
'type' => 'customer',
'primary_fields' => [
'phone' => 'field_phone',
'address' => 'field_address',
'email' => 'field_email',
],
]);
$type->save();
FieldStorageConfig::create([
'entity_type' => 'crm_core_individual',
'type' => 'address',
'field_name' => 'field_address',
])->save();
FieldConfig::create([
'entity_type' => 'crm_core_individual',
'bundle' => 'customer',
'field_name' => 'field_address',
])->save();
FieldStorageConfig::create([
'entity_type' => 'crm_core_individual',
'type' => 'email',
'field_name' => 'field_email',
])->save();
FieldConfig::create([
'entity_type' => 'crm_core_individual',
'bundle' => 'customer',
'field_name' => 'field_email',
])->save();
FieldStorageConfig::create([
'entity_type' => 'crm_core_individual',
'type' => 'telephone',
'field_name' => 'field_phone',
])->save();
FieldConfig::create([
'entity_type' => 'crm_core_individual',
'bundle' => 'customer',
'field_name' => 'field_phone',
])->save();
/** @var \Drupal\crm_core_contact\Entity\Individual $individual */
$individual = Individual::create([
'name' => [
'family' => 'Jane',
'given' => 'Doe',
],
'type' => 'customer',
'field_phone' => '+15551234',
'field_address' => [
'country_code' => 'US',
],
'field_email' => 'jane@example.com',
]);
$individual->save();
$this->assertEquals($individual->getPrimaryEmail()->value, 'jane@example.com');
$this->assertEquals($individual->getPrimaryPhone()->value, '+15551234');
$this->assertEquals($individual->getPrimaryAddress()->getValue()[0]['country_code'], 'US');
}
}
