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