View source  
  <?php
namespace Drupal\Tests\crm_core_contact\Unit;
use Drupal\crm_core_contact\Entity\Individual;
use Drupal\crm_core_contact\Entity\Organization;
use Drupal\Tests\UnitTestCase;
class ContactModuleTest extends UnitTestCase {
  
  public function setUp() {
    require_once __DIR__ . '/../../../crm_core_contact.module';
  }
  
  public function testIndividualSuggestions() : void {
    $individual = $this
      ->createMock(Individual::class);
    $individual
      ->method('bundle')
      ->willReturn('customer');
    $individual
      ->method('id')
      ->willReturn(1);
    $result = crm_core_contact_theme_suggestions_crm_core_individual([
      'elements' => [
        '#crm_core_individual' => $individual,
        '#view_mode' => 'my.test',
      ],
    ]);
    $this
      ->assertArrayEquals($result, [
      'crm_core_individual__my_test',
      'crm_core_individual__customer',
      'crm_core_individual__customer__my_test',
      'crm_core_individual__1',
      'crm_core_individual__1__my_test',
    ]);
  }
  
  public function testOrganizationSuggestions() : void {
    $organization = $this
      ->createMock(Organization::class);
    $organization
      ->method('bundle')
      ->willReturn('customer');
    $organization
      ->method('id')
      ->willReturn(1);
    $result = crm_core_contact_theme_suggestions_crm_core_organization([
      'elements' => [
        '#crm_core_organization' => $organization,
        '#view_mode' => 'my.test',
      ],
    ]);
    $this
      ->assertArrayEquals($result, [
      'crm_core_organization__my_test',
      'crm_core_organization__customer',
      'crm_core_organization__customer__my_test',
      'crm_core_organization__1',
      'crm_core_organization__1__my_test',
    ]);
  }
  
  public function testTemplate() : void {
    $templates = crm_core_contact_theme();
    $this
      ->assertequals('crm-core-organization', $templates['crm_core_organization']['template']);
    $this
      ->assertequals('crm-core-individual', $templates['crm_core_individual']['template']);
  }
  
  public function testMail() : void {
    $params = [
      'subject' => 'Subject',
      'message' => 'Content',
    ];
    $message = [];
    crm_core_contact_mail('example', $message, $params);
    $this
      ->assertEquals($message['subject'], $params['subject']);
    $this
      ->assertEquals($message['body'][0], $params['message']);
  }
}