crm_core-8.x-3.x-dev/modules/crm_core_user_sync/tests/src/Unit/CrmCoreUserSyncRelationRulesTest.php

modules/crm_core_user_sync/tests/src/Unit/CrmCoreUserSyncRelationRulesTest.php
<?php

namespace Drupal\Tests\crm_core_user_sync\Unit;

use Drupal\Core\Config\ConfigFactoryInterface;
use Drupal\Core\Config\ImmutableConfig;
use Drupal\crm_core_contact\IndividualInterface;
use Drupal\crm_core_user_sync\CrmCoreUserSyncRelationRules;
use Drupal\Tests\UnitTestCase;
use Drupal\user\UserInterface;

/**
 * Test CrmCoreUserSyncRelationRules service.
 *
 * @property \Drupal\crm_core_user_sync\CrmCoreUserSyncRelationRules rulesService
 * @group crm_core_user_sync
 * @coversDefaultClass \Drupal\crm_core_user_sync\CrmCoreUserSyncRelationRules
 */
class CrmCoreUserSyncRelationRulesTest extends UnitTestCase {

  /**
   * {@inheritdoc}
   */
  protected function setUp(): void {
    parent::setUp();

    $rules = [];
    $rules[] = [
      'role' => 'customer',
      'contact_type' => 'customer',
      'enabled' => TRUE,
      'weight' => 1,
    ];

    $rules[] = [
      'role' => 'authenticated',
      'contact_type' => 'individual',
      'enabled' => TRUE,
      'weight' => 10,
    ];

    $config = $this->createMock(ImmutableConfig::class);
    $config
      ->expects($this->once())
      ->method('get')
      ->with('rules')
      ->willReturn($rules);

    $config_name = 'crm_core_user_sync.settings';
    $configFactory = $this->createMock(ConfigFactoryInterface::class);
    $configFactory
      ->expects($this->once())
      ->method('get')
      ->with($config_name)
      ->willReturn($config);

    $this->rulesService = new CrmCoreUserSyncRelationRules($configFactory, $config_name);
  }

  /**
   * Tests CrmCoreUserSyncRelationRules service.
   */
  public function testCrmCoreUserSyncRelationRulesService() {
    $account_authenticated = $this->createMock(UserInterface::class);
    $account_authenticated
      ->expects($this->any())
      ->method('hasRole')
      ->willReturnMap([['authenticated', TRUE], ['customer', FALSE]]);

    $account_customer = $this->createMock(UserInterface::class);
    $account_customer
      ->expects($this->any())
      ->method('hasRole')
      ->willReturnMap([['authenticated', FALSE], ['customer', TRUE]]);

    $contact_individual = $this->createMock(IndividualInterface::class);
    $contact_individual
      ->expects($this->any())
      ->method('bundle')
      ->willReturn('individual');

    $contact_customer = $this->createMock(IndividualInterface::class);
    $contact_customer
      ->expects($this->any())
      ->method('bundle')
      ->willReturn('customer');

    $this->assertFalse($this->rulesService->valid($account_customer, $contact_individual), 'Individual contact cannot be related to customer user.');
    $this->assertFalse($this->rulesService->valid($account_authenticated, $contact_customer), 'Customer contact can be related to authenticated user.');
    $this->assertTrue($this->rulesService->valid($account_authenticated, $contact_individual), 'Individual contact can be related to authenticated user.');
    $this->assertTrue($this->rulesService->valid($account_customer, $contact_customer), 'Customer contact can be related to customer user.');
  }

}

Главная | Обратная связь

drupal hosting | друпал хостинг | it patrol .inc