external_entities-8.x-2.x-dev/tests/src/Functional/FileClientFunctionalTest.php

tests/src/Functional/FileClientFunctionalTest.php
<?php

namespace Drupal\Tests\external_entities\Functional;

use Drupal\Tests\TestFileCreationTrait;

/**
 * Tests file storage client for external entity.
 *
 * @group ExternalEntities
 */
class FileClientFunctionalTest extends ExternalEntitiesBrowserTestBase {

  use TestFileCreationTrait;

  /**
   * File system service.
   *
   * @var \Drupal\Core\File\FileSystemInterface
   */
  protected $fileSystem;

  /**
   * A user with administration permissions.
   *
   * @var \Drupal\user\UserInterface
   */
  protected $account;

  /**
   * The entity storage.
   *
   * @var \Drupal\Core\Entity\EntityStorageInterface
   */
  protected $storage;

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

    $this->fileSystem = $this->container->get('file_system');
    $file_path = $this->generateFile('test', 21, 2, 'text');
    $filename = $this->fileSystem->basename($file_path);
    $directory = $this->fileSystem->dirname($file_path);
    $this->assertFileExists($file_path);

    // Storage client.
    $this->storage = $this->container->get('entity_type.manager')->getStorage('external_entity_type');

    /** @var \Drupal\external_entities\Entity\ExternalEntityType $type */
    $type = $this->container->get('entity_type.manager')->getStorage('external_entity_type')->create([
      'id' => 'test_file_xntt',
      'label' => 'Simple external entity',
      'label_plural' => 'Simple external entities',
      'description' => '',
      'generate_aliases' => FALSE,
      'read_only' => FALSE,
      'debug_level' => 0,
      'field_mappers' => [],
      'storage_clients' => [],
      'data_aggregator' => [],
      'persistent_cache_max_age' => 0,
    ]);

    // Sets aggregator.
    $type->setDataAggregatorId('single')->setDataAggregatorConfig([
      'storage_clients' => [
        [
          'id' => 'files',
          'config' => [
            'root' => $directory,
            'structure' => $filename,
            'matching_only' => FALSE,
            'multi_records' => FALSE,
            'performances' => [
              'use_index' => FALSE,
              'index_file' => '',
            ],
            'data_fields' => [
              'md5_checksum' => FALSE,
              'sha1_checksum' => FALSE,
              'field_list' => [],
            ],
          ],
        ],
      ],
    ]);
    $type->save();

    // Add fields.
    $this
      ->createField('test_file_xntt', 'field_path', 'string')
      ->createField('test_file_xntt', 'field_dirname', 'string')
      ->createField('test_file_xntt', 'field_basename', 'string')
      ->createField('test_file_xntt', 'field_filename', 'string')
      ->createField('test_file_xntt', 'field_extension', 'string')
      ->createField('test_file_xntt', 'field_mode', 'string')
      ->createField('test_file_xntt', 'field_size', 'integer')
      ->createField('test_file_xntt', 'field_mtime', 'timestamp')
      ->createField('test_file_xntt', 'field_md5', 'string')
      ->createField('test_file_xntt', 'field_sha1', 'string');

