Updated to Drupal 8.5. Core Media not yet in use.
[yaffs-website] / web / core / tests / Drupal / Tests / Component / Discovery / YamlDiscoveryTest.php
1 <?php
2
3 namespace Drupal\Tests\Component\Discovery;
4
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;
11
12 /**
13  * YamlDiscovery component unit tests.
14  *
15  * @group Discovery
16  */
17 class YamlDiscoveryTest extends TestCase {
18
19   /**
20    * {@inheritdoc}
21    */
22   protected function setUp() {
23     // Ensure that FileCacheFactory has a prefix.
24     FileCacheFactory::setPrefix('prefix');
25   }
26
27   /**
28    * Tests the YAML file discovery.
29    */
30   public function testDiscovery() {
31     vfsStreamWrapper::register();
32     $root = new vfsStreamDirectory('modules');
33     vfsStreamWrapper::setRoot($root);
34     $url = vfsStream::url('modules');
35
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');
39
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', '');
44
45     // Set up the directories to search.
46     $directories = [
47       'test_1' => $url . '/test_1',
48       'test_2' => $url . '/test_1',
49       'test_3' => $url . '/test_2',
50       'test_4' => $url . '/test_2',
51     ];
52
53     $discovery = new YamlDiscovery('test', $directories);
54     $data = $discovery->findAll();
55
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);
61
62     foreach (['test_1', 'test_2', 'test_3'] as $key) {
63       $this->assertArrayHasKey('name', $data[$key]);
64       $this->assertEquals($data[$key]['name'], 'test');
65     }
66
67     $this->assertSame([], $data['test_4']);
68   }
69
70 }