UrlEncodeTest.php
Namespace
Drupal\Tests\migrate\Unit\processFile
- 
              core/modules/ migrate/ tests/ src/ Unit/ process/ UrlEncodeTest.php 
View source
<?php
declare (strict_types=1);
namespace Drupal\Tests\migrate\Unit\process;
use Drupal\migrate\MigrateExecutable;
use Drupal\migrate\Plugin\migrate\process\UrlEncode;
use Drupal\migrate\Row;
use Drupal\Tests\migrate\Unit\MigrateTestCase;
use PHPUnit\Framework\Attributes\CoversClass;
use PHPUnit\Framework\Attributes\DataProvider;
use PHPUnit\Framework\Attributes\Group;
/**
 * Tests Drupal\migrate\Plugin\migrate\process\UrlEncode.
 */
class UrlEncodeTest extends MigrateTestCase {
  
  /**
   * {@inheritdoc}
   */
  protected $migrationConfiguration = [
    'id' => 'test',
  ];
  
  /**
   * The data provider for testing URL encoding scenarios.
   *
   * @return array
   *   An array of URLs to test.
   */
  public static function urlDataProvider() {
    return [
      'A URL with no characters requiring encoding' => [
        'http://example.com/normal_url.html',
        'http://example.com/normal_url.html',
      ],
      'The definitive use case - encoding spaces in URLs' => [
        'http://example.com/url with spaces.html',
        'http://example.com/url%20with%20spaces.html',
      ],
      'Definitive use case 2 - spaces in directories' => [
        'http://example.com/dir with spaces/foo.html',
        'http://example.com/dir%20with%20spaces/foo.html',
      ],
      'Local file specs without spaces should not be transformed' => [
        '/tmp/normal.txt',
        '/tmp/normal.txt',
      ],
      'Local file specs with spaces should not be transformed' => [
        '/tmp/with spaces.txt',
        '/tmp/with spaces.txt',
      ],
      'Make sure URL characters (:, ?, &) are not encoded but others are.' => [
        'https://example.com/?a=b@c&d=e+f%',
        'https://example.com/?a%3Db%40c&d%3De%2Bf%25',
      ],
    ];
  }
  
  /**
   * Cover various encoding scenarios.
   */
  public function testUrls($input, $output) : void {
    $this->assertEquals($output, $this->doTransform($input));
  }
  
  /**
   * Perform the urlencode process plugin over the given value.
   *
   * @param string $value
   *   URL to be encoded.
   *
   * @return string
   *   Encoded URL.
   */
  protected function doTransform($value) {
    $executable = new MigrateExecutable($this->getMigration());
    $row = new Row();
    return (new UrlEncode([], 'urlencode', []))->transform($value, $executable, $row, 'foo');
  }
}Classes
| Title | Deprecated | Summary | 
|---|---|---|
| UrlEncodeTest | Tests Drupal\migrate\Plugin\migrate\process\UrlEncode. | 
Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.
