4 * This file is part of the Fxp Composer Asset Plugin package.
6 * (c) François Pluchino <francois.pluchino@gmail.com>
8 * For the full copyright and license information, please view the LICENSE
9 * file that was distributed with this source code.
12 namespace Fxp\Composer\AssetPlugin\Tests\Repository;
14 use Composer\DependencyResolver\Pool;
15 use Composer\IO\IOInterface;
16 use Composer\Repository\RepositoryInterface;
17 use Composer\Repository\RepositoryManager;
18 use Fxp\Composer\AssetPlugin\Config\Config;
19 use Fxp\Composer\AssetPlugin\Repository\AssetRepositoryManager;
20 use Fxp\Composer\AssetPlugin\Repository\ResolutionManager;
21 use Fxp\Composer\AssetPlugin\Repository\VcsPackageFilter;
24 * Tests of Asset Repository Manager.
26 * @author François Pluchino <francois.pluchino@gmail.com>
28 class AssetRepositoryManagerTest extends \PHPUnit_Framework_TestCase
31 * @var RepositoryManager|\PHPUnit_Framework_MockObject_MockObject
36 * @var IOInterface|\PHPUnit_Framework_MockObject_MockObject
46 * @var VcsPackageFilter|\PHPUnit_Framework_MockObject_MockObject
51 * @var ResolutionManager|\PHPUnit_Framework_MockObject_MockObject
53 protected $resolutionManager;
56 * @var AssetRepositoryManager
58 protected $assetRepositoryManager;
60 protected function setUp()
62 $this->io = $this->getMockBuilder(IOInterface::class)->getMock();
63 $this->rm = $this->getMockBuilder(RepositoryManager::class)->disableOriginalConstructor()->getMock();
64 $this->config = new Config(array());
65 $this->filter = $this->getMockBuilder(VcsPackageFilter::class)->disableOriginalConstructor()->getMock();
67 $this->resolutionManager = $this->getMockBuilder(ResolutionManager::class)->getMock();
68 $this->assetRepositoryManager = new AssetRepositoryManager($this->io, $this->rm, $this->config, $this->filter);
71 public function getDataForSolveResolutions()
80 * @dataProvider getDataForSolveResolutions
82 * @param bool $withResolutionManager
84 public function testSolveResolutions($withResolutionManager)
90 if ($withResolutionManager) {
91 $this->assetRepositoryManager->setResolutionManager($this->resolutionManager);
92 $this->resolutionManager->expects($this->once())
93 ->method('solveResolutions')
95 ->willReturn($expected);
97 $this->resolutionManager->expects($this->never())
98 ->method('solveResolutions');
101 $data = $this->assetRepositoryManager->solveResolutions($expected);
103 $this->assertSame($expected, $data);
106 public function testAddRepositoryInPool()
111 'type' => 'asset-vcs',
112 'url' => 'https://github.com/helloguest/helloguest-ui-app.git',
116 $repoConfigExpected = array_merge($repos[0], array(
117 'asset-repository-manager' => $this->assetRepositoryManager,
118 'vcs-package-filter' => $this->filter,
121 $repo = $this->getMockBuilder(RepositoryInterface::class)->getMock();
123 $this->rm->expects($this->once())
124 ->method('createRepository')
125 ->with('asset-vcs', $repoConfigExpected)
128 $this->assetRepositoryManager->addRepositories($repos);
130 /* @var Pool|\PHPUnit_Framework_MockObject_MockObject $pool */
131 $pool = $this->getMockBuilder(Pool::class)->disableOriginalConstructor()->getMock();
132 $pool->expects($this->once())
133 ->method('addRepository')
136 $this->assetRepositoryManager->setPool($pool);
139 public function testGetConfig()
141 $this->assertSame($this->config, $this->assetRepositoryManager->getConfig());