3 namespace Drupal\Tests\Component\Discovery;
5 use Drupal\Component\Discovery\YamlDiscovery;
6 use Drupal\Component\FileCache\FileCacheFactory;
7 use org\bovigo\vfs\vfsStream;
8 use org\bovigo\vfs\vfsStreamWrapper;
9 use org\bovigo\vfs\vfsStreamDirectory;
10 use PHPUnit\Framework\TestCase;
13 * YamlDiscovery component unit tests.
17 class YamlDiscoveryTest extends TestCase {
22 protected function setUp() {
23 // Ensure that FileCacheFactory has a prefix.
24 FileCacheFactory::setPrefix('prefix');
28 * Tests the YAML file discovery.
30 public function testDiscovery() {
31 vfsStreamWrapper::register();
32 $root = new vfsStreamDirectory('modules');
33 vfsStreamWrapper::setRoot($root);
34 $url = vfsStream::url('modules');
36 mkdir($url . '/test_1');
37 file_put_contents($url . '/test_1/test_1.test.yml', 'name: test');
38 file_put_contents($url . '/test_1/test_2.test.yml', 'name: test');
40 mkdir($url . '/test_2');
41 file_put_contents($url . '/test_2/test_3.test.yml', 'name: test');
42 // Write an empty YAML file.
43 file_put_contents($url . '/test_2/test_4.test.yml', '');
45 // Set up the directories to search.
47 'test_1' => $url . '/test_1',
48 'test_2' => $url . '/test_1',
49 'test_3' => $url . '/test_2',
50 'test_4' => $url . '/test_2',
53 $discovery = new YamlDiscovery('test', $directories);
54 $data = $discovery->findAll();
56 $this->assertEquals(count($data), count($directories));
57 $this->assertArrayHasKey('test_1', $data);
58 $this->assertArrayHasKey('test_2', $data);
59 $this->assertArrayHasKey('test_3', $data);
60 $this->assertArrayHasKey('test_4', $data);
62 foreach (['test_1', 'test_2', 'test_3'] as $key) {
63 $this->assertArrayHasKey('name', $data[$key]);
64 $this->assertEquals($data[$key]['name'], 'test');
67 $this->assertSame([], $data['test_4']);