schemadotorg_experimental-1.0.x-dev/modules/schemadotorg_identifier/tests/src/Kernel/SchemaDotOrgIdentifierManagerKernelTest.php

modules/schemadotorg_identifier/tests/src/Kernel/SchemaDotOrgIdentifierManagerKernelTest.php
<?php

declare(strict_types=1);

namespace Drupal\Tests\schemadotorg_identifier\Kernel;

use Drupal\Core\Entity\EntityDisplayRepositoryInterface;
use Drupal\field\Entity\FieldConfig;
use Drupal\schemadotorg\Entity\SchemaDotOrgMapping;
use Drupal\schemadotorg_identifier\SchemaDotOrgIdentifierManagerInterface;
use Drupal\Tests\schemadotorg\Kernel\SchemaDotOrgEntityKernelTestBase;

/**
 * Tests the functionality of the Schema.org identifier field.
 *
 * @covers \Drupal\schemadotorg_identifier\SchemaDotOrgIdentifierManager
 * @group schemadotorg
 */
class SchemaDotOrgIdentifierManagerKernelTest extends SchemaDotOrgEntityKernelTestBase {

  /**
   * {@inheritdoc}
   */
  protected static $modules = [
    'field_group',
    'schemadotorg_field_group',
    'schemadotorg_identifier',
  ];

  /**
   * The entity display repository.
   */
  protected EntityDisplayRepositoryInterface $entityDisplayRepository;

  /**
   * The Schema.org identifier manager.
   */
  protected SchemaDotOrgIdentifierManagerInterface $identifierManager;

  /**
   * {@inheritdoc}
   */
  protected function setUp(): void {
    parent::setUp();
    $this->installConfig([
      'schemadotorg_field_group',
      'schemadotorg_identifier',
    ]);

    $this->entityDisplayRepository = $this->container->get('entity_display.repository');

    $this->identifierManager = $this->container->get('schemadotorg_identifier.manager');
  }

  /**
   * Test Schema.org identifier.
   */
  public function testIdentifier(): void {
    $this->createSchemaEntity('node', 'MedicalTrial');

    /* ********************************************************************** */

    // Check that the identifier fields are created when a mapping is inserted.
    $this->assertNotNull(FieldConfig::loadByName('node', 'medical_trial', 'schema_identifier_irb'));
    $this->assertNotNull(FieldConfig::loadByName('node', 'medical_trial', 'schema_identifier_nci'));

    // Check that the identifier field group is created via the form display.
    $form_display = $this->entityDisplayRepository->getFormDisplay('node', 'medical_trial', 'default');
    $component = $form_display->getComponent('schema_identifier_nci');
    $this->assertEquals('string_textfield', $component['type']);
    $field_group = $form_display->getThirdPartySettings('field_group');
    $this->assertEquals(['schema_identifier_irb', 'schema_identifier_nci'], $field_group['group_identifiers']['children']);
    $this->assertEquals('Identifiers', $field_group['group_identifiers']['label']);
    $this->assertEquals('details', $field_group['group_identifiers']['format_type']);

    // Check that the identifier field group is created via the view display.
    $view_display = $this->entityDisplayRepository->getViewDisplay('node', 'medical_trial', 'default');
    $component = $view_display->getComponent('schema_identifier_nci');
    $this->assertEquals('string', $component['type']);
    $field_group = $view_display->getThirdPartySettings('field_group');
    $this->assertEquals(['schema_identifier_irb', 'schema_identifier_nci'], $field_group['group_identifiers']['children']);
    $this->assertEquals('Identifiers', $field_group['group_identifiers']['label']);
    $this->assertEquals('fieldset', $field_group['group_identifiers']['format_type']);

    // Check identifier field definitions for a Schema.org mapping.
    $mapping = SchemaDotOrgMapping::load('node.medical_trial');
    $expected_field_definitions = [
      'irb_number' => [
        'property_id' => 'IRB number',
        'field_name' => 'schema_identifier_irb',
        'label' => 'IRB number',
        'description' => 'An IRB number is a 4–5 digit number assigned to a study by an Institutional Review Board (IRB).',
        'max_length' => 8,
        'base_field' => FALSE,
      ],
      'nct_number' => [
        'property_id' => 'NCT Number',
        'field_name' => 'schema_identifier_nci',
        'label' => 'ClinicalTrials.gov Identifier',
        'description' => 'The National Clinical Trial number is an identification that ClinicalTrials.gov assigns a study when it is registered.',
        'max_length' => 12,
        'base_field' => FALSE,
      ],
    ];
    $this->assertEquals(
      $expected_field_definitions,
      $this->identifierManager->getMappingFieldDefinitions($mapping)
    );
  }

}

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

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