Наследование: extends Owner, implements Symfony\Component\Security\Core\User\UserInterface
 public function setUp()
 {
     $kernel = static::createKernel();
     $kernel->boot();
     if ($kernel->getContainer()->getParameter('database_driver') == 'pdo_sqlite') {
         $this->markTestSkipped("The SQLite does not support joins.");
     }
     $this->em = $kernel->getContainer()->get('knp_bundles.entity_manager');
     $fileLocator = new FileLocator(__DIR__ . '/fixtures/');
     $path = $fileLocator->locate('trending-bundles.yml');
     $data = Yaml::parse($path);
     $developer = new Developer();
     $developer->setName('someName');
     $developer->setScore(0);
     $this->em->persist($developer);
     foreach ($data['bundles'] as $bundleName => $bundleData) {
         $bundle = new Bundle('vendor/' . $bundleName);
         $bundle->setDescription('some description');
         $bundle->setScore(100);
         $bundle->setOwner($developer);
         foreach ($bundleData['scores'] as $scoreData) {
             $bundle->setDescription(md5(time() . serialize($scoreData)));
             $score = new Score();
             $score->setDate(new \DateTime($scoreData['date']));
             $score->setBundle($bundle);
             $score->setValue($scoreData['value']);
             $this->em->persist($score);
         }
         $this->em->persist($bundle);
     }
     $this->em->flush();
 }
Пример #2
0
 public function testRecommandationsScoreUpdate()
 {
     $bundle = new Bundle();
     for ($index = 0; $index < 5; ++$index) {
         $user = new Developer();
         $user->setName('Contributor #' . ($index + 1));
         $bundle->addRecommender($user);
     }
     $tester = new KnpBundlesListener();
     $tester->updateScore($bundle);
     $bundle->recalculateScore();
     $this->assertEquals(25, $bundle->getScore());
 }
Пример #3
0
 public function testUpdateBadUrl()
 {
     $output = $this->getMock('Symfony\\Component\\Console\\Output\\OutputInterface');
     $data = array('blog' => 'knplabs.com');
     $github = $this->getMock('Github\\Client', array('api'));
     $githubDeveloperApi = $this->getMock('Github\\Api\\User', array('show'), array($github));
     $githubDeveloperApi->expects($this->any())->method('show')->with($this->equalTo('lorem'))->will($this->returnValue($data));
     $github->expects($this->any())->method('api')->with('user')->will($this->returnValue($githubDeveloperApi));
     $userEntity = new DeveloperEntity();
     $userEntity->setName('lorem');
     $githubDeveloper = new GithubDeveloper($github, $output);
     $githubDeveloper->update($userEntity);
     $this->assertEquals('http://knplabs.com', $userEntity->getUrl());
 }
Пример #4
0
 /**
  * @param EntityDeveloper $developer
  * @return array          organizations information
  */
 public function getOrganizations(EntityDeveloper $developer)
 {
     return $this->github->api('user')->organizations($developer->getName());
 }
Пример #5
0
 /**
  * @Given /^the site has following users:$/
  */
 public function theSiteHasFollowingUsers(TableNode $table)
 {
     $entityManager = $this->getEntityManager();
     $this->developers = array();
     foreach ($table->getHash() as $row) {
         $developer = new Entity\Developer();
         $developer->fromArray(array('name' => $row['name'], 'score' => isset($row['score']) ? $row['score'] : 0));
         if (isset($row['organization'])) {
             $organization = $this->organizations[$row['organization']];
             $developer->addOrganization($organization);
         }
         $entityManager->persist($developer);
         $this->developers[$developer->getName()] = $developer;
     }
     $entityManager->flush();
 }
 public function updateDeveloper(EntityDeveloper $developer)
 {
     $this->updateDeveloperByName($developer->getName());
 }
