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