Эх сурвалжийг харах

Added test for ComposerRepository::whatProvides

Martin Hasoň 12 жил өмнө
parent
commit
c39e958a6f

+ 72 - 0
tests/Composer/Test/Repository/ComposerRepositoryTest.php

@@ -16,6 +16,8 @@ use Composer\Repository\ComposerRepository;
 use Composer\IO\NullIO;
 use Composer\IO\NullIO;
 use Composer\Test\Mock\FactoryMock;
 use Composer\Test\Mock\FactoryMock;
 use Composer\Test\TestCase;
 use Composer\Test\TestCase;
+use Composer\Package\Loader\ArrayLoader;
+use Composer\Package\Version\VersionParser;
 
 
 class ComposerRepositoryTest extends TestCase
 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());
+    }
 }
 }