mirror of
https://gitlab.com/Chill-Projet/chill-bundles.git
synced 2025-09-07 15:25:00 +00:00
Add CommentEmbeddable to Activity : remoke remark field (Ref #21)
This commit is contained in:
@@ -8,7 +8,7 @@ use Symfony\Component\HttpFoundation\Response;
|
||||
|
||||
class ActivityControllerTest extends WebTestCase
|
||||
{
|
||||
|
||||
|
||||
/**
|
||||
* @dataProvider getSecuredPagesUnauthenticated
|
||||
*/
|
||||
@@ -22,9 +22,9 @@ class ActivityControllerTest extends WebTestCase
|
||||
$this->assertTrue($client->getResponse()->isRedirect('http://localhost/login'),
|
||||
sprintf('the page "%s" does not redirect to http://localhost/login', $url));
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
*
|
||||
*
|
||||
* @dataProvider getSecuredPagesAuthenticated
|
||||
* @param type $client
|
||||
* @param type $url
|
||||
@@ -35,19 +35,19 @@ class ActivityControllerTest extends WebTestCase
|
||||
|
||||
$this->assertEquals(403, $client->getResponse()->getStatusCode());
|
||||
}
|
||||
|
||||
|
||||
public function getSecuredPagesAuthenticated()
|
||||
{
|
||||
static::bootKernel();
|
||||
|
||||
|
||||
$person = $this->getPersonFromFixtures();
|
||||
$activities = $this->getActivitiesForPerson($person);
|
||||
|
||||
|
||||
$user = $this->createFakeUser();
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
$user = $this->createFakeUser();
|
||||
|
||||
|
||||
|
||||
return array(
|
||||
array(
|
||||
$this->getAuthenticatedClient('center b_social'),
|
||||
@@ -71,19 +71,19 @@ class ActivityControllerTest extends WebTestCase
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Provide a client unauthenticated and
|
||||
*
|
||||
* Provide a client unauthenticated and
|
||||
*
|
||||
*/
|
||||
public function getSecuredPagesUnauthenticated()
|
||||
{
|
||||
static::bootKernel();
|
||||
$person = $this->getPersonFromFixtures();
|
||||
$activities = $this->getActivitiesForPerson($person);
|
||||
|
||||
|
||||
return array(
|
||||
[ sprintf('fr/person/%d/activity/', $person->getId()) ],
|
||||
[ sprintf('fr/person/%d/activity/new', $person->getId()) ],
|
||||
@@ -102,11 +102,11 @@ class ActivityControllerTest extends WebTestCase
|
||||
// Create a new entry in the database
|
||||
$crawler = $client->request('GET', sprintf('en/person/%d/activity/',
|
||||
$person->getId()));
|
||||
$this->assertEquals(200, $client->getResponse()->getStatusCode(),
|
||||
$this->assertEquals(200, $client->getResponse()->getStatusCode(),
|
||||
"Unexpected HTTP status code for GET /activity/");
|
||||
$crawler = $client->click($crawler->selectLink('Ajouter une nouvelle activité')
|
||||
->link());
|
||||
|
||||
|
||||
$reason1 = $this->getRandomActivityReason();
|
||||
$reason2 = $this->getRandomActivityReason(array($reason1->getId()));
|
||||
|
||||
@@ -115,7 +115,7 @@ class ActivityControllerTest extends WebTestCase
|
||||
'chill_activitybundle_activity'=> array(
|
||||
'date' => '15-01-2015',
|
||||
'durationTime' => 600,
|
||||
'remark' => 'blabla',
|
||||
// 'remark' => 'blabla',
|
||||
'scope' => $this->getRandomScope('center a_social', 'Center A')->getId(),
|
||||
'type' => $this->getRandomActivityType()->getId()
|
||||
)
|
||||
@@ -123,30 +123,30 @@ class ActivityControllerTest extends WebTestCase
|
||||
$form['chill_activitybundle_activity[reasons]']->select(array ($reason1->getId(), $reason2->getId()));
|
||||
|
||||
$client->submit($form);
|
||||
|
||||
|
||||
$this->assertTrue($client->getResponse()->isRedirect());
|
||||
$crawler = $client->followRedirect();
|
||||
|
||||
// Check data in the show view
|
||||
$this->assertGreaterThan(0, $crawler->filter('dd:contains("January 15, 2015")')->count(),
|
||||
$this->assertGreaterThan(0, $crawler->filter('dd:contains("January 15, 2015")')->count(),
|
||||
'Missing element dd:contains("January 15, 2015")');
|
||||
|
||||
// Edit the entity
|
||||
$crawler = $client->click($crawler->selectLink("Modifier l'activité")->link());
|
||||
|
||||
|
||||
$form = $crawler->selectButton("Sauver l'activité")->form(array(
|
||||
'chill_activitybundle_activity' => array(
|
||||
'date' => '25-01-2015',
|
||||
'remark' => 'Foo'
|
||||
// 'remark' => 'Foo'
|
||||
)
|
||||
));
|
||||
|
||||
$client->submit($form);
|
||||
|
||||
|
||||
$this->assertTrue($client->getResponse()->isRedirect());
|
||||
|
||||
|
||||
$crawler = $client->followRedirect();
|
||||
|
||||
|
||||
// check that new data are present
|
||||
$this->assertGreaterThan(0,
|
||||
$crawler->filter('dd:contains("January 25, 2015")')->count(),
|
||||
@@ -154,26 +154,26 @@ class ActivityControllerTest extends WebTestCase
|
||||
$this->assertGreaterThan(0,
|
||||
$crawler->filter('dd:contains("Foo")')->count(),
|
||||
'Missing element dd:contains("Foo")');
|
||||
|
||||
|
||||
// delete the actvity
|
||||
$crawler = $client->click($crawler->selectLink("Supprimer")->link());
|
||||
|
||||
|
||||
$button = $crawler->selectButton('Supprimer');
|
||||
|
||||
|
||||
$form = $button->form();
|
||||
|
||||
|
||||
$client->submit($form);
|
||||
$this->assertTrue($client->getResponse()->isRedirect(sprintf('/en/person/%d/activity/',
|
||||
$person->getId())));
|
||||
|
||||
|
||||
$crawler = $client->followRedirect();
|
||||
|
||||
|
||||
$this->assertNotContains('January 25, 2015', $crawler->text());
|
||||
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*
|
||||
* @return \Symfony\Component\BrowserKit\Client
|
||||
*/
|
||||
private function getAuthenticatedClient($username = 'center a_social')
|
||||
@@ -183,48 +183,48 @@ class ActivityControllerTest extends WebTestCase
|
||||
'PHP_AUTH_PW' => 'password',
|
||||
));
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
*
|
||||
*
|
||||
* @return \Chill\PersonBundle\Entity\Person
|
||||
*/
|
||||
private function getPersonFromFixtures()
|
||||
{
|
||||
$em = static::$kernel->getContainer()
|
||||
->get('doctrine.orm.entity_manager');
|
||||
|
||||
|
||||
$person = $em->getRepository('ChillPersonBundle:Person')
|
||||
->findOneBy(array(
|
||||
'firstName' => 'Depardieu',
|
||||
'lastName' => 'Gérard'
|
||||
));
|
||||
|
||||
|
||||
if ($person === NULL) {
|
||||
throw new \RuntimeException("We need a person with firstname Gérard and"
|
||||
. " lastname Depardieu. Did you add fixtures ?");
|
||||
}
|
||||
|
||||
|
||||
return $person;
|
||||
}
|
||||
|
||||
|
||||
private function getActivitiesForPerson(\Chill\PersonBundle\Entity\Person $person)
|
||||
{
|
||||
$em = static::$kernel->getContainer()
|
||||
->get('doctrine.orm.entity_manager');
|
||||
|
||||
|
||||
$activities = $em->getRepository('ChillActivityBundle:Activity')
|
||||
->findBy(array('person' => $person));
|
||||
|
||||
|
||||
if (count($activities) === 0) {
|
||||
throw new \RuntimeException("We need activities associated with this "
|
||||
. "person. Did you forget to add fixtures ?");
|
||||
}
|
||||
|
||||
|
||||
return $activities;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
*
|
||||
*
|
||||
* @param string $username
|
||||
* @param string $centerName
|
||||
* @return \Chill\MainBundle\Entity\Scope
|
||||
@@ -235,46 +235,46 @@ class ActivityControllerTest extends WebTestCase
|
||||
->get('doctrine.orm.entity_manager')
|
||||
->getRepository('ChillMainBundle:User')
|
||||
->findOneByUsername($username);
|
||||
|
||||
|
||||
if ($user === NULL) {
|
||||
throw new \RuntimeException("The user with username $username "
|
||||
. "does not exists in database. Did you add fixtures ?");
|
||||
}
|
||||
|
||||
|
||||
$center = static::$kernel->getContainer()
|
||||
->get('doctrine.orm.entity_manager')
|
||||
->getRepository('ChillMainBundle:Center')
|
||||
->findOneByName($centerName);
|
||||
|
||||
|
||||
// get scope reachable by both role UPDATE and DELETE
|
||||
$reachableScopesUpdate = static::$kernel->getContainer()
|
||||
->get('chill.main.security.authorization.helper')
|
||||
->getReachableScopes($user, new Role('CHILL_ACTIVITY_UPDATE'),
|
||||
->getReachableScopes($user, new Role('CHILL_ACTIVITY_UPDATE'),
|
||||
$center);
|
||||
$reachableScopesDelete = static::$kernel->getContainer()
|
||||
->get('chill.main.security.authorization.helper')
|
||||
->getReachableScopes($user, new Role('CHILL_ACTIVITY_DELETE'),
|
||||
->getReachableScopes($user, new Role('CHILL_ACTIVITY_DELETE'),
|
||||
$center);
|
||||
$reachableScopesId = array_intersect(
|
||||
array_map(function ($s) { return $s->getId(); }, $reachableScopesDelete),
|
||||
array_map(function ($s) { return $s->getId(); }, $reachableScopesDelete),
|
||||
array_map(function ($s) { return $s->getId(); }, $reachableScopesUpdate)
|
||||
);
|
||||
if (count($reachableScopesId) === 0) {
|
||||
throw new \RuntimeException("there are not scope reachable for "
|
||||
. "both CHILL_ACTIVITY_UPDATE and CHILL_ACTIVITY_DELETE");
|
||||
}
|
||||
|
||||
|
||||
foreach($reachableScopesUpdate as $scope) {
|
||||
if (in_array($scope->getId(), $reachableScopesId)) {
|
||||
$reachableScopes[] = $scope;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
return $reachableScopes[array_rand($reachableScopes)];
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
*
|
||||
*
|
||||
* @param int[] $excludeIds An array of id to exclude
|
||||
* @return \Chill\ActivityBundle\Entity\ActivityReason
|
||||
*/
|
||||
@@ -284,18 +284,18 @@ class ActivityControllerTest extends WebTestCase
|
||||
->get('doctrine.orm.entity_manager')
|
||||
->getRepository('ChillActivityBundle:ActivityReason')
|
||||
->findAll();
|
||||
|
||||
|
||||
$reason = $reasons[array_rand($reasons)];
|
||||
|
||||
|
||||
if (in_array($reason->getId(), $excludeIds)) {
|
||||
return $this->getRandomActivityReason($excludeIds);
|
||||
}
|
||||
|
||||
|
||||
return $reason;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
*
|
||||
*
|
||||
* @return \Chill\ActivityBundle\Entity\ActivityType
|
||||
*/
|
||||
private function getRandomActivityType()
|
||||
@@ -304,21 +304,21 @@ class ActivityControllerTest extends WebTestCase
|
||||
->get('doctrine.orm.entity_manager')
|
||||
->getRepository('ChillActivityBundle:ActivityType')
|
||||
->findAll();
|
||||
|
||||
|
||||
return $types[array_rand($types)];
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* create a user without any permissions on CHILL_ACTIVITY_* but with
|
||||
* create a user without any permissions on CHILL_ACTIVITY_* but with
|
||||
* permissions on center.
|
||||
*
|
||||
*
|
||||
* @return \Chill\MainBundle\Entity\User a fake user within a group without activity
|
||||
*/
|
||||
private function createFakeUser()
|
||||
{
|
||||
$container = static::$kernel->getContainer();
|
||||
$em = $container->get('doctrine.orm.entity_manager');
|
||||
|
||||
|
||||
//get the social PermissionGroup, and remove CHILL_ACTIVITY_*
|
||||
$socialPermissionGroup = $em
|
||||
->getRepository('ChillMainBundle:PermissionsGroup')
|
||||
@@ -331,14 +331,14 @@ class ActivityControllerTest extends WebTestCase
|
||||
$withoutActivityPermissionGroup->addRoleScope($roleScope);
|
||||
}
|
||||
}
|
||||
//create groupCenter
|
||||
//create groupCenter
|
||||
$groupCenter = new \Chill\MainBundle\Entity\GroupCenter();
|
||||
$groupCenter->setCenter($em->getRepository('ChillMainBundle:Center')
|
||||
->findOneBy(array('name' => 'Center A')))
|
||||
->setPermissionsGroup($withoutActivityPermissionGroup);
|
||||
$em->persist($withoutActivityPermissionGroup);
|
||||
$em->persist($groupCenter);
|
||||
|
||||
|
||||
//create user
|
||||
$faker = \Faker\Factory::create();
|
||||
$username = $faker->name;
|
||||
@@ -348,11 +348,11 @@ class ActivityControllerTest extends WebTestCase
|
||||
->encodePassword($user, 'password'))
|
||||
->setUsername($username)
|
||||
->addGroupCenter($groupCenter);
|
||||
|
||||
|
||||
$em->persist($user);
|
||||
|
||||
|
||||
$em->flush();
|
||||
|
||||
|
||||
return $user;
|
||||
}
|
||||
}
|
||||
|
@@ -27,7 +27,7 @@ use Symfony\Component\Security\Core\Role\Role;
|
||||
use Symfony\Component\Form\Extension\Core\Type\FormType;
|
||||
|
||||
/**
|
||||
*
|
||||
*
|
||||
*
|
||||
* @author Julien Fastré <julien.fastre@champs-libres.coop>
|
||||
*/
|
||||
@@ -38,19 +38,19 @@ class ActivityTypeTest extends KernelTestCase
|
||||
* @var \Symfony\Component\Form\FormBuilderInterface
|
||||
*/
|
||||
protected $formBuilder;
|
||||
|
||||
|
||||
/**
|
||||
*
|
||||
* @var \Symfony\Component\DependencyInjection\ContainerInterface
|
||||
*/
|
||||
protected $container;
|
||||
|
||||
|
||||
/**
|
||||
*
|
||||
* @var \Symfony\Component\Security\Core\User\UserInterface
|
||||
*/
|
||||
protected $user;
|
||||
|
||||
|
||||
/**
|
||||
*
|
||||
* @var \Chill\MainBundle\Entity\Center
|
||||
@@ -60,26 +60,26 @@ class ActivityTypeTest extends KernelTestCase
|
||||
public function setUp()
|
||||
{
|
||||
self::bootKernel();
|
||||
|
||||
|
||||
$this->container = self::$kernel->getContainer();
|
||||
|
||||
|
||||
$prophet = new \Prophecy\Prophet;
|
||||
|
||||
|
||||
|
||||
|
||||
$this->formBuilder = $this->container
|
||||
->get('form.factory')
|
||||
->createBuilder(FormType::class, null, array(
|
||||
'csrf_protection' => false,
|
||||
'csrf_field_name' => '_token'
|
||||
));
|
||||
|
||||
|
||||
$request = new \Symfony\Component\HttpFoundation\Request();
|
||||
$request->setLocale('fr');
|
||||
|
||||
|
||||
self::$kernel->getContainer()
|
||||
->get('request_stack')
|
||||
->push($request);
|
||||
|
||||
|
||||
$this->user = $this->container->get('doctrine.orm.entity_manager')
|
||||
->getRepository('ChillMainBundle:User')
|
||||
->findOneBy(array('username' => 'center a_social'));
|
||||
@@ -91,9 +91,9 @@ class ActivityTypeTest extends KernelTestCase
|
||||
$token->getUser()->willReturn($this->user);
|
||||
$this->container->get('security.token_storage')
|
||||
->setToken($token->reveal());
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
public function testForm()
|
||||
{
|
||||
$form = $this->formBuilder
|
||||
@@ -102,15 +102,15 @@ class ActivityTypeTest extends KernelTestCase
|
||||
'role' => new Role('CHILL_ACTIVITY_CREATE')
|
||||
))
|
||||
->getForm();
|
||||
|
||||
|
||||
$form->submit(array());
|
||||
|
||||
|
||||
$this->assertTrue($form->isSynchronized());
|
||||
$this->assertTrue($form->isValid());
|
||||
$this->assertInstanceOf(Activity::class, $form->getData()['activity']);
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
public function testFormSubmitting()
|
||||
{
|
||||
$form = $this->formBuilder
|
||||
@@ -119,35 +119,35 @@ class ActivityTypeTest extends KernelTestCase
|
||||
'role' => new Role('CHILL_ACTIVITY_CREATE')
|
||||
))
|
||||
->getForm();
|
||||
|
||||
|
||||
$form->submit(array( 'activity' => array(
|
||||
'date' => '9-3-2015',
|
||||
'durationTime' => 300,
|
||||
'remark' => 'blabla',
|
||||
// 'remark' => 'blabla',
|
||||
'attendee' => true
|
||||
)));
|
||||
|
||||
|
||||
// var_dump($form->getErrors()->count()); var_dump($form->isValid());
|
||||
// foreach($form->getErrors() as $e) { fwrite(STDOUT, var_dump($e->getMessage())); }
|
||||
// var_dump($form->getErrors());
|
||||
|
||||
|
||||
$this->assertTrue($form->isSynchronized(), "Test the form is synchronized");
|
||||
$this->assertTrue($form->isValid(), "test the form is valid");
|
||||
$this->assertInstanceOf(Activity::class, $form->getData()['activity']);
|
||||
|
||||
|
||||
// test the activity
|
||||
/* @var $activity Activity */
|
||||
$activity = $form->getData()['activity'];
|
||||
|
||||
|
||||
$this->assertEquals('09-03-2015', $activity->getDate()->format('d-m-Y'),
|
||||
"Test the date is correct");
|
||||
$this->assertEquals('00:05', $activity->getDurationTime()->format('H:i'),
|
||||
"Test the formatted hour is correct");
|
||||
$this->assertEquals(true, $activity->getAttendee());
|
||||
$this->assertEquals('blabla', $activity->getRemark());
|
||||
|
||||
// $this->assertEquals('blabla', $activity->getRemark());
|
||||
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Test that the form correctly build even with a durationTime which is not in
|
||||
* the listed in the possible durationTime
|
||||
@@ -156,50 +156,50 @@ class ActivityTypeTest extends KernelTestCase
|
||||
{
|
||||
$activity = new Activity();
|
||||
$activity->setDurationTime(\DateTime::createFromFormat('U', 60));
|
||||
|
||||
|
||||
$builder = $this->container
|
||||
->get('form.factory')
|
||||
->createBuilder(FormType::class, array('activity' => $activity), array(
|
||||
'csrf_protection' => false,
|
||||
'csrf_field_name' => '_token'
|
||||
));
|
||||
|
||||
|
||||
$form = $builder
|
||||
->add('activity', ActivityType::class, array(
|
||||
'center' => $this->center,
|
||||
'role' => new Role('CHILL_ACTIVITY_CREATE')
|
||||
))
|
||||
->getForm();
|
||||
|
||||
|
||||
|
||||
|
||||
$form->submit(array( 'activity' => array(
|
||||
'date' => '9-3-2015',
|
||||
'durationTime' => 60,
|
||||
'remark' => 'blabla',
|
||||
// 'remark' => 'blabla',
|
||||
'attendee' => true
|
||||
)));
|
||||
|
||||
|
||||
$this->assertTrue($form->isSynchronized());
|
||||
$this->assertTrue($form->isValid());
|
||||
|
||||
|
||||
// test the activity
|
||||
/* @var $activity Activity */
|
||||
$activity = $form->getData()['activity'];
|
||||
|
||||
|
||||
$this->assertEquals('00:01', $activity->getDurationTime()->format('H:i'),
|
||||
"Test the formatted hour is correct");
|
||||
|
||||
|
||||
// test the view : we want to be sure that the entry with 60 seconds exists
|
||||
$view = $form->createView();
|
||||
|
||||
|
||||
$this->assertTrue(isset($view['activity']['durationTime']));
|
||||
|
||||
|
||||
// map all the values in an array
|
||||
$values = array_map(function($choice) { return $choice->value; },
|
||||
$values = array_map(function($choice) { return $choice->value; },
|
||||
$view['activity']['durationTime']->vars['choices']);
|
||||
|
||||
|
||||
$this->assertContains(60, $values);
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
Reference in New Issue
Block a user