コード例 #1
0
 public function testCommit_success()
 {
     $pageAnimal = $this->testUtils->createUser()->toEleveur()->addAnimal()->getPageEleveur()->getAnimaux()[0];
     $pageAnimal->setNom('Bernard');
     $pageAnimal->setDateNaissance(new \DateTime('2015/01/18'));
     $pageAnimal->setDescription('Un gros toutou');
     $pageAnimal->setSexe(PageAnimal::FEMELLE);
     $pageAnimal->setStatut(PageAnimal::RESERVE);
     $photo = new Photo();
     $photo->setNom('img1.jpg');
     $pageAnimal->setPhotos([$photo]);
     // Modification du nom et de la description de la page
     $this->client->request('POST', '/animal/' . $pageAnimal->getId(), array(), array(), array(), $this->serializer->serialize($pageAnimal, 'json'));
     $this->assertEquals(Response::HTTP_OK, $this->client->getResponse()->getStatusCode());
     /** @var PageAnimalService $pageAnimalService */
     $pageAnimalService = $this->client->getContainer()->get('zigotoo.page_animal');
     $pageAnimal = $pageAnimalService->find($pageAnimal->getId());
     $this->assertEquals($this->serializer->serialize($pageAnimal, 'json'), $this->client->getResponse()->getContent());
     $this->testUtils->clearEntities();
     $crawler = $this->client->request('GET', '/animal/' . $pageAnimal->getId());
     $this->assertEquals($pageAnimal->getNom(), $crawler->filter('title')->text());
     $this->assertContains('18/01/2015', $crawler->filter('#date-naissance')->text());
     $this->assertEquals('Un gros toutou', $crawler->filter('#description')->text());
     $this->assertEquals('Réservé', trim($crawler->filter('select#statut option[selected]')->text()));
     $this->testUtils->logout();
     $this->testUtils->clearEntities();
     $crawler = $this->client->request('GET', '/animal/' . $pageAnimal->getId());
     $this->assertEquals($pageAnimal->getNom(), $crawler->filter('title')->text());
     $this->assertEquals('Femelle', trim($crawler->filter('#sexe')->text()));
     $this->assertContains('18/01/2015', $crawler->filter('#date-naissance')->text());
     $this->assertEquals('Un gros toutou', $crawler->filter('#description')->text());
     $this->assertEquals('Réservé', trim($crawler->filter('#statut')->text()));
     $this->assertEquals(1, $crawler->filter('.photo')->count());
 }
コード例 #2
0
 public function testSubmit()
 {
     $user = $this->testUtils->createUser()->getUser();
     /** @var EntityManager $entityManager */
     $entityManager = static::$kernel->getContainer()->get('doctrine.orm.entity_manager');
     $contactRepository = $entityManager->getRepository('AppBundle:Contact');
     $this->assertEmpty($contactRepository->findBy(['email' => $user->getEmail()]));
     $crawler = $this->client->request('GET', '/contact');
     $form = $crawler->filter('form')->form();
     $message = 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec at ornare lacus. ' . 'Mauris semper lacus a metus malesuada, at malesuada elit condimentum. ' . 'Proin euismod tellus vitae dolor vestibulum metus.';
     $form['form[message]'] = $message;
     $this->client->enableProfiler();
     // permet de profiler les mails qui vont être envoyés
     $this->client->submit($form);
     $this->assertEquals(Response::HTTP_FOUND, $this->client->getResponse()->getStatusCode());
     $this->testUtils->clearEntities();
     // On vérifie que le contact est en bdd
     /** @var Contact[] $contacts */
     $contacts = $contactRepository->findBy(['email' => $user->getEmail()]);
     $this->assertEquals(1, count($contacts));
     $this->assertEquals($message, $contacts[0]->getMessage());
     $this->assertEquals($user->getId(), $contacts[0]->getUser()->getId());
     /** @var MessageDataCollector $mailCollector */
     $mailCollector = $this->client->getProfile()->getCollector('swiftmailer');
     // 2 mails ont du être envoyés
     $this->assertEquals(2, $mailCollector->getMessageCount());
     $collectedMessages = $mailCollector->getMessages();
     // Le 1er est l'accusé réception à l'utilisateur
     /** @var Swift_Message $accuseReception */
     $accuseReception = $collectedMessages[0];
     $this->assertEquals('Formulaire de contact', $accuseReception->getSubject());
     $this->assertEquals('*****@*****.**', key($accuseReception->getFrom()));
     $this->assertEquals('Zigotoo', current($accuseReception->getFrom()));
     $this->assertEquals($user->getEmail(), key($accuseReception->getTo()));
     $this->assertContains($message, $accuseReception->getBody(), 'L\'accusé de réception ne contient pas le message');
     // Le 2eme est une notififaction aux admins
     /** @var Swift_Message $mailAdmins */
     $mailAdmins = $collectedMessages[1];
     $this->assertEquals('Reception formulaire de contact', $mailAdmins->getSubject());
     $this->assertEquals('*****@*****.**', key($mailAdmins->getFrom()));
     $this->assertEquals(['*****@*****.**', '*****@*****.**'], array_keys($mailAdmins->getTo()));
     $this->assertContains($message, $mailAdmins->getBody());
     $this->assertContains($user->getEmail(), $mailAdmins->getBody());
 }
