CompositeTest.php 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Magento\Sitemap\Test\Unit\Model\ItemProvider;
  7. use Magento\Sitemap\Model\ItemProvider\Composite as CompositeItemResolver;
  8. use Magento\Sitemap\Model\ItemProvider\ItemProviderInterface;
  9. use Magento\Sitemap\Model\SitemapItemInterface;
  10. class CompositeTest extends \PHPUnit\Framework\TestCase
  11. {
  12. public function testNoResolvers()
  13. {
  14. $resolver = new CompositeItemResolver();
  15. $this->assertSame([], $resolver->getItems(1));
  16. }
  17. /**
  18. * @dataProvider sitemapItemsProvider
  19. * @param array $itemResolverData
  20. * @param array $expectedItems
  21. */
  22. public function testGetItems($itemResolverData, $expectedItems)
  23. {
  24. $mockResolvers = [];
  25. foreach ($itemResolverData as $data) {
  26. $mockResolver = $this->getMockForAbstractClass(ItemProviderInterface::class);
  27. $mockResolver->expects(self::once())
  28. ->method('getItems')
  29. ->willReturn($data);
  30. $mockResolvers[] = $mockResolver;
  31. }
  32. $resolver = new CompositeItemResolver($mockResolvers);
  33. $items = $resolver->getItems(1);
  34. $this->assertSame($expectedItems, $items);
  35. }
  36. /**
  37. * @return array
  38. */
  39. public function sitemapItemsProvider()
  40. {
  41. $testCases = [];
  42. for ($i = 1; $i < 5; $i++) {
  43. $itemProviders = [];
  44. $expectedItems = [];
  45. $maxProviders = random_int(1, 5);
  46. for ($i = 1; $i < $maxProviders; $i++) {
  47. $items = [];
  48. $maxItems = random_int(2, 5);
  49. for ($i = 1; $i < $maxItems; $i++) {
  50. $sitemapItem = $this->getMockForAbstractClass(SitemapItemInterface::class);
  51. $items[] = $sitemapItem;
  52. $expectedItems[] = $sitemapItem;
  53. }
  54. $itemProviders[] = $items;
  55. }
  56. $testCases[] = [$itemProviders, $expectedItems];
  57. }
  58. return $testCases;
  59. }
  60. }