data_pipelines-1.x-dev/tests/src/Kernel/DatasetKernelTestBase.php

tests/src/Kernel/DatasetKernelTestBase.php
<?php

declare(strict_types=1);

namespace Drupal\Tests\data_pipelines\Kernel;

use DG\BypassFinals;
use Drupal\KernelTests\KernelTestBase;
use Drupal\Tests\data_pipelines\Traits\DatasetTestTrait;
use Drupal\Tests\user\Traits\UserCreationTrait;
use Drupal\data_pipelines\Entity\Dataset;
use Drupal\data_pipelines\Entity\DatasetInterface;
use Drupal\data_pipelines\Entity\Destination;
use Drupal\data_pipelines\Entity\DestinationInterface;

/**
 * Defines a base kernel test for testing dataset functionality.
 *
 * @group data_pipelines
 */
abstract class DatasetKernelTestBase extends KernelTestBase {

  use UserCreationTrait;
  use DatasetTestTrait;

  /**
   * {@inheritdoc}
   */
  protected static $modules = [
    'options',
    'link',
    'file',
    'entity',
    'data_pipelines',
    'data_pipelines_test',
    'user',
    'system',
  ];

  /**
   * {@inheritdoc}
   */
  protected function setUp(): void {
    parent::setUp();
    $this->afterInitialSetup();
    $this->installEntitySchema('user');
    $this->installEntitySchema('file');
    $this->installEntitySchema('data_pipelines');
    $this->installSchema('file', ['file_usage']);
    $this->setUpCurrentUser();
    BypassFinals::enable(FALSE);
  }

  /**
   * React to initial setup before entity-types are installed.
   */
  protected function afterInitialSetup(): void {
    // Nil-op.
  }

  /**
   * Creates a test dataset.
   *
   * @param array $values
   *   Field values.
   */
  protected function createTestDataset(array $values = []): DatasetInterface {
    if (!isset($values['destinations'])) {
      $destinationId = $values['destinationId'] ?? $this->randomMachineName();
      $values['destinations'] = [$this->createTestMemoryDestination(['id' => $destinationId])];
    }

    $name = $this->randomMachineName();
    $csv = <<<CSV
should_we,firstname,lastname
Y,joe,bloggs
N,betty,bloggs
CSV;
    $dataset = Dataset::create($values + [
      'source' => 'csv:text',
      'pipeline' => 'test_pipeline_1',
      'name' => $name,
      'machine_name' => mb_strtolower($name),
      'csv_text' => $csv,
    ]);
    $dataset->save();
    return $dataset;
  }

  /**
   * Creates a test memory destination.
   *
   * @return \Drupal\data_pipelines\Entity\DestinationInterface
   *   The test destination.
   */
  protected function createTestMemoryDestination(array $values = []): DestinationInterface {
    $destinationId = $values['destinationId'] ?? $this->randomMachineName();
    $destination = Destination::create($values + [
      'id' => $destinationId,
      'label' => 'Test destination',
      'destination' => 'state',
    ]);
    $destination->save();
    return $destination;
  }

  /**
   * Creates a test file destination.
   *
   * @return \Drupal\data_pipelines\Entity\DestinationInterface
   *   The test destination.
   */
  protected function createTestFileDestination(array $values = []): DestinationInterface {
    $destinationId = $values['destinationId'] ?? $this->randomMachineName();
    $destination = Destination::create($values + [
      'id' => $destinationId,
      'label' => 'Test destination',
      'destination' => 'file_json',
      'destinationSettings' => [
        'scheme' => 'public',
        'dir' => '',
      ],
    ]);
    $destination->save();
    return $destination;
  }

}

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

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