/** * 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; }
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()); }
/** * 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; }