class AnnotatedClassDiscoveryCachedTest

Same name and namespace in other branches
  1. 9 core/tests/Drupal/Tests/Component/Annotation/AnnotatedClassDiscoveryCachedTest.php \Drupal\Tests\Component\Annotation\AnnotatedClassDiscoveryCachedTest
  2. 10 core/tests/Drupal/Tests/Component/Annotation/AnnotatedClassDiscoveryCachedTest.php \Drupal\Tests\Component\Annotation\AnnotatedClassDiscoveryCachedTest
  3. 11.x core/tests/Drupal/Tests/Component/Annotation/AnnotatedClassDiscoveryCachedTest.php \Drupal\Tests\Component\Annotation\AnnotatedClassDiscoveryCachedTest

@coversDefaultClass \Drupal\Component\Annotation\Plugin\Discovery\AnnotatedClassDiscovery @group Annotation @runTestsInSeparateProcesses

Hierarchy

Expanded class hierarchy of AnnotatedClassDiscoveryCachedTest

File

core/tests/Drupal/Tests/Component/Annotation/AnnotatedClassDiscoveryCachedTest.php, line 14

Namespace

Drupal\Tests\Component\Annotation
View source
class AnnotatedClassDiscoveryCachedTest extends TestCase {
    
    /**
     * {@inheritdoc}
     */
    protected function setUp() {
        parent::setUp();
        // Ensure FileCacheFactory::DISABLE_CACHE is *not* set, since we're testing
        // integration with the file cache.
        FileCacheFactory::setConfiguration([]);
        // Ensure that FileCacheFactory has a prefix.
        FileCacheFactory::setPrefix('prefix');
    }
    
    /**
     * Test that getDefinitions() retrieves the file cache correctly.
     *
     * @covers ::getDefinitions
     */
    public function testGetDefinitions() {
        // Path to the classes which we'll discover and parse annotation.
        $discovery_path = __DIR__ . '/Fixtures';
        // File path that should be discovered within that directory.
        $file_path = $discovery_path . '/PluginNamespace/DiscoveryTest1.php';
        $discovery = new AnnotatedClassDiscovery([
            'com\\example' => [
                $discovery_path,
            ],
        ]);
        $this->assertEquals([
            'discovery_test_1' => [
                'id' => 'discovery_test_1',
                'class' => 'com\\example\\PluginNamespace\\DiscoveryTest1',
            ],
        ], $discovery->getDefinitions());
        // Gain access to the file cache so we can change it.
        $ref_file_cache = new \ReflectionProperty($discovery, 'fileCache');
        $ref_file_cache->setAccessible(TRUE);
        
        /* @var $file_cache \Drupal\Component\FileCache\FileCacheInterface */
        $file_cache = $ref_file_cache->getValue($discovery);
        // The file cache is keyed by the file path, and we'll add some known
        // content to test against.
        $file_cache->set($file_path, [
            'id' => 'wrong_id',
            'content' => serialize([
                'an' => 'array',
            ]),
        ]);
        // Now perform the same query and check for the cached results.
        $this->assertEquals([
            'wrong_id' => [
                'an' => 'array',
            ],
        ], $discovery->getDefinitions());
    }

}

Members

Title Sort descending Modifiers Object type Summary
AnnotatedClassDiscoveryCachedTest::setUp protected function
AnnotatedClassDiscoveryCachedTest::testGetDefinitions public function Test that getDefinitions() retrieves the file cache correctly.

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