external_entities-8.x-2.x-dev/tests/src/Unit/DataProcessorStringCaseUnitTest.php

tests/src/Unit/DataProcessorStringCaseUnitTest.php
<?php

namespace Drupal\Tests\external_entities\Unit;

use Drupal\Core\Field\FieldDefinitionInterface;
use Drupal\Core\Logger\LoggerChannelFactoryInterface;
use Drupal\Core\Logger\LoggerChannelInterface;
use Drupal\Core\StringTranslation\TranslationInterface;
use Drupal\Tests\UnitTestCase;
use Drupal\external_entities\Plugin\ExternalEntities\DataProcessor\StringCase;

/**
 * The class to test string case changer data processor.
 *
 * @group ExternalEntities
 */
class DataProcessorStringCaseUnitTest extends UnitTestCase {

  /**
   * Data provider for testStringCaseProcessor().
   *
   * Structure:
   * - data
   * - expected_result
   * - config
   * - test name.
   */
  public static function provideTestStringCaseProcessor() {
    return [
      // No change.
      [
        ['text1', 'Text2', 'TEXT3', 'tEXT4', 'Some other text', '1 more "Te_xt".'],
        ['text1', 'Text2', 'TEXT3', 'tEXT4', 'Some other text', '1 more "Te_xt".'],
        [
          'format' => '',
          'non_word' => '',
        ],
        'No change test',
      ],
      // To upper case.
      [
        ['text1', 'Text2', 'TEXT3', 'tEXT4', 'Some other text', '1 more "Te_xt".'],
        ['TEXT1', 'TEXT2', 'TEXT3', 'TEXT4', 'SOME OTHER TEXT', '1 MORE "TE_XT".'],
        [
          'format' => 'upper',
          'non_word' => '',
        ],
        'To upper case test',
      ],
      // To lower case.
      [
        ['text1', 'Text2', 'TEXT3', 'tEXT4', 'Some other text', '1 more "Te_xt".'],
        ['text1', 'text2', 'text3', 'text4', 'some other text', '1 more "te_xt".'],
        [
          'format' => 'lower',
          'non_word' => '',
        ],
        'To lower case test',
      ],
      // To lower case no non-word.
      [
        ['text1', 'Text2', 'TEXT3', 'tEXT4', 'Some other text', '1 more "Te_xt".'],
        ['text1', 'text2', 'text3', 'text4', 'someothertext', '1moretext'],
        [
          'format' => 'lower',
          'non_word' => 'remove',
        ],
        'To lower case no non-word test',
      ],
      // To lower case underscores.
      [
        ['text1', 'Text2', 'TEXT3', 'tEXT4', 'Some other text', '1 more "Te_xt".'],
        ['text1', 'text2', 'text3', 'text4', 'some_other_text', '1_more_te_xt'],
        [
          'format' => 'lower',
          'non_word' => 'underscore',
        ],
        'To lower case underscores test',
      ],
      // Title case.
      [
        ['text1', 'Text2', 'TEXT3', 'tEXT4', 'Some other text', '1 more "Te_xt".'],
        ['Text1', 'Text2', 'Text3', 'Text4', 'Some Other Text', '1 More "Te_Xt".'],
        ['format' => 'title'],
        'Title test',
      ],
      // To lower camelCase case.
      [
        ['text1', 'Text2', 'TEXT3', 'tEXT4', 'Some other text', '1 more "Te_xt".'],
        ['text1', 'text2', 'text3', 'text4', 'someOtherText', '1MoreTeXt'],
        [
          'format' => 'lower_camel_case',
          'non_word' => '',
        ],
        'To lower camelCase test',
      ],
      // To upper camelCase case.
      [
        ['text1', 'Text2', 'TEXT3', 'tEXT4', 'Some other text', '1 more "Te_xt".'],
        ['Text1', 'Text2', 'Text3', 'Text4', 'SomeOtherText', '1MoreTeXt'],
        [
          'format' => 'upper_camel_case',
          'non_word' => '',
        ],
        'To upper camelCase test',
      ],
    ];
  }

  /**
   * Tests numeric unit data processor.
   *
   * @dataProvider provideTestStringCaseProcessor
   */
  public function testStringCaseProcessor(
    array $data,
    array $expected_result,
    array $config,
    string $test_name,
  ) {
    $string_translation = $this->getMockBuilder(TranslationInterface::class)
      ->getMock();

    $logger = $this->getMockBuilder(LoggerChannelInterface::class)
      ->disableOriginalConstructor()
      ->getMock();
    $logger_factory = $this->getMockBuilder(LoggerChannelFactoryInterface::class)
      ->disableOriginalConstructor()
      ->getMock();
    $logger_factory
      ->expects($this->any())
      ->method('get')
      ->with('xntt_data_processor_stringcase')
      ->willReturn($logger);

    $field_def = $this->getMockBuilder(FieldDefinitionInterface::class)
      ->getMock();

    $data_processor = new StringCase($config, 'stringcase', [], $string_translation, $logger_factory);

    $result = $data_processor->processData($data, $field_def, 'value');
    $this->assertEquals($expected_result, $result, $test_name);
  }

}

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

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