added global activities (#259)

This commit is contained in:
Kevin Papst
2018-11-06 23:10:34 +01:00
committed by GitHub
parent c66dfbc653
commit db7de3aac1
70 changed files with 1168 additions and 264 deletions

View File

@@ -35,14 +35,14 @@ abstract class AbstractEntityTest extends KernelTestCase
$expected = count($fieldNames);
$actual = $violations->count();
$this->assertEquals($expected, $actual, sprintf('Expected %s violations, found %s.', $expected, $actual));
$violatedFields = [];
/** @var ConstraintViolationInterface $validation */
foreach ($violations as $validation) {
$violatedFields[$validation->getPropertyPath()] = $validation->getPropertyPath();
}
$this->assertEquals($expected, count($violatedFields), sprintf('Expected %s violations, found %s in %s.', $expected, $actual, implode(', ', array_keys($violatedFields))));
foreach ($fieldNames as $id => $propertyPath) {
$foundField = false;
if (in_array($propertyPath, $violatedFields)) {

View File

@@ -12,6 +12,7 @@ namespace App\Tests\Entity;
use App\Entity\Activity;
use App\Entity\Customer;
use App\Entity\Project;
use App\Entity\Timesheet;
/**
* @covers \App\Entity\Project
@@ -31,6 +32,7 @@ class ProjectTest extends AbstractEntityTest
// activities
$this->assertNull($sut->getFixedRate());
$this->assertNull($sut->getHourlyRate());
$this->assertNull($sut->getTimesheets());
}
public function testSetterAndGetter()
@@ -64,5 +66,9 @@ class ProjectTest extends AbstractEntityTest
$this->assertEquals(13.47, $sut->getFixedRate());
$this->assertInstanceOf(Project::class, $sut->setHourlyRate(99));
$this->assertEquals(99, $sut->getHourlyRate());
$timesheets = [(new Timesheet())->setDescription('foo'), (new Timesheet())->setDescription('bar')];
$this->assertInstanceOf(Project::class, $sut->setTimesheets($timesheets));
$this->assertSame($timesheets, $sut->getTimesheets());
}
}

View File

@@ -29,6 +29,7 @@ class TimesheetTest extends AbstractEntityTest
$this->assertSame(0, $sut->getDuration());
$this->assertNull($sut->getUser());
$this->assertNull($sut->getActivity());
$this->assertNull($sut->getProject());
$this->assertNull($sut->getDescription());
$this->assertSame(0.00, $sut->getRate());
$this->assertNull($sut->getFixedRate());
@@ -56,10 +57,52 @@ class TimesheetTest extends AbstractEntityTest
$entity = new Timesheet();
$entity->setUser(new User());
$entity->setActivity($activity);
$entity->setProject($project);
return $entity;
}
public function testValidationNeedsActivity()
{
$entity = new Timesheet();
$entity
->setUser(new User())
->setProject(new Project())
->setBegin(new \DateTime())
;
$this->assertHasViolationForField($entity, 'activity');
}
public function testValidationNeedsProject()
{
$entity = new Timesheet();
$entity
->setUser(new User())
->setActivity(new Activity())
->setBegin(new \DateTime())
;
$this->assertHasViolationForField($entity, 'project');
}
public function testValidationProjectMismatch()
{
$project = (new Project())->setName('foo');
$project2 = (new Project())->setName('bar');
$activity = (new Activity())->setName('hello-world')->setProject($project);
$entity = new Timesheet();
$entity
->setUser(new User())
->setActivity($activity)
->setProject($project2)
->setBegin(new \DateTime())
;
$this->assertHasViolationForField($entity, 'project');
}
public function testValidationEndNotEarlierThanBegin()
{
$entity = $this->getEntity();