1
0
Fork 0

Added test for ComposerRepository::whatProvides

pull/1573/head
Martin Hasoň 2013-03-21 09:06:11 +01:00
parent c65567447c
commit c39e958a6f
1 changed files with 72 additions and 0 deletions

View File

@ -16,6 +16,8 @@ use Composer\Repository\ComposerRepository;
use Composer\IO\NullIO;
use Composer\Test\Mock\FactoryMock;
use Composer\Test\TestCase;
use Composer\Package\Loader\ArrayLoader;
use Composer\Package\Version\VersionParser;
class ComposerRepositoryTest extends TestCase
{
@ -93,4 +95,74 @@ class ComposerRepositoryTest extends TestCase
),
);
}
public function testWhatProvides()
{
$repo = $this->getMockBuilder('Composer\Repository\ComposerRepository')
->disableOriginalConstructor()
->setMethods(array('fetchFile'))
->getMock();
$cache = $this->getMockBuilder('Composer\Cache')->disableOriginalConstructor()->getMock();
$cache->expects($this->any())
->method('sha256')
->will($this->returnValue(false));
$properties = array(
'cache' => $cache,
'loader' => new ArrayLoader(),
'providerListing' => array('p/a.json' => array('sha256' => 'xxx'))
);
foreach ($properties as $property => $value) {
$ref = new \ReflectionProperty($repo, $property);
$ref->setAccessible(true);
$ref->setValue($repo, $value);
}
$repo->expects($this->any())
->method('fetchFile')
->will($this->returnValue(array(
'packages' => array(
array(array(
'uid' => 1,
'name' => 'a',
'version' => 'dev-master',
'extra' => array('branch-alias' => array('dev-master' => '1.0.x-dev')),
)),
array(array(
'uid' => 2,
'name' => 'a',
'version' => 'dev-develop',
'extra' => array('branch-alias' => array('dev-develop' => '1.1.x-dev')),
)),
array(array(
'uid' => 3,
'name' => 'a',
'version' => '0.6',
)),
)
)));
$pool = $this->getMock('Composer\DependencyResolver\Pool');
$pool->expects($this->any())
->method('isPackageAcceptable')
->will($this->returnValue(true));
$versionParser = new VersionParser();
$repo->setRootAliases(array(
'a' => array(
$versionParser->normalize('0.6') => array('alias' => 'dev-feature', 'alias_normalized' => $versionParser->normalize('dev-feature')),
$versionParser->normalize('1.1.x-dev') => array('alias' => '1.0', 'alias_normalized' => $versionParser->normalize('1.0')),
),
));
$packages = $repo->whatProvides($pool, 'a');
$this->assertCount(7, $packages);
$this->assertEquals(array('1', '1-alias', '2', '2-alias', '2-root', '3', '3-root'), array_keys($packages));
$this->assertInstanceOf('Composer\Package\AliasPackage', $packages['2-root']);
$this->assertSame($packages['2'], $packages['2-root']->getAliasOf());
$this->assertSame($packages['2'], $packages['2-alias']->getAliasOf());
}
}