ComposerInformationTest.php 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Magento\Framework\Composer\Test\Unit;
  7. use Composer\Composer;
  8. use Composer\Package\Locker;
  9. use Magento\Framework\TestFramework\Unit\Helper\ObjectManager;
  10. class ComposerInformationTest extends \PHPUnit\Framework\TestCase
  11. {
  12. /**
  13. * @var \Magento\Framework\Composer\ComposerInformation
  14. */
  15. private $composerInformation;
  16. /**
  17. * @var Composer|\PHPUnit_Framework_MockObject_MockObject
  18. */
  19. private $composerMock;
  20. /**
  21. * @var Locker|\PHPUnit_Framework_MockObject_MockObject
  22. */
  23. private $lockerMock;
  24. /**
  25. * @var \Composer\Repository\RepositoryInterface|\PHPUnit\Framework\MockObject\Builder\InvocationMocker
  26. */
  27. private $lockerRepositoryMock;
  28. /**
  29. * @var \Composer\Package\CompletePackageInterface|\PHPUnit\Framework\MockObject\Builder\InvocationMocker
  30. */
  31. private $packageMock;
  32. public function setUp()
  33. {
  34. $this->composerMock = $this->getMockBuilder(Composer::class)->disableOriginalConstructor()->getMock();
  35. $this->lockerMock = $this->getMockBuilder(Locker::class)->disableOriginalConstructor()->getMock();
  36. $this->lockerRepositoryMock = $this->getMockForAbstractClass(\Composer\Repository\RepositoryInterface::class);
  37. $this->packageMock = $this->getMockForAbstractClass(\Composer\Package\CompletePackageInterface::class);
  38. $this->lockerMock->method('getLockedRepository')->willReturn($this->lockerRepositoryMock);
  39. $this->packageMock->method('getType')->willReturn('metapackage');
  40. $this->packageMock->method('getPrettyName')->willReturn('magento/product-test-package-name');
  41. $this->packageMock->method('getName')->willReturn('magento/product-test-package-name');
  42. $this->packageMock->method('getPrettyVersion')->willReturn('123.456.789');
  43. $this->lockerRepositoryMock->method('getPackages')->willReturn([$this->packageMock]);
  44. $objectManager = new ObjectManager($this);
  45. $this->composerInformation = $objectManager->getObject(
  46. \Magento\Framework\Composer\ComposerInformation::class,
  47. [
  48. 'composer' => $this->composerMock,
  49. 'locker' => $this->lockerMock
  50. ]
  51. );
  52. }
  53. public function testGetSystemPackages()
  54. {
  55. $expected = [
  56. 'magento/product-test-package-name' => [
  57. 'name' => 'magento/product-test-package-name',
  58. 'type' => 'metapackage',
  59. 'version' => '123.456.789'
  60. ]
  61. ];
  62. $this->assertEquals($expected, $this->composerInformation->getSystemPackages());
  63. }
  64. public function testGetRootPackage()
  65. {
  66. $rootPackageMock = $this->getMockForAbstractClass(\Composer\Package\RootPackageInterface::class);
  67. $this->composerMock->expects($this->once())->method('getPackage')->willReturn($rootPackageMock);
  68. $this->assertEquals($rootPackageMock, $this->composerInformation->getRootPackage());
  69. }
  70. /**
  71. * @param string $packageName
  72. * @param boolean $expected
  73. * @dataProvider isMagentoRootDataProvider
  74. */
  75. public function testIsMagentoRoot($packageName, $expected)
  76. {
  77. $rootPackageMock = $this->getMockForAbstractClass(\Composer\Package\RootPackageInterface::class);
  78. $this->composerMock->expects($this->once())->method('getPackage')->willReturn($rootPackageMock);
  79. $rootPackageMock->method('getName')->willReturn($packageName);
  80. $this->assertEquals($expected, $this->composerInformation->isMagentoRoot());
  81. }
  82. /**
  83. * @return array
  84. */
  85. public function isMagentoRootDataProvider()
  86. {
  87. return [
  88. ['magento/magento2ce', true],
  89. ['magento/magento2ee', true],
  90. ['namespace/package', false],
  91. ];
  92. }
  93. }