897a7889840af0ac4968b6e5c376aa135082053b
[yaffs-website] / web / core / tests / Drupal / Tests / Component / Discovery / YamlDiscoveryTest.php
1 <?php
2
3 namespace Drupal\Tests\Component\Discovery;
4
5 use Drupal\Tests\UnitTestCase;
6 use Drupal\Component\Discovery\YamlDiscovery;
7 use org\bovigo\vfs\vfsStream;
8 use org\bovigo\vfs\vfsStreamWrapper;
9 use org\bovigo\vfs\vfsStreamDirectory;
10
11 /**
12  * YamlDiscovery component unit tests.
13  *
14  * @group Discovery
15  */
16 class YamlDiscoveryTest extends UnitTestCase {
17
18   /**
19    * Tests the YAML file discovery.
20    */
21   public function testDiscovery() {
22     vfsStreamWrapper::register();
23     $root = new vfsStreamDirectory('modules');
24     vfsStreamWrapper::setRoot($root);
25     $url = vfsStream::url('modules');
26
27     mkdir($url . '/test_1');
28     file_put_contents($url . '/test_1/test_1.test.yml', 'name: test');
29     file_put_contents($url . '/test_1/test_2.test.yml', 'name: test');
30
31     mkdir($url . '/test_2');
32     file_put_contents($url . '/test_2/test_3.test.yml', 'name: test');
33     // Write an empty YAML file.
34     file_put_contents($url . '/test_2/test_4.test.yml', '');
35
36     // Set up the directories to search.
37     $directories = [
38       'test_1' => $url . '/test_1',
39       'test_2' => $url . '/test_1',
40       'test_3' => $url . '/test_2',
41       'test_4' => $url . '/test_2',
42     ];
43
44     $discovery = new YamlDiscovery('test', $directories);
45     $data = $discovery->findAll();
46
47     $this->assertEquals(count($data), count($directories));
48     $this->assertArrayHasKey('test_1', $data);
49     $this->assertArrayHasKey('test_2', $data);
50     $this->assertArrayHasKey('test_3', $data);
51     $this->assertArrayHasKey('test_4', $data);
52
53     foreach (['test_1', 'test_2', 'test_3'] as $key) {
54       $this->assertArrayHasKey('name', $data[$key]);
55       $this->assertEquals($data[$key]['name'], 'test');
56     }
57
58     $this->assertSame([], $data['test_4']);
59   }
60
61 }