From e91596ae12ab3292ee0478e79d66958b5d0efb2d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Julien=20Fastr=C3=A9?= Date: Tue, 8 Jun 2021 19:44:31 +0000 Subject: [PATCH 1/2] fix callback for comparing birthdate in test --- .../Controller/PersonControllerUpdateTest.php | 100 +++++++++--------- 1 file changed, 50 insertions(+), 50 deletions(-) diff --git a/src/Bundle/ChillPersonBundle/Tests/Controller/PersonControllerUpdateTest.php b/src/Bundle/ChillPersonBundle/Tests/Controller/PersonControllerUpdateTest.php index 1e5dc0d1f..fb9300630 100644 --- a/src/Bundle/ChillPersonBundle/Tests/Controller/PersonControllerUpdateTest.php +++ b/src/Bundle/ChillPersonBundle/Tests/Controller/PersonControllerUpdateTest.php @@ -3,17 +3,17 @@ /* * Chill is a suite of a modules, Chill is a software for social workers * Copyright (C) 2014, Champs Libres Cooperative SCRLFS, - * + * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as * published by the Free Software Foundation, either version 3 of the * License, or (at your option) any later version. - * + * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. - * + * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . */ @@ -27,7 +27,7 @@ use Chill\MainBundle\Test\PrepareClientTrait; /** * Test the edition of persons - * + * * As I am logged in as "center a_social" * */ @@ -37,66 +37,66 @@ class PersonControllerUpdateTest extends WebTestCase /** @var \Doctrine\ORM\EntityManagerInterface The entity manager */ private $em; - + /** @var Person The person on which the test is executed */ private $person; - + /** @var string The url using for editing the person's information */ private $editUrl; /** @var string The url using for seeing the person's information */ private $viewUrl; - + /** * Prepare client and create a random person */ public function setUp() { static::bootKernel(); - + $this->em = static::$kernel->getContainer() ->get('doctrine.orm.entity_manager'); - + $center = $this->em->getRepository('ChillMainBundle:Center') ->findOneBy(array('name' => 'Center A')); - + $this->person = (new Person()) ->setLastName("My Beloved") ->setFirstName("Jesus") ->setCenter($center) ->setGender(Person::MALE_GENDER); - + $this->em->persist($this->person); $this->em->flush(); - + $this->editUrl = '/fr/person/'.$this->person->getId().'/general/edit'; $this->viewUrl = '/fr/person/'.$this->person->getId().'/general'; - + $this->client = $this->getClientAuthenticated(); } - + /** * Reload the person from the db */ - protected function refreshPerson() + protected function refreshPerson() { $this->person = $this->em->getRepository('ChillPersonBundle:Person') ->find($this->person->getId()); } - + /** * Test the edit page are accessible */ public function testEditPageIsSuccessful() { $this->client->request('GET', $this->editUrl); - $this->assertTrue($this->client->getResponse()->isSuccessful(), + $this->assertTrue($this->client->getResponse()->isSuccessful(), "The person edit form is accessible"); } - + /** * Test the configurable fields are present - * + * * @group configurable_fields */ public function testHiddenFielsArePresent() @@ -106,12 +106,12 @@ class PersonControllerUpdateTest extends WebTestCase $configurables = array('placeOfBirth', 'phonenumber', 'email', 'countryOfBirth', 'nationality', 'spokenLanguages', 'maritalStatus'); $form = $crawler->selectButton('Enregistrer')->form(); //; - + foreach($configurables as $key) { $this->assertTrue($form->has('chill_personbundle_person['.$key.']')); } } - + /** * Test if the edit page of a given person is not accessible for a user * of another center of the person @@ -122,12 +122,12 @@ class PersonControllerUpdateTest extends WebTestCase 'PHP_AUTH_USER' => 'center b_social', 'PHP_AUTH_PW' => 'password', )); - + $client->request('GET', $this->editUrl); $this->assertEquals(403, $client->getResponse()->getStatusCode(), "The edit page of a person of a center A must not be accessible for user of center B"); } - + /** * Test the edit page of a given person are not accessible for an * administrative user @@ -138,19 +138,19 @@ class PersonControllerUpdateTest extends WebTestCase 'PHP_AUTH_USER' => 'center a_administrative', 'PHP_AUTH_PW' => 'password', )); - + $client->request('GET', $this->editUrl); $this->assertEquals(403, $client->getResponse()->getStatusCode()); } - + /** * Test the edition of a field - * + * * Given I fill the field with $value * And I submit the form * Then I am redirected to the 'general' page * And the person is updated in the db - * + * * @dataProvider validTextFieldsProvider * @param string $field * @param string $value @@ -159,7 +159,7 @@ class PersonControllerUpdateTest extends WebTestCase public function testEditTextField($field, $value, \Closure $callback) { $crawler = $this->client->request('GET', $this->editUrl); - + $form = $crawler->selectButton('Enregistrer') ->form(); //transform countries into value if needed @@ -177,13 +177,13 @@ class PersonControllerUpdateTest extends WebTestCase default: $transformedValue = $value; } - + $form->get('chill_personbundle_person['.$field. ']') ->setValue($transformedValue); - + $this->client->submit($form); $this->refreshPerson(); - + $this->assertTrue($this->client->getResponse()->isRedirect($this->viewUrl), 'the page is redirected to general view'); $this->assertEquals($value, $callback($this->person), @@ -200,20 +200,20 @@ class PersonControllerUpdateTest extends WebTestCase $this->assertGreaterThan(0, $crawler->filter('html:contains("'.$value.'")')->count()); } } - + public function testEditLanguages() { $crawler = $this->client->request('GET', $this->editUrl); $selectedLanguages = array('en', 'an', 'bbj'); - + $form = $crawler->selectButton('Enregistrer') ->form(); $form->get('chill_personbundle_person[spokenLanguages]') ->setValue($selectedLanguages); - + $this->client->submit($form); $this->refreshPerson(); - + $this->assertTrue($this->client->getResponse()->isRedirect($this->viewUrl), 'the page is redirected to /general view'); //retrieve languages codes present in person @@ -223,10 +223,10 @@ class PersonControllerUpdateTest extends WebTestCase $this->assertEquals(asort($selectedLanguages), asort($languagesCodesPresents), 'the person speaks the expected languages'); } - - + + /** - * Test tbe detection of invalid data during the update procedure + * Test tbe detection of invalid data during the update procedure * * @dataProvider providesInvalidFieldsValues * @param string $field @@ -235,28 +235,28 @@ class PersonControllerUpdateTest extends WebTestCase public function testInvalidFields($field, $value) { $crawler = $this->client->request('GET', $this->editUrl); - + $form = $crawler->selectButton('Enregistrer') ->form(); $form->get('chill_personbundle_person['.$field.']') ->setValue($value); - + $crawler = $this->client->submit($form); - + $this->assertFalse($this->client->getResponse()->isRedirect(), 'the page is not redirected to /general'); $this->assertGreaterThan(0, $crawler->filter('.error')->count(), 'a element .error is shown'); } - + /** - * provide valid values to test, with field name and + * provide valid values to test, with field name and * a function to find the value back from person entity - * + * * @return mixed[] */ public function validTextFieldsProvider() - { + { return array( ['firstName', 'random Value', function(Person $person) { return $person->getFirstName(); } ], ['lastName' , 'random Value', function(Person $person) { return $person->getLastName(); } ], @@ -267,7 +267,7 @@ class PersonControllerUpdateTest extends WebTestCase ['countryOfBirth', 'BE', function(Person $person) { return $person->getCountryOfBirth()->getCountryCode(); }], ['nationality', 'FR', function(Person $person) { return $person->getNationality()->getCountryCode(); }], ['placeOfBirth', '', function(Person $person) { return $person->getPlaceOfBirth(); }], - ['birthdate', '', function(Person $person) { return $person->getBirthdate(); }], + ['birthdate', '', function(Person $person) { return $person->getBirthdate()->format('Y-m-d'); }], ['phonenumber', '', function(Person $person) { return $person->getPhonenumber(); }], ['memo', '', function(Person $person) { return $person->getMemo(); }], ['countryOfBirth', NULL, function(Person $person) { return $person->getCountryOfBirth(); }], @@ -275,7 +275,7 @@ class PersonControllerUpdateTest extends WebTestCase ['gender', Person::FEMALE_GENDER, function(Person $person) { return $person->getGender(); }], ); } - + public function providesInvalidFieldsValues() { return array( @@ -286,18 +286,18 @@ class PersonControllerUpdateTest extends WebTestCase ['birthdate', 'false date'] ); } - + public function tearDown() { $this->refreshPerson(); $this->em->remove($this->person); $this->em->flush(); } - + private function getVeryLongText() { return << Date: Tue, 8 Jun 2021 21:57:06 +0200 Subject: [PATCH 2/2] fix format for birthdate in test --- .../Tests/Controller/PersonControllerUpdateTest.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Bundle/ChillPersonBundle/Tests/Controller/PersonControllerUpdateTest.php b/src/Bundle/ChillPersonBundle/Tests/Controller/PersonControllerUpdateTest.php index fb9300630..ffdd65f35 100644 --- a/src/Bundle/ChillPersonBundle/Tests/Controller/PersonControllerUpdateTest.php +++ b/src/Bundle/ChillPersonBundle/Tests/Controller/PersonControllerUpdateTest.php @@ -261,13 +261,13 @@ class PersonControllerUpdateTest extends WebTestCase ['firstName', 'random Value', function(Person $person) { return $person->getFirstName(); } ], ['lastName' , 'random Value', function(Person $person) { return $person->getLastName(); } ], ['placeOfBirth', 'none place', function(Person $person) { return $person->getPlaceOfBirth(); }], - ['birthdate', '1980-12-15', function(Person $person) { return $person->getBirthdate()->format('d-m-Y'); }], + ['birthdate', '1980-12-15', function(Person $person) { return $person->getBirthdate()->format('Y-m-d'); }], ['phonenumber', '+32123456789', function(Person $person) { return $person->getPhonenumber(); }], ['memo', 'jfkdlmq jkfldmsq jkmfdsq', function(Person $person) { return $person->getMemo(); }], ['countryOfBirth', 'BE', function(Person $person) { return $person->getCountryOfBirth()->getCountryCode(); }], ['nationality', 'FR', function(Person $person) { return $person->getNationality()->getCountryCode(); }], ['placeOfBirth', '', function(Person $person) { return $person->getPlaceOfBirth(); }], - ['birthdate', '', function(Person $person) { return $person->getBirthdate()->format('Y-m-d'); }], + ['birthdate', '', function(Person $person) { return $person->getBirthdate(); }], ['phonenumber', '', function(Person $person) { return $person->getPhonenumber(); }], ['memo', '', function(Person $person) { return $person->getMemo(); }], ['countryOfBirth', NULL, function(Person $person) { return $person->getCountryOfBirth(); }],