UnsupportedRouteAttributePropertiesTest.php

Same filename and directory in other branches
  1. 11.x core/tests/Drupal/Tests/Core/Routing/UnsupportedRouteAttributePropertiesTest.php

Namespace

Drupal\Tests\Core\Routing

File

core/tests/Drupal/Tests/Core/Routing/UnsupportedRouteAttributePropertiesTest.php

View source
<?php

declare (strict_types=1);
namespace Drupal\Tests\Core\Routing;

use Drupal\Core\Routing\AttributeRouteDiscovery;
use Drupal\Core\Routing\UnsupportedRouteAttributePropertyException;
use Drupal\Tests\UnitTestCase;
use PHPUnit\Framework\Attributes\CoversClass;
use PHPUnit\Framework\Attributes\DataProvider;
use PHPUnit\Framework\Attributes\Group;
use Symfony\Component\Routing\Attribute\Route;

/**
 * Tests \Drupal\Core\Routing\AttributeRouteDiscovery.
 */
class UnsupportedRouteAttributePropertiesTest extends UnitTestCase {
  
  /**
   * @legacy-covers ::createRouteCollection
   */
  public function testException(string $class, string $message) : void {
    $discovery = new AttributeRouteDiscovery(new \ArrayIterator());
    $reflection = new \ReflectionClass($discovery);
    $method = $reflection->getMethod('createRouteCollection');
    $this->expectException(UnsupportedRouteAttributePropertyException::class);
    $this->expectExceptionMessage($message);
    $method->invoke($discovery, $class);
  }
  public static function providerTestException() : array {
    return [
      'method: missing_name' => [
        MethodRouteMissingName::class,
        'The Route attribute on "Drupal\\Tests\\Core\\Routing\\MethodRouteMissingName::attributeMethod()" is missing a required "name" property.',
      ],
      'method: locale' => [
        MethodRouteLocale::class,
        'The "locale" route attribute is not supported on route "MethodRouteLocale" in "Drupal\\Tests\\Core\\Routing\\MethodRouteLocale::attributeMethod()"',
      ],
      'method: localized_paths' => [
        MethodRouteLocalizedPaths::class,
        'The "path" route attribute does not support arrays on route "MethodRouteLocalizedPaths" in "Drupal\\Tests\\Core\\Routing\\MethodRouteLocalizedPaths::attributeMethod()"',
      ],
      'method: condition' => [
        MethodRouteCondition::class,
        'The "condition" route attribute is not supported on route "MethodRouteCondition" in "Drupal\\Tests\\Core\\Routing\\MethodRouteCondition::attributeMethod()"',
      ],
      'class: locale' => [
        ClassRouteLocale::class,
        'The "locale" route attribute is not supported in class "Drupal\\Tests\\Core\\Routing\\ClassRouteLocale"',
      ],
      'class: localized_paths' => [
        ClassRouteLocalizedPaths::class,
        'The "path" route attribute does not support arrays in class "Drupal\\Tests\\Core\\Routing\\ClassRouteLocalizedPaths"',
      ],
      'class: condition' => [
        ClassRouteCondition::class,
        'The "condition" route attribute is not supported in class "Drupal\\Tests\\Core\\Routing\\ClassRouteCondition"',
      ],
    ];
  }

}

/**
 * Test class.
 */
class MethodRouteLocale {
  public function attributeMethod() : array {
    return [
      '#markup' => 'Testing method with a Route attribute',
    ];
  }

}

/**
 * Test class.
 */
class MethodRouteLocalizedPaths {
  public function attributeMethod() : array {
    return [
      '#markup' => 'Testing method with a Route attribute',
    ];
  }

}

/**
 * Test class.
 */
class MethodRouteCondition {
  public function attributeMethod() : array {
    return [
      '#markup' => 'Testing method with a Route attribute',
    ];
  }

}

/**
 * Test class.
 */
class ClassRouteLocale {
  public function attributeMethod() : array {
    return [
      '#markup' => 'Testing method with a Route attribute',
    ];
  }

}

/**
 * Test class.
 */
class ClassRouteLocalizedPaths {
  public function attributeMethod() : array {
    return [
      '#markup' => 'Testing method with a Route attribute',
    ];
  }

}

/**
 * Test class.
 */
class ClassRouteCondition {
  public function attributeMethod() : array {
    return [
      '#markup' => 'Testing method with a Route attribute',
    ];
  }

}

/**
 * Test class.
 */
class MethodRouteMissingName {
  public function attributeMethod() : array {
    return [
      '#markup' => 'Testing method with a Route attribute',
    ];
  }

}

Classes

Title Deprecated Summary
ClassRouteCondition Test class.
ClassRouteLocale Test class.
ClassRouteLocalizedPaths Test class.
MethodRouteCondition Test class.
MethodRouteLocale Test class.
MethodRouteLocalizedPaths Test class.
MethodRouteMissingName Test class.
UnsupportedRouteAttributePropertiesTest Tests \Drupal\Core\Routing\AttributeRouteDiscovery.

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.