trait FormatSpecificGetBcRouteTestTrait

Provides test methods to assert BC on format-specific GET routes.

@internal

Hierarchy

3 files declare their use of FormatSpecificGetBcRouteTestTrait
EntityTestHalJsonAnonTest.php in core/modules/system/tests/modules/entity_test/tests/src/Functional/Hal/EntityTestHalJsonAnonTest.php
EntityTestJsonAnonTest.php in core/modules/system/tests/modules/entity_test/tests/src/Functional/Rest/EntityTestJsonAnonTest.php
EntityTestXmlAnonTest.php in core/modules/system/tests/modules/entity_test/tests/src/Functional/Rest/EntityTestXmlAnonTest.php

File

core/modules/rest/tests/src/Functional/EntityResource/FormatSpecificGetBcRouteTestTrait.php, line 13

Namespace

Drupal\Tests\rest\Functional\EntityResource
View source
trait FormatSpecificGetBcRouteTestTrait {
    
    /**
     * @group legacy
     *
     * @see \Drupal\rest\RouteProcessor\RestResourceGetRouteProcessorBC
     */
    public function testFormatSpecificGetBcRoute() {
        $this->provisionEntityResource();
        $url = $this->getEntityResourceUrl();
        // BC: Format-specific GET routes are deprecated. They are available on both
        // new and old sites, but trigger deprecation notices.
        $bc_route = Url::fromRoute('rest.entity.' . static::$entityTypeId . '.GET.' . static::$format, $url->getRouteParameters(), $url->getOptions());
        $bc_route->setUrlGenerator($this->container
            ->get('url_generator'));
        $this->addExpectedDeprecationMessage(sprintf("The 'rest.entity.entity_test.GET.%s' route is deprecated since version 8.5.x and will be removed in 9.0.0. Use the 'rest.entity.entity_test.GET' route instead.", static::$format));
        $this->assertSame($url->toString(TRUE)
            ->getGeneratedUrl(), $bc_route->toString(TRUE)
            ->getGeneratedUrl());
    }
    
    /**
     * @group legacy
     *
     * @see \Drupal\rest\Plugin\ResourceBase::routes
     */
    public function testNoFormatSpecificGetBcRouteForOtherFormats() {
        $this->expectException(RouteNotFoundException::class);
        $this->provisionEntityResource();
        $url = $this->getEntityResourceUrl();
        // Verify no format-specific GET BC routes are created for other formats.
        $other_format = static::$format === 'json' ? 'xml' : 'json';
        $bc_route_other_format = Url::fromRoute('rest.entity.entity_test.GET.' . $other_format, $url->getRouteParameters(), $url->getOptions());
        $bc_route_other_format->setUrlGenerator($this->container
            ->get('url_generator'));
        $bc_route_other_format->toString(TRUE);
    }

}

Members


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