Verified Commit cee60b0f authored by Jibran Ijaz's avatar Jibran Ijaz Committed by Jibran Ijaz
Browse files

Issue #3259277 by jibran: Add transform plugin to remove keys from Dataset

parent d2016f7e
Loading
Loading
Loading
Loading
+46 −0
Original line number Diff line number Diff line
<?php

declare(strict_types=1);

namespace Drupal\data_pipelines\Plugin\DatasetTransform;

use Drupal\data_pipelines\DatasetData;
use Drupal\data_pipelines\Transform\TransformPluginBase;

/**
 * Defines a transform that unset records.
 *
 * @DatasetTransform(
 *   id="remove",
 *   fields=FALSE,
 *   records=TRUE
 * )
 */
class Remove extends TransformPluginBase {

  /**
   * {@inheritdoc}
   */
  public function defaultConfiguration() {
    return parent::defaultConfiguration() + [
      'fields' => [],
    ];
  }

  /**
   * {@inheritdoc}
   */
  protected function doTransformRecord(DatasetData $record): DatasetData {
    $record = parent::doTransformRecord($record);
    if (!$this->configuration['fields']) {
      return $record;
    }
    foreach ($this->configuration['fields'] as $field_name) {
      if ($record->offsetExists($field_name)) {
        unset($record[$field_name]);
      }
    }
    return $record;
  }

}
+4 −0
Original line number Diff line number Diff line
@@ -14,6 +14,10 @@ test_pipeline_1:
          - firstname
        as: full_name
        separator: ', '
      - plugin: remove
        fields:
          - lastname
          - firstname
  validations:
    record:
      ItemCount:
+0 −4
Original line number Diff line number Diff line
@@ -141,14 +141,10 @@ class DatasetUiTest extends BrowserTestBase {
    $this->assertEquals([
      new DatasetData([
        'should_we' => TRUE,
        'firstname' => 'joe',
        'lastname' => 'bloggs',
        'full_name' => 'bloggs, joe',
      ]),
      new DatasetData([
        'should_we' => FALSE,
        'firstname' => 'betty',
        'lastname' => 'bloggs',
        'full_name' => 'bloggs, betty',
      ]),
    ], $data);
+1 −4
Original line number Diff line number Diff line
@@ -19,6 +19,7 @@ use Psr\Log\LoggerInterface;
 * @covers \Drupal\data_pipelines\DatasetPipelineBase
 * @covers \Drupal\data_pipelines\Plugin\DatasetTransform\Concat
 * @covers \Drupal\data_pipelines\Plugin\DatasetTransform\MapValues
 * @covers \Drupal\data_pipelines\Plugin\DatasetTransform\Unset
 * @covers \Drupal\data_pipelines\Entity\Dataset
 * @covers \Drupal\data_pipelines\Transform\TransformPluginBase
 * @covers \Drupal\data_pipelines\Transform\DatasetTransformPluginManager
@@ -52,14 +53,10 @@ class TransformTest extends DatasetKernelTestBase implements LoggerInterface {
    $this->assertEquals([
      new DatasetData([
        'should_we' => TRUE,
        'firstname' => 'joe',
        'lastname' => 'bloggs',
        'full_name' => 'bloggs, joe',
      ]),
      new DatasetData([
        'should_we' => FALSE,
        'firstname' => 'betty',
        'lastname' => 'bloggs',
        'full_name' => 'bloggs, betty',
      ]),
    ], $data);