CompositeTest.php 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Magento\Framework\ObjectManager\Test\Unit\Helper;
  7. use \Magento\Framework\ObjectManager\Helper\Composite;
  8. use Magento\Framework\ObjectManager\Helper\Composite as CompositeHelper;
  9. class CompositeTest extends \PHPUnit\Framework\TestCase
  10. {
  11. /**
  12. * @var CompositeHelper
  13. */
  14. protected $compositeHelper;
  15. /**
  16. * @var \Magento\Framework\TestFramework\Unit\Helper\ObjectManager
  17. */
  18. protected $objectManager;
  19. protected function setUp()
  20. {
  21. $this->objectManager = new \Magento\Framework\TestFramework\Unit\Helper\ObjectManager($this);
  22. $this->compositeHelper = $this->objectManager->getObject(
  23. \Magento\Framework\ObjectManager\Helper\Composite::class
  24. );
  25. }
  26. public function testFilterAndSortDeclaredComponents()
  27. {
  28. $firstComponent = new \Magento\Framework\DataObject();
  29. $secondComponent = new \Magento\Framework\DataObject();
  30. $thirdComponent = new \Magento\Framework\DataObject();
  31. $contexts = [
  32. [
  33. 'type' => new \Magento\Framework\DataObject(),
  34. ],
  35. [
  36. 'sortOrder' => 50,
  37. ],
  38. [
  39. 'sortOrder' => 20,
  40. 'type' => $firstComponent
  41. ],
  42. [
  43. 'sortOrder' => 30,
  44. 'type' => $secondComponent,
  45. ],
  46. [
  47. 'sortOrder' => 10,
  48. 'type' => $thirdComponent
  49. ],
  50. ];
  51. $result = $this->compositeHelper->filterAndSortDeclaredComponents($contexts);
  52. /** Ensure that misconfigured components were filtered out correctly */
  53. $this->assertCount(3, $result, 'Misconfigured components filtration does not work as expected.');
  54. /** Verify that components were ordered according to the defined sort order */
  55. $incorrectSortingMessage = "Registered components were sorted incorrectly";
  56. $this->assertSame($thirdComponent, $result[0]['type'], $incorrectSortingMessage);
  57. $this->assertSame($firstComponent, $result[1]['type'], $incorrectSortingMessage);
  58. $this->assertSame($secondComponent, $result[2]['type'], $incorrectSortingMessage);
  59. }
  60. }