added multi-select for customer, project and activity (#1557)
This commit is contained in:
@@ -73,9 +73,9 @@ abstract class AbstractCalculatorTest extends TestCase
|
||||
|
||||
$query = new InvoiceQuery();
|
||||
if ($addProject === true) {
|
||||
$query->setProject($project);
|
||||
$query->setProjects([$project]);
|
||||
} elseif ($addActivity === true) {
|
||||
$query->setActivity($activity);
|
||||
$query->setActivities([$activity]);
|
||||
}
|
||||
|
||||
$timesheet = new Timesheet();
|
||||
|
||||
@@ -105,7 +105,7 @@ class DateInvoiceCalculatorTest extends AbstractCalculatorTest
|
||||
$entries = [$timesheet, $timesheet2, $timesheet3, $timesheet4, $timesheet5];
|
||||
|
||||
$query = new InvoiceQuery();
|
||||
$query->setProject($project1);
|
||||
$query->setProjects([$project1]);
|
||||
|
||||
$model = new InvoiceModel(new DebugFormatter());
|
||||
$model->setCustomer($customer);
|
||||
|
||||
@@ -105,7 +105,7 @@ class ProjectInvoiceCalculatorTest extends AbstractCalculatorTest
|
||||
$entries = [$timesheet, $timesheet2, $timesheet3, $timesheet4, $timesheet5];
|
||||
|
||||
$query = new InvoiceQuery();
|
||||
$query->setProject($project1);
|
||||
$query->setProjects([$project1]);
|
||||
|
||||
$model = new InvoiceModel(new DebugFormatter());
|
||||
$model->setCustomer($customer);
|
||||
|
||||
@@ -29,7 +29,7 @@ class InvoiceModelActivityHydratorTest extends TestCase
|
||||
$result = $sut->hydrate($model);
|
||||
$this->assertModelStructure($result);
|
||||
|
||||
$model->getQuery()->setActivity(null);
|
||||
$model->getQuery()->setActivities([]);
|
||||
$result = $sut->hydrate($model);
|
||||
self::assertEmpty($result);
|
||||
}
|
||||
@@ -41,6 +41,10 @@ class InvoiceModelActivityHydratorTest extends TestCase
|
||||
'activity.name',
|
||||
'activity.comment',
|
||||
'activity.meta.foo-activity',
|
||||
'activity.1.id',
|
||||
'activity.1.name',
|
||||
'activity.1.comment',
|
||||
'activity.1.meta.foo-activity',
|
||||
];
|
||||
|
||||
$givenKeys = array_keys($model);
|
||||
|
||||
@@ -29,7 +29,7 @@ class InvoiceModelProjectHydratorTest extends TestCase
|
||||
$result = $sut->hydrate($model);
|
||||
$this->assertModelStructure($result);
|
||||
|
||||
$model->getQuery()->setProject(null);
|
||||
$model->getQuery()->setProjects([]);
|
||||
$result = $sut->hydrate($model);
|
||||
self::assertEmpty($result);
|
||||
}
|
||||
@@ -51,6 +51,20 @@ class InvoiceModelProjectHydratorTest extends TestCase
|
||||
'project.budget_time',
|
||||
'project.budget_time_decimal',
|
||||
'project.budget_time_minutes',
|
||||
'project.1.id',
|
||||
'project.1.name',
|
||||
'project.1.comment',
|
||||
'project.1.order_date',
|
||||
'project.1.order_number',
|
||||
'project.1.meta.foo-project',
|
||||
'project.1.start_date',
|
||||
'project.1.end_date',
|
||||
'project.1.budget_money',
|
||||
'project.1.budget_money_nc',
|
||||
'project.1.budget_money_plain',
|
||||
'project.1.budget_time',
|
||||
'project.1.budget_time_decimal',
|
||||
'project.1.budget_time_minutes',
|
||||
];
|
||||
|
||||
$givenKeys = array_keys($model);
|
||||
|
||||
@@ -41,7 +41,7 @@ class CsvRendererTest extends TestCase
|
||||
|
||||
public function getTestModel()
|
||||
{
|
||||
yield [$this->getInvoiceModel(), '€1,947.99', 6, 5, 1, 2, 2];
|
||||
yield [$this->getInvoiceModel(), '€1,947.99', 6, 4, 1, 2, 2];
|
||||
yield [$this->getInvoiceModelOneEntry(), '$293.27', 2, 1, 0, 1, 0];
|
||||
}
|
||||
|
||||
|
||||
@@ -58,7 +58,7 @@ class DebugRendererTest extends TestCase
|
||||
$response = $sut->render($document, $model);
|
||||
$data = json_decode($response->getContent(), true);
|
||||
|
||||
$this->assertModelStructure($data['model'], $hasProject);
|
||||
$this->assertModelStructure($data['model'], count($model->getQuery()->getProjects()), count($model->getQuery()->getActivities()));
|
||||
$rows = $data['entries'];
|
||||
$this->assertEquals($expectedRows, count($rows));
|
||||
|
||||
@@ -74,7 +74,7 @@ class DebugRendererTest extends TestCase
|
||||
// TODO check values or formats?
|
||||
}
|
||||
|
||||
protected function assertModelStructure(array $model, $hasProject = true)
|
||||
protected function assertModelStructure(array $model, int $projectCounter = 0, int $activityCounter = 0)
|
||||
{
|
||||
$keys = [
|
||||
'invoice.due_date',
|
||||
@@ -133,7 +133,16 @@ class DebugRendererTest extends TestCase
|
||||
'testFromModelHydrator'
|
||||
];
|
||||
|
||||
if ($hasProject) {
|
||||
if ($activityCounter > 1) {
|
||||
$keys = array_merge($keys, [
|
||||
'activity.1.id',
|
||||
'activity.1.name',
|
||||
'activity.1.comment',
|
||||
'activity.1.meta.foo-activity',
|
||||
]);
|
||||
}
|
||||
|
||||
if ($projectCounter > 0) {
|
||||
$keys = array_merge($keys, [
|
||||
'project.id',
|
||||
'project.name',
|
||||
@@ -150,6 +159,24 @@ class DebugRendererTest extends TestCase
|
||||
'project.budget_time_decimal',
|
||||
'project.budget_time_minutes',
|
||||
]);
|
||||
if ($projectCounter > 1) {
|
||||
$keys = array_merge($keys, [
|
||||
'project.1.id',
|
||||
'project.1.name',
|
||||
'project.1.comment',
|
||||
'project.1.order_date',
|
||||
'project.1.order_number',
|
||||
'project.1.meta.foo-project',
|
||||
'project.1.start_date',
|
||||
'project.1.end_date',
|
||||
'project.1.budget_money',
|
||||
'project.1.budget_money_nc',
|
||||
'project.1.budget_money_plain',
|
||||
'project.1.budget_time',
|
||||
'project.1.budget_time_decimal',
|
||||
'project.1.budget_time_minutes',
|
||||
]);
|
||||
}
|
||||
}
|
||||
|
||||
$givenKeys = array_keys($model);
|
||||
|
||||
@@ -126,6 +126,16 @@ trait RendererTestTrait
|
||||
$activity->setProject($project);
|
||||
$activity->setMetaField((new ActivityMeta())->setName('foo-activity')->setValue('bar-activity')->setIsVisible(true));
|
||||
|
||||
$project2 = new Project();
|
||||
$project2->setName('project 2 name');
|
||||
$project2->setCustomer($customer);
|
||||
$project2->setMetaField((new ProjectMeta())->setName('foo-project')->setValue('bar-project2')->setIsVisible(true));
|
||||
|
||||
$activity2 = new Activity();
|
||||
$activity2->setName('activity 1 description');
|
||||
$activity2->setProject($project2);
|
||||
$activity2->setMetaField((new ActivityMeta())->setName('foo-activity')->setValue('bar-activity2')->setIsVisible(true));
|
||||
|
||||
$userMethods = ['getId', 'getPreferenceValue', 'getUsername'];
|
||||
$user1 = $this->getMockBuilder(User::class)->onlyMethods($userMethods)->disableOriginalConstructor()->getMock();
|
||||
$user1->method('getId')->willReturn(1);
|
||||
@@ -165,8 +175,8 @@ trait RendererTestTrait
|
||||
->setDuration(1800)
|
||||
->setRate(111.11)
|
||||
->setUser($user1)
|
||||
->setActivity($activity)
|
||||
->setProject($project)
|
||||
->setActivity($activity2)
|
||||
->setProject($project2)
|
||||
->setBegin(new \DateTime())
|
||||
->setEnd(new \DateTime())
|
||||
->setMetaField((new TimesheetMeta())->setName('foo-timesheet')->setValue('bar-timesheet1')->setIsVisible(true))
|
||||
@@ -198,10 +208,10 @@ trait RendererTestTrait
|
||||
$entries = [$timesheet, $timesheet2, $timesheet3, $timesheet4, $timesheet5];
|
||||
|
||||
$query = new InvoiceQuery();
|
||||
$query->setActivity($activity);
|
||||
$query->setActivities([$activity, $activity2]);
|
||||
$query->setBegin(new \DateTime());
|
||||
$query->setEnd(new \DateTime());
|
||||
$query->setProject($project);
|
||||
$query->setProjects([$project, $project2]);
|
||||
|
||||
$model = new InvoiceModel($this->getFormatter());
|
||||
$model->setCustomer($customer);
|
||||
@@ -272,7 +282,7 @@ trait RendererTestTrait
|
||||
$entries = [$timesheet];
|
||||
|
||||
$query = new InvoiceQuery();
|
||||
$query->setActivity($activity);
|
||||
$query->addActivity($activity);
|
||||
$query->setBegin(new \DateTime());
|
||||
$query->setEnd(new \DateTime());
|
||||
|
||||
|
||||
@@ -67,6 +67,6 @@ class TwigRendererTest extends KernelTestCase
|
||||
$this->assertStringContainsString('<h2 class="page-header">
|
||||
<span contenteditable="true">a very *long* test invoice / template title with [special] character</span>
|
||||
</h2>', $content);
|
||||
$this->assertEquals(5, substr_count($content, 'activity description'));
|
||||
$this->assertEquals(4, substr_count($content, 'activity description'));
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user