/** * @param PageEleveurBranch|null $branch * @return PageEleveur */ private function fromBranch(PageEleveurBranch $branch = null) { $pageEleveur = new PageEleveur(); $pageEleveur->setId($branch->getId()); $pageEleveur->setOwner($branch->getOwner()); $pageEleveur->setSlug($branch->getSlug()); $pageEleveur->setHead($branch->getCommit()->getId()); $pageEleveur->setNom($branch->getCommit()->getNom()); $pageEleveur->setDescription($branch->getCommit()->getDescription()); $pageEleveur->setEspeces($branch->getCommit()->getEspeces()); $pageEleveur->setRaces($branch->getCommit()->getRaces()); $pageEleveur->setLieu($branch->getCommit()->getLieu()); /* * Le tri permet de retourner une PE dans le bon ordre même si * le commit a été fait dans un mauvais ordre. */ $arrayCollection = $branch->getCommit()->getAnimaux()->toArray(); usort($arrayCollection, function (PageAnimalBranch $a, PageAnimalBranch $b) { return $b->getCreatedAt()->getTimestamp() - $a->getCreatedAt()->getTimestamp(); }); $animaux = []; /** @var PageAnimalBranch $pageAnimalBranch */ foreach ($arrayCollection as $pageAnimalBranch) { $animaux[] = PageAnimalService::fromBranch($pageAnimalBranch); } $pageEleveur->setAnimaux($animaux); $actualites = $branch->getCommit()->getActualites()->toArray(); usort($actualites, function (Actualite $a, Actualite $b) { return $b->getDate()->getTimestamp() - $a->getDate()->getTimestamp(); }); $pageEleveur->setActualites($actualites); return $pageEleveur; }
public function testCommit_FastForward() { // Mock d'une page eleveur en base de données $user = new User(); $user->setId(1); $pageEleveurBranch = new PageEleveurBranch(); $pageEleveurBranch->setId(1); $pageEleveurBranch->setOwner($user); $this->pageEleveurBranchRepository->method('find')->withAnyParameters()->willReturn($pageEleveurBranch); $commit1 = $this->newCommit(1); $pageEleveurBranch->setCommit($commit1); $this->pageEleveurCommitRepository->method('find')->withAnyParameters()->willReturn($commit1); //Simulation d'une requete de commit $pageEleveur = new PageEleveur(); $pageEleveur->setId($pageEleveurBranch->getId()); $pageEleveur->setHead($commit1->getId()); $pageEleveur->setDescription('Une longue description'); $pageEleveur->setEspeces('Chiens'); $pageEleveur->setRaces('Chihuahua'); $pageEleveur->setLieu('Hauts-de-Seine'); $pageEleveur->setActualites([new Actualite('Nouvelle portée', new \DateTime())]); $this->entityManager->expects($this->once())->method('flush'); $this->pageEleveurService->commit($user, $pageEleveur); //On vérifie qu'il y a bien un nouveau commit avec les bonnes infos $this->assertNotEquals($commit1->getId(), $pageEleveurBranch->getCommit()->getId()); $this->assertEquals($commit1->getId(), $pageEleveurBranch->getCommit()->getParent()->getId()); $this->assertEquals('Une longue description', $pageEleveurBranch->getCommit()->getDescription()); $this->assertEquals('Chiens', $pageEleveurBranch->getCommit()->getEspeces()); $this->assertEquals('Chihuahua', $pageEleveurBranch->getCommit()->getRaces()); $this->assertEquals('Hauts-de-Seine', $pageEleveurBranch->getCommit()->getLieu()); $this->assertEquals('Nouvelle portée', $pageEleveurBranch->getCommit()->getActualites()->first()->getContenu()); }