YamlDiscoveryTest.php 1.9 KB

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