fix dates in project API (#1451)

This commit is contained in:
Kevin Papst
2020-02-10 00:16:44 +01:00
committed by GitHub
parent e06314e802
commit 9620627ea6
4 changed files with 26 additions and 11 deletions

View File

@@ -202,7 +202,9 @@ class ProjectController extends BaseApiController
$event = new ProjectMetaDefinitionEvent($project); $event = new ProjectMetaDefinitionEvent($project);
$this->dispatcher->dispatch($event); $this->dispatcher->dispatch($event);
$form = $this->createForm(ProjectApiEditForm::class, $project); $form = $this->createForm(ProjectApiEditForm::class, $project, [
'date_format' => self::DATE_FORMAT,
]);
$form->submit($request->request->all()); $form->submit($request->request->all());
@@ -264,7 +266,9 @@ class ProjectController extends BaseApiController
$event = new ProjectMetaDefinitionEvent($project); $event = new ProjectMetaDefinitionEvent($project);
$this->dispatcher->dispatch($event); $this->dispatcher->dispatch($event);
$form = $this->createForm(ProjectApiEditForm::class, $project); $form = $this->createForm(ProjectApiEditForm::class, $project, [
'date_format' => self::DATE_FORMAT,
]);
$form->setData($project); $form->setData($project);
$form->submit($request->request->all(), false); $form->submit($request->request->all(), false);

View File

@@ -44,6 +44,12 @@ class ProjectEditForm extends AbstractType
} }
} }
$dateTimeOptions = [];
// primarily for API usage, where we cannot use a user/locale specific format
if (null !== $options['date_format']) {
$dateTimeOptions['format'] = $options['date_format'];
}
$builder $builder
->add('name', TextType::class, [ ->add('name', TextType::class, [
'label' => 'label.name', 'label' => 'label.name',
@@ -59,18 +65,18 @@ class ProjectEditForm extends AbstractType
'label' => 'label.orderNumber', 'label' => 'label.orderNumber',
'required' => false, 'required' => false,
]) ])
->add('orderDate', DateTimePickerType::class, [ ->add('orderDate', DateTimePickerType::class, array_merge($dateTimeOptions, [
'label' => 'label.orderDate', 'label' => 'label.orderDate',
'required' => false, 'required' => false,
]) ]))
->add('start', DateTimePickerType::class, [ ->add('start', DateTimePickerType::class, array_merge($dateTimeOptions, [
'label' => 'label.project_start', 'label' => 'label.project_start',
'required' => false, 'required' => false,
]) ]))
->add('end', DateTimePickerType::class, [ ->add('end', DateTimePickerType::class, array_merge($dateTimeOptions, [
'label' => 'label.project_end', 'label' => 'label.project_end',
'required' => false, 'required' => false,
]) ]))
->add('customer', CustomerType::class, [ ->add('customer', CustomerType::class, [
'query_builder' => function (CustomerRepository $repo) use ($builder, $customer) { 'query_builder' => function (CustomerRepository $repo) use ($builder, $customer) {
$query = new CustomerFormTypeQuery($customer); $query = new CustomerFormTypeQuery($customer);
@@ -98,6 +104,7 @@ class ProjectEditForm extends AbstractType
'csrf_field_name' => '_token', 'csrf_field_name' => '_token',
'csrf_token_id' => 'admin_project_edit', 'csrf_token_id' => 'admin_project_edit',
'currency' => Customer::DEFAULT_CURRENCY, 'currency' => Customer::DEFAULT_CURRENCY,
'date_format' => null,
'include_budget' => false, 'include_budget' => false,
'create_more' => false, 'create_more' => false,
'attr' => [ 'attr' => [

View File

@@ -130,6 +130,9 @@ class ProjectControllerTest extends APIControllerBaseTest
'name' => 'foo', 'name' => 'foo',
'customer' => 1, 'customer' => 1,
'visible' => true, 'visible' => true,
'orderDate' => '2018-02-08T13:02:54',
'start' => '2019-02-01T19:32:17',
'end' => '2020-02-08T21:11:42',
]; ];
$this->request($client, '/api/projects', 'POST', [], json_encode($data)); $this->request($client, '/api/projects', 'POST', [], json_encode($data));
$this->assertTrue($client->getResponse()->isSuccessful()); $this->assertTrue($client->getResponse()->isSuccessful());
@@ -138,6 +141,9 @@ class ProjectControllerTest extends APIControllerBaseTest
$this->assertIsArray($result); $this->assertIsArray($result);
$this->assertStructure($result); $this->assertStructure($result);
$this->assertNotEmpty($result['id']); $this->assertNotEmpty($result['id']);
self::assertEquals('2018-02-08T13:02:54+0000', $result['orderDate']);
self::assertEquals('2019-02-01T19:32:17+0000', $result['start']);
self::assertEquals('2020-02-08T21:11:42+0000', $result['end']);
} }
public function testPostActionWithInvalidUser() public function testPostActionWithInvalidUser()

View File

@@ -102,10 +102,8 @@ class DailyWorkingTimeChartTest extends TestCase
{ {
$repository = $this->getMockBuilder(TimesheetRepository::class)->disableOriginalConstructor()->onlyMethods(['getDailyData'])->getMock(); $repository = $this->getMockBuilder(TimesheetRepository::class)->disableOriginalConstructor()->onlyMethods(['getDailyData'])->getMock();
$repository->expects($this->once())->method('getDailyData')->willReturnCallback(function ($begin, $end, $user) { $repository->expects($this->once())->method('getDailyData')->willReturnCallback(function ($begin, $end, $user) {
$today = (new \DateTime());
return [ return [
['year' => $today->format('Y'), 'month' => $today->format('n'), 'day' => $today->format('j'), 'rate' => 13.75, 'duration' => 1234] ['year' => $begin->format('Y'), 'month' => $begin->format('n'), 'day' => $begin->format('j'), 'rate' => 13.75, 'duration' => 1234]
]; ];
}); });