duplicate projects with all settings (#1465)
This commit is contained in:
@@ -9,8 +9,13 @@
|
||||
|
||||
namespace App\Tests\Controller;
|
||||
|
||||
use App\Entity\Activity;
|
||||
use App\Entity\ActivityMeta;
|
||||
use App\Entity\ActivityRate;
|
||||
use App\Entity\Project;
|
||||
use App\Entity\ProjectMeta;
|
||||
use App\Entity\ProjectRate;
|
||||
use App\Entity\Team;
|
||||
use App\Entity\Timesheet;
|
||||
use App\Entity\User;
|
||||
use App\Tests\DataFixtures\ActivityFixtures;
|
||||
@@ -21,6 +26,7 @@ use App\Tests\DataFixtures\TimesheetFixtures;
|
||||
use App\Tests\Mocks\ProjectTestMetaFieldSubscriberMock;
|
||||
use Doctrine\ORM\EntityManager;
|
||||
use Symfony\Component\DomCrawler\Field\ChoiceFormField;
|
||||
use Symfony\Component\HttpKernel\HttpKernelBrowser;
|
||||
|
||||
/**
|
||||
* @group integration
|
||||
@@ -74,7 +80,7 @@ class ProjectControllerTest extends ControllerBaseTest
|
||||
{
|
||||
$client = $this->getClientForAuthenticatedUser(User::ROLE_ADMIN);
|
||||
/** @var EntityManager $em */
|
||||
$em = $client->getContainer()->get('doctrine.orm.entity_manager');
|
||||
$em = static::$kernel->getContainer()->get('doctrine.orm.entity_manager');
|
||||
|
||||
$project = $em->getRepository(Project::class)->find(1);
|
||||
|
||||
@@ -113,15 +119,58 @@ class ProjectControllerTest extends ControllerBaseTest
|
||||
public function testAddRateAction()
|
||||
{
|
||||
$client = $this->getClientForAuthenticatedUser(User::ROLE_ADMIN);
|
||||
$this->assertAccessIsGranted($client, '/admin/project/1/rate');
|
||||
$this->assertAddRate($client, 123.45, 1);
|
||||
}
|
||||
|
||||
protected function assertAddRate(HttpKernelBrowser $client, $rate, $projectId)
|
||||
{
|
||||
$this->assertAccessIsGranted($client, '/admin/project/' . $projectId . '/rate');
|
||||
$form = $client->getCrawler()->filter('form[name=project_rate_form]')->form();
|
||||
$client->submit($form, [
|
||||
'project_rate_form' => [
|
||||
'user' => null,
|
||||
'rate' => 123.45,
|
||||
'rate' => $rate,
|
||||
]
|
||||
]);
|
||||
$this->assertIsRedirect($client, $this->createUrl('/admin/project/1/details'));
|
||||
$this->assertIsRedirect($client, $this->createUrl('/admin/project/' . $projectId . '/details'));
|
||||
$client->followRedirect();
|
||||
$node = $client->getCrawler()->filter('div.box#project_rates_box');
|
||||
self::assertEquals(1, $node->count());
|
||||
$node = $client->getCrawler()->filter('div.box#project_rates_box table.dataTable tbody tr:not(.summary)');
|
||||
self::assertEquals(1, $node->count());
|
||||
self::assertStringContainsString($rate, $node->text(null, true));
|
||||
}
|
||||
|
||||
public function testDuplicateAction()
|
||||
{
|
||||
$client = $this->getClientForAuthenticatedUser(User::ROLE_ADMIN);
|
||||
/** @var EntityManager $em */
|
||||
$em = static::$kernel->getContainer()->get('doctrine.orm.entity_manager');
|
||||
$project = $em->find(Project::class, 1);
|
||||
$project->setMetaField((new ProjectMeta())->setName('foo')->setValue('bar'));
|
||||
$project->setEnd(new \DateTime());
|
||||
$em->persist($project);
|
||||
$team = new Team();
|
||||
$team->setTeamLead($this->getUserByRole($em, User::ROLE_ADMIN));
|
||||
$team->addProject($project);
|
||||
$team->setName('project 1');
|
||||
$em->persist($team);
|
||||
$rate = new ProjectRate();
|
||||
$rate->setProject($project);
|
||||
$rate->setRate(123.45);
|
||||
$em->persist($rate);
|
||||
$activity = new Activity();
|
||||
$activity->setName('blub');
|
||||
$activity->setProject($project);
|
||||
$activity->setMetaField((new ActivityMeta())->setName('blub')->setValue('blab'));
|
||||
$em->persist($activity);
|
||||
$rate = new ActivityRate();
|
||||
$rate->setActivity($activity);
|
||||
$rate->setRate(123.45);
|
||||
$em->persist($rate);
|
||||
|
||||
$this->request($client, '/admin/project/1/duplicate');
|
||||
$this->assertIsRedirect($client, $this->createUrl('/admin/project/2/details'));
|
||||
$client->followRedirect();
|
||||
$node = $client->getCrawler()->filter('div.box#project_rates_box');
|
||||
self::assertEquals(1, $node->count());
|
||||
@@ -249,7 +298,7 @@ class ProjectControllerTest extends ControllerBaseTest
|
||||
self::assertEquals('', $client->getResponse()->getContent());
|
||||
|
||||
/** @var EntityManager $em */
|
||||
$em = $client->getContainer()->get('doctrine.orm.entity_manager');
|
||||
$em = static::$kernel->getContainer()->get('doctrine.orm.entity_manager');
|
||||
$project = $em->getRepository(Project::class)->find(1);
|
||||
$fixture = new ActivityFixtures();
|
||||
$fixture->setAmount(9); // to trigger a second page (every third activity is hidden)
|
||||
@@ -286,7 +335,7 @@ class ProjectControllerTest extends ControllerBaseTest
|
||||
public function testCreateActionShowsMetaFields()
|
||||
{
|
||||
$client = $this->getClientForAuthenticatedUser(User::ROLE_ADMIN);
|
||||
$client->getContainer()->get('event_dispatcher')->addSubscriber(new ProjectTestMetaFieldSubscriberMock());
|
||||
static::$kernel->getContainer()->get('event_dispatcher')->addSubscriber(new ProjectTestMetaFieldSubscriberMock());
|
||||
$this->assertAccessIsGranted($client, '/admin/project/create');
|
||||
$this->assertTrue($client->getResponse()->isSuccessful());
|
||||
|
||||
@@ -348,7 +397,7 @@ class ProjectControllerTest extends ControllerBaseTest
|
||||
public function testTeamPermissionAction()
|
||||
{
|
||||
$client = $this->getClientForAuthenticatedUser(User::ROLE_ADMIN);
|
||||
$em = $client->getContainer()->get('doctrine.orm.entity_manager');
|
||||
$em = static::$kernel->getContainer()->get('doctrine.orm.entity_manager');
|
||||
|
||||
/** @var Project $project */
|
||||
$project = $em->getRepository(Project::class)->find(1);
|
||||
@@ -407,7 +456,7 @@ class ProjectControllerTest extends ControllerBaseTest
|
||||
{
|
||||
$client = $this->getClientForAuthenticatedUser(User::ROLE_ADMIN);
|
||||
|
||||
$em = $client->getContainer()->get('doctrine.orm.entity_manager');
|
||||
$em = static::$kernel->getContainer()->get('doctrine.orm.entity_manager');
|
||||
$fixture = new TimesheetFixtures();
|
||||
$fixture->setUser($this->getUserByRole($em, User::ROLE_USER));
|
||||
$fixture->setAmount(10);
|
||||
@@ -446,7 +495,7 @@ class ProjectControllerTest extends ControllerBaseTest
|
||||
{
|
||||
$client = $this->getClientForAuthenticatedUser(User::ROLE_ADMIN);
|
||||
|
||||
$em = $client->getContainer()->get('doctrine.orm.entity_manager');
|
||||
$em = static::$kernel->getContainer()->get('doctrine.orm.entity_manager');
|
||||
$fixture = new TimesheetFixtures();
|
||||
$fixture->setUser($this->getUserByRole($em, User::ROLE_USER));
|
||||
$fixture->setAmount(10);
|
||||
|
||||
Reference in New Issue
Block a user