Пример #7
0
 public function load(ObjectManager $manager)
 {
     $developers = array();
     $organizations = array();
     $i = 0;
     foreach ($this->orgNames as $name => $fullName) {
         $i++;
         $organization = new Entity\Organization();
         $organization->fromArray(array('name' => $name, 'fullName' => $fullName, 'email' => strtolower(str_replace(' ', '.', $fullName)) . '@foomail.bar', 'location' => $i % 2 ? 'Location ' . $i : null, 'url' => $i % 2 ? 'blog' . $i . '.com' : null, 'score' => 0, 'createdAt' => new \DateTime(sprintf('%d days ago', rand(1, 50)))));
         $manager->persist($organization);
         $organizations[] = $organization;
     }
     $i = 0;
     foreach ($this->devNames as $name => $fullName) {
         $i++;
         $developer = new Entity\Developer();
         $developer->fromArray(array('name' => $name, 'email' => strtolower(str_replace(' ', '.', $fullName)) . '@foomail.bar', 'fullName' => $fullName, 'githubId' => $name, 'company' => $i % 2 ? 'Company ' . $i : null, 'location' => $i % 2 ? 'Location ' . $i : null, 'url' => $i % 2 ? 'blog' . $i . '.com' : null, 'score' => 0, 'createdAt' => new \DateTime(sprintf('%d days ago', rand(1, 50)))));
         if (isset($organizations[$i + 1])) {
             $developer->addOrganization($organizations[$i + 1]);
         }
         $manager->persist($developer);
         $developers[] = $developer;
     }
     foreach ($developers as $i => $developer) {
         $contributors = array();
         $contributors[] = isset($developers[$i + 1]) ? $developers[$i + 1] : $developers[0];
         $contributors[] = isset($developers[$i - 1]) ? $developers[$i - 1] : $developers[count($developers) - 1];
         /* @var $contributor Entity\Developer */
         $contributor = array_pop($contributors);
         $bundle = $this->makeBundle($manager, $developer, $i, $contributor);
         if ($i % 5 == 0) {
             $bundle->setLastTweetedAt(new \DateTime());
         } else {
             $bundle->setVersionsHistory(array('symfony' => array('dev-master' => '2.1.*', '1.2.0' => '2.0.*', '1.1.0' => '2.*'), 'dependencies' => array('dev-master' => array('name' => 'friendsofsymfony/user-bundle', 'extra' => array('branch-alias' => array('dev-master' => '2.0.x-dev')), 'require' => array('php' => '>=5.3.2', 'symfony/framework-bundle' => '>=2.1,<2.3-dev', 'symfony/security-bundle' => '>=2.1,<2.3-dev'), 'require-dev' => array('twig/twig' => '*', 'doctrine/doctrine-bundle' => '*', 'swiftmailer/swiftmailer' => '*', 'willdurand/propel-typehintable-behavior' => 'dev-master', 'symfony/validator' => '2.1.*', 'symfony/yaml' => '2.1.*'), 'suggest' => array('doctrine/couchdb-odm-bundle' => '*', 'doctrine/doctrine-bundle' => '*', 'doctrine/mongodb-odm-bundle' => '*')), '1.2.x-dev' => array('name' => 'friendsofsymfony/user-bundle', 'require' => array('php' => '>=5.3.2', 'symfony/framework-bundle' => '>=2.1,<2.3-dev', 'symfony/security-bundle' => '>=2.1,<2.3-dev'), 'require-dev' => '', 'suggest' => ''))));
         }
         $bundle->setScore(mt_rand(10, 666));
         $bundle->addRecommender(isset($developers[$i + 2]) ? $developers[$i + 2] : ($developers[0] != $developer ? $developers[0] : $developers[1]));
         if (isset($this->keywords[$i])) {
             $keyword = new Entity\Keyword();
             $keyword->setValue($this->keywords[$i]);
             $bundle->addKeyword($keyword);
             $manager->persist($keyword);
         }
         if (isset($this->keywords[$i + 1])) {
             $keyword = new Entity\Keyword();
             $keyword->setValue($this->keywords[$i + 1]);
             $bundle->addKeyword($keyword);
             $manager->persist($keyword);
         }
         $manager->persist($bundle);
         // Add some scores for bundles
         $today = new \DateTime();
         // We add a various number of scores for a given bundle
         $daysBefore = crc32($bundle->getName() . '-days') % 50;
         $maxScore = crc32($bundle->getName()) % 50;
         $previousScore = $maxScore;
         while ($daysBefore-- > 0) {
             $date = clone $today;
             $date->sub(new \DateInterval('P' . $daysBefore . 'D'));
             $score = new Entity\Score();
             $score->setBundle($bundle);
             $score->setValue($previousScore + $daysBefore);
             $score->setDate($date);
             $manager->persist($score);
             $previousScore = $score->getValue();
         }
     }
     foreach ($organizations as $organization) {
         for ($i = 1; $i < rand(2, 7); $i++) {
             $manager->persist($this->makeBundle($manager, $organization, $i));
         }
     }
     $manager->flush();
 }
Пример #8
0
 /**
  * @param Bundle    $bundle
  * @param Developer $developer
  * @return bool
  */
 public function toggleBundleFavorite(Bundle $bundle, Developer $developer)
 {
     if ($developer->hasFavoritedBundle($bundle)) {
         $bundle->removeFavorer($developer);
     } else {
         $bundle->addFavorer($developer);
     }
     $this->entityManager->persist($bundle);
     $this->entityManager->flush();
     return $developer->hasFavoritedBundle($bundle);
 }
Пример #9
0
 public function isEqualTo(Developer $developer)
 {
     return $developer->getName() === $this->getName();
 }
Пример #10
0
 /**
  * @param Activity $activity
  *
  * @return boolean
  */
 public function isEqualTo(Activity $activity)
 {
     if ($activity->getBundle()->getId() !== $this->bundle->getId()) {
         return false;
     }
     // Compare developers only if actual activity has one
     if (null !== $this->developer && $activity->getDeveloper()->getId() !== $this->developer->getId()) {
         return false;
     }
     if ($activity->getType() !== $this->type) {
         return false;
     }
     if ($activity->getState() !== $this->state) {
         return false;
     }
     // Compare dates only when state of activity allows it
     if (self::STATE_FIXED !== $this->state && $activity->getCreatedAt()->getTimestamp() !== $this->createdAt->getTimestamp()) {
         return false;
     }
     return true;
 }
Пример #11
0
 public function removeFavorer(Developer $developer)
 {
     $developer->getFavoriteBundles()->removeElement($this);
     $this->favorers->removeElement($developer);
     $this->nbFavorers--;
 }