コード例 #3
0
 public function testAnimalList()
 {
     /** @var TestTimeService $timeService */
     $timeService = $this->client->getContainer()->get('zigotoo.time');
     $timeService->lockNow();
     /*
      * On avance le temps pour que les createdAt des animaux diffèrent.
      * Si non le test est instable à cause du orderBy sur createdAt
      */
     $this->testUtils->createUser()->toEleveur()->addAnimal();
     $timeService->lockNow($timeService->now()->add(new \DateInterval('PT1M')));
     $this->testUtils->addAnimal();
     $timeService->lockNow($timeService->now()->add(new \DateInterval('PT1M')));
     $this->testUtils->addAnimal();
     $timeService->lockNow($timeService->now()->add(new \DateInterval('PT1M')));
     $this->testUtils->addAnimal();
     $pageEleveur = $this->testUtils->getPageEleveur();
     /*
      * A ce moment, les PA sont triés par createdAt puisque testUtils utilise
      * PageEleveurService->commit qui retourne une PE avec les PA triées
      */
     $animal0 = $pageEleveur->getAnimaux()[0];
     $animal1 = $pageEleveur->getAnimaux()[1];
     $animal2 = $pageEleveur->getAnimaux()[2];
     $animal3 = $pageEleveur->getAnimaux()[3];
     // On met un animal dans chaque statut
     $this->assertEquals(PageAnimal::DISPONIBLE, $animal0->getStatut());
     $animal1->setStatut(PageAnimal::OPTION);
     $animal2->setStatut(PageAnimal::RESERVE);
     $animal3->setStatut(PageAnimal::ADOPTE);
     /** @var PageAnimalService $pageAnimalService */
     $pageAnimalService = $this->client->getContainer()->get('zigotoo.page_animal');
     $pageAnimalService->commit($this->testUtils->getUser(), $animal1);
     $pageAnimalService->commit($this->testUtils->getUser(), $animal2);
     $pageAnimalService->commit($this->testUtils->getUser(), $animal3);
     $this->testUtils->logout();
     $this->testUtils->clearEntities();
     $crawler = $this->client->request('GET', '/elevage/' . $pageEleveur->getSlug());
     // En visiteur, on ne voit pas les animaux adoptés, on a donc que 3 animaux dans la page
     $this->assertEquals(3, $crawler->filter('.animaux .animal')->count());
     $this->assertContains($animal0->getId(), $crawler->filter('.animaux .animal:nth-child(1) a')->link()->getUri());
     $this->assertContains($animal1->getId(), $crawler->filter('.animaux .animal:nth-child(2) a')->link()->getUri());
     $this->assertContains($animal2->getId(), $crawler->filter('.animaux .animal:nth-child(3) a')->link()->getUri());
 }