    $type
      // ID field mapping.
      ->setFieldMapperId('id', 'generic')->setFieldMapperConfig(
        'id',
        [
          'property_mappings' => [
            'value' => [
              'id' => 'direct',
              'config' => [
                'mapping' => 'id',
                'required_field' => TRUE,
                'main_property' => TRUE,
                'data_processors' => [
                  [],
                ],
              ],
            ],
          ],
          'debug_level' => 0,
        ]
      )
      // UUID field mapping.
      ->setFieldMapperId('uuid', 'generic')
      ->setFieldMapperConfig(
        'uuid',
        [
          'property_mappings' => [
            'value' => [
              'id' => 'direct',
              'config' => [
                'mapping' => 'id',
                'required_field' => TRUE,
                'main_property' => TRUE,
                'data_processors' => [
                  [],
                ],
              ],
            ],
          ],
          'debug_level' => 0,
        ]
      )
      // Title field mapping.
      ->setFieldMapperId('title', 'generic')
      ->setFieldMapperConfig(
        'title',
        [
          'property_mappings' => [
            'value' => [
              'id' => 'direct',
              'config' => [
                'mapping' => 'filename',
                'required_field' => TRUE,
                'main_property' => TRUE,
                'data_processors' => [
                  [],
                ],
              ],
            ],
          ],
          'debug_level' => 0,
        ]
      )
      // Field path field mapping.
      ->setFieldMapperId('field_path', 'generic')
      ->setFieldMapperConfig(
        'field_path',
        [
          'property_mappings' => [
            'value' => [
              'id' => 'direct',
              'config' => [
                'mapping' => 'path',
                'required_field' => TRUE,
                'main_property' => TRUE,
                'data_processors' => [
                  [],
                ],
              ],
            ],
          ],
          'debug_level' => 0,
        ]
      )
      // Field dirname field mapping.
      ->setFieldMapperId('field_dirname', 'generic')
      ->setFieldMapperConfig(
        'field_dirname',
        [
          'property_mappings' => [
            'value' => [
              'id' => 'direct',
              'config' => [
                'mapping' => 'dirname',
                'required_field' => TRUE,
                'main_property' => TRUE,
                'data_processors' => [
                  [],
                ],
              ],
            ],
          ],
          'debug_level' => 0,
        ]
      )
      // Field basename field mapping.
      ->setFieldMapperId('field_basename', 'generic')
      ->setFieldMapperConfig(
        'field_basename',
        [
          'property_mappings' => [
            'value' => [
              'id' => 'direct',
              'config' => [
                'mapping' => 'basename',
                'required_field' => TRUE,
                'main_property' => TRUE,
                'data_processors' => [
                  [],
                ],
              ],
            ],
          ],
          'debug_level' => 0,
        ]
      )
      // Field filename field mapping.
      ->setFieldMapperId('field_filename', 'generic')
      ->setFieldMapperConfig(
        'field_filename',
        [
          'property_mappings' => [
            'value' => [
              'id' => 'direct',
              'config' => [
                'mapping' => 'filename',
                'required_field' => TRUE,
                'main_property' => TRUE,
                'data_processors' => [
                  [],
                ],
              ],
            ],
          ],
          'debug_level' => 0,
        ]
      )
      // Field extension field mapping.
      ->setFieldMapperId('field_extension', 'generic')
      ->setFieldMapperConfig(
        'field_extension',
        [
          'property_mappings' => [
            'value' => [
              'id' => 'direct',
              'config' => [
                'mapping' => 'extension',
                'required_field' => TRUE,
                'main_property' => TRUE,
                'data_processors' => [
                  [],
                ],
              ],
            ],
          ],
          'debug_level' => 0,
        ]
      )
      // Field mode field mapping.
      ->setFieldMapperId('field_mode', 'generic')
      ->setFieldMapperConfig(
        'field_mode',
        [
          'property_mappings' => [
            'value' => [
              'id' => 'direct',
              'config' => [
                'mapping' => 'mode',
                'required_field' => TRUE,
                'main_property' => TRUE,
                'data_processors' => [
                  [],
                ],
              ],
            ],
          ],
          'debug_level' => 0,
        ]
      )
      // Field size field mapping.
      ->setFieldMapperId('field_size', 'generic')
      ->setFieldMapperConfig(
        'field_size',
        [
          'property_mappings' => [
            'value' => [
              'id' => 'direct',
              'config' => [
                'mapping' => 'size',
                'required_field' => TRUE,
                'main_property' => TRUE,
                'data_processors' => [
                  [],
                ],
              ],
            ],
          ],
          'debug_level' => 0,
        ]
      )
      // Field mtime field mapping.
      ->setFieldMapperId('field_mtime', 'generic')
      ->setFieldMapperConfig(
        'field_mtime',
        [
          'property_mappings' => [
            'value' => [
              'id' => 'direct',
              'config' => [
                'mapping' => 'mtime',
                'required_field' => TRUE,
                'main_property' => TRUE,
                'data_processors' => [
                  [],
                ],
              ],
            ],
          ],
          'debug_level' => 0,
        ]
      )
      // Field md5 field mapping.
      ->setFieldMapperId('field_md5', 'generic')
      ->setFieldMapperConfig(
        'field_md5',
        [
          'property_mappings' => [
            'value' => [
              'id' => 'direct',
              'config' => [
                'mapping' => 'md5',
                'required_field' => TRUE,
                'main_property' => TRUE,
                'data_processors' => [
                  [],
                ],
              ],
            ],
          ],
          'debug_level' => 0,
        ]
      )
      // Field sha1 field mapping.
      ->setFieldMapperId('field_sha1', 'generic')
      ->setFieldMapperConfig(
        'field_sha1',
        [
          'property_mappings' => [
            'value' => [
              'id' => 'direct',
              'config' => [
                'mapping' => 'sha1',
                'required_field' => TRUE,
                'main_property' => TRUE,
                'data_processors' => [
                  [],
                ],
              ],
            ],
          ],
          'debug_level' => 0,
        ]
      );
    $type->save();

    // Create the user with all needed permissions.
    $this->account = $this->drupalCreateUser([
      'administer external entity types',
      'view test_file_xntt external entity',
      'view test_file_xntt external entity collection',
      'access site reports',
    ]);
    $this->drupalLogin($this->account);
  }

  /**
   * Tests file storage client global features.
   */
  public function testFileClient() {
    /** @var \Drupal\Tests\WebAssert $assert */
    $assert = $this->assertSession();

    // Entity list check.
    $this->drupalGet('test-file-xntt');
    $assert->pageTextContains('test.txt');

    // First file test.
    $this->drupalGet('test-file-xntt/test.txt');
    $assert->pageTextContains('test.txt');
    $assert->pageTextContains('public:///test.txt');
    $assert->pageTextContains('public:');
    $assert->pageTextContains('33204');
    $assert->pageTextContains('42');
    $assert->pageTextContains('field_mtime');

    $this->drupalGet('test-file-xntt/test.txt/edit');
    $assert->pageTextContains('test.txt');

    // phpcs:disable
    // $this->drupalGet('admin/reports/dblog');
    // phpcs:enable

    // @todo Implement deeper tests.
    $this->markTestIncomplete('Needs more tests.');
  }

}

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

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