示例#1
0
文件: Job.php 项目: anime-db/anime-db
 /**
  * Get a simple copy of the package.
  *
  * @return Package
  */
 public function getPackageCopy()
 {
     $copy = new Package($this->package->getName(), $this->package->getVersion(), $this->package->getPrettyVersion());
     $copy->setType($this->package->getType());
     $copy->setExtra($this->package->getExtra());
     return $copy;
 }
 /**
  * Tests memory package versioning semantics
  * @dataProvider providerVersioningSchemes
  */
 public function testPackageHasExpectedVersioningSemantics($name, $version)
 {
     $versionParser = new VersionParser();
     $normVersion = $versionParser->normalize($version);
     $package = new Package($name, $normVersion, $version);
     $this->assertEquals($version, $package->getPrettyVersion());
     $this->assertEquals($normVersion, $package->getVersion());
 }
示例#3
0
 public function testGetPackageCopy()
 {
     $this->initJob([], $this->atLeastOnce());
     $this->package->expects($this->atLeastOnce())->method('getName')->will($this->returnValue('foo/bar'));
     $this->package->expects($this->atLeastOnce())->method('getVersion')->will($this->returnValue('1.0.0'));
     $this->package->expects($this->atLeastOnce())->method('getPrettyVersion')->will($this->returnValue('1'));
     $this->package->expects($this->atLeastOnce())->method('getType')->will($this->returnValue('lib'));
     $copy = $this->job->getPackageCopy();
     // test
     $this->assertInstanceOf('\\Composer\\Package\\Package', $copy);
     $this->assertEquals($this->package->getName(), $copy->getName());
     $this->assertEquals($this->package->getVersion(), $copy->getVersion());
     $this->assertEquals($this->package->getPrettyVersion(), $copy->getPrettyVersion());
     $this->assertEquals($this->package->getType(), $copy->getType());
     $this->assertEquals($this->package->getExtra(), $copy->getExtra());
 }
示例#4
0
 /**
  * Creates or update a package in MongoDB from the Package passed in parameter. 
  * 
  * @param Package $package
  * @return array
  */
 public function createOrUpdatePackage(Package $package)
 {
     $packageVersion = $this->get($package->getName(), $package->getPrettyVersion());
     if (!$packageVersion) {
         $packageVersion = ["packageName" => $package->getName(), "packageVersion" => $package->getPrettyVersion()];
     }
     $packageVersion['releaseDate'] = new \MongoDate($package->getReleaseDate()->getTimestamp());
     $packageVersion['type'] = $package->getType();
     $packageVersion['sourceUrl'] = $package->getSourceUrl();
     $packageVersion['realVersion'] = $package->getVersion();
     if ($package instanceof CompletePackage) {
         $packageVersion['description'] = $package->getDescription();
     }
     $this->collection->save($packageVersion);
     // Boost = 1 + download/10 + favers
     // TODO: we could improve the score of packages by the number of times they are referred by other packages.
     $score = 1;
     if (isset($packageVersion['downloads'])) {
         $score += $packageVersion['downloads'] / 10;
     }
     if (isset($packageVersion['favers'])) {
         $score += $packageVersion['favers'];
     }
     $this->itemDao->applyScore($package->getName(), $score);
     $this->elasticSearchService->storeItemName($package->getName(), 'package', $score);
     return $packageVersion;
 }