FilesystemRegistryTest.php 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156
  1. <?php
  2. /*
  3. * This file is part of Composer.
  4. *
  5. * (c) Nils Adermann <naderman@naderman.de>
  6. * Jordi Boggiano <j.boggiano@seld.be>
  7. *
  8. * For the full copyright and license information, please view the LICENSE
  9. * file that was distributed with this source code.
  10. */
  11. namespace Composer\Test\Installer\Registry;
  12. use Composer\Installer\Registry\FilesystemRegistry;
  13. class FilesystemRegistryTest extends \PHPUnit_Framework_TestCase
  14. {
  15. private $dir;
  16. private $registryFile;
  17. protected function setUp()
  18. {
  19. $this->dir = sys_get_temp_dir().'/.composer';
  20. $this->registryFile = $this->dir.'/some_registry-reg.json';
  21. if (file_exists($this->registryFile)) {
  22. unlink($this->registryFile);
  23. }
  24. }
  25. public function testRegistryCreation()
  26. {
  27. $this->assertFileNotExists($this->registryFile);
  28. $registry = new FilesystemRegistry($this->dir, 'some_registry');
  29. $registry->open();
  30. $registry->close();
  31. $this->assertFileExists($this->registryFile);
  32. file_put_contents($this->registryFile, json_encode(array(
  33. 'package1-1.0.0-beta' => 'library'
  34. )));
  35. $registry->open();
  36. $registry->close();
  37. $this->assertFileExists($this->registryFile);
  38. $data = json_decode(file_get_contents($this->registryFile), true);
  39. $this->assertEquals(array('package1-1.0.0-beta' => 'library'), $data);
  40. }
  41. public function testIsPackageRegistered()
  42. {
  43. file_put_contents($this->registryFile, json_encode(array(
  44. 'package1-1.0.0-beta' => 'library'
  45. )));
  46. $registry = new FilesystemRegistry($this->dir, 'some_registry');
  47. $registry->open();
  48. $package1 = $this->createPackageMock();
  49. $package1
  50. ->expects($this->once())
  51. ->method('getUniqueName')
  52. ->will($this->returnValue('package1-1.0.0-beta'));
  53. $package2 = $this->createPackageMock();
  54. $package2
  55. ->expects($this->once())
  56. ->method('getUniqueName')
  57. ->will($this->returnValue('package2-1.1.0-stable'));
  58. $this->assertTrue($registry->isPackageRegistered($package1));
  59. $this->assertFalse($registry->isPackageRegistered($package2));
  60. $registry->close();
  61. }
  62. public function testGetRegisteredPackageInstallerType()
  63. {
  64. $package1 = $this->createPackageMock();
  65. $package1
  66. ->expects($this->once())
  67. ->method('getUniqueName')
  68. ->will($this->returnValue('package1-1.0.0-beta'));
  69. $package2 = $this->createPackageMock();
  70. $package2
  71. ->expects($this->once())
  72. ->method('getUniqueName')
  73. ->will($this->returnValue('package2-1.1.0-stable'));
  74. file_put_contents($this->registryFile, json_encode(array(
  75. 'package1-1.0.0-beta' => 'library',
  76. 'package2-1.1.0-stable' => 'bundle'
  77. )));
  78. $registry = new FilesystemRegistry($this->dir, 'some_registry');
  79. $registry->open();
  80. $this->assertSame('library', $registry->getRegisteredPackageInstallerType($package1));
  81. $this->assertSame('bundle', $registry->getRegisteredPackageInstallerType($package2));
  82. $registry->close();
  83. }
  84. public function testRegisterPackage()
  85. {
  86. $package = $this->createPackageMock();
  87. $package
  88. ->expects($this->once())
  89. ->method('getUniqueName')
  90. ->will($this->returnValue('package1-1.0.0-beta'));
  91. $registry = new FilesystemRegistry($this->dir, 'some_registry');
  92. $registry->open();
  93. $registry->registerPackage($package, 'library');
  94. $registry->close();
  95. $data = json_decode(file_get_contents($this->registryFile), true);
  96. $this->assertEquals(array('package1-1.0.0-beta' => 'library'), $data);
  97. }
  98. public function testUnregisterPackage()
  99. {
  100. $package = $this->createPackageMock();
  101. $package
  102. ->expects($this->once())
  103. ->method('getUniqueName')
  104. ->will($this->returnValue('package1-1.0.0-beta'));
  105. file_put_contents($this->registryFile, json_encode(array(
  106. 'package1-1.0.0-beta' => 'library',
  107. 'package2-1.1.0-stable' => 'bundle'
  108. )));
  109. $registry = new FilesystemRegistry($this->dir, 'some_registry');
  110. $registry->open();
  111. $registry->unregisterPackage($package);
  112. $registry->close();
  113. $data = json_decode(file_get_contents($this->registryFile), true);
  114. $this->assertEquals(array('package2-1.1.0-stable' => 'bundle'), $data);
  115. }
  116. private function createPackageMock()
  117. {
  118. return $this->getMockBuilder('Composer\Package\PackageInterface')
  119. ->getMock();
  120. }
  121. }