Release 2.43 (#5694)
This commit is contained in:
@@ -504,7 +504,7 @@ abstract class APIControllerBaseTestCase extends AbstractControllerBaseTestCase
|
||||
'billable' => 'bool',
|
||||
'color' => '@string',
|
||||
'customer' => 'int',
|
||||
'number' => '@int',
|
||||
'number' => '@string',
|
||||
'orderNumber' => '@string',
|
||||
'globalActivities' => 'bool',
|
||||
'comment' => '@string',
|
||||
@@ -521,7 +521,7 @@ abstract class APIControllerBaseTestCase extends AbstractControllerBaseTestCase
|
||||
'billable' => 'bool',
|
||||
'color' => '@string',
|
||||
'customer' => ['result' => 'object', 'type' => 'Customer'],
|
||||
'number' => '@int',
|
||||
'number' => '@string',
|
||||
'orderNumber' => '@string',
|
||||
'globalActivities' => 'bool',
|
||||
'comment' => '@string',
|
||||
@@ -537,7 +537,7 @@ abstract class APIControllerBaseTestCase extends AbstractControllerBaseTestCase
|
||||
'visible' => 'bool',
|
||||
'billable' => 'bool',
|
||||
'customer' => 'int',
|
||||
'number' => '@int',
|
||||
'number' => '@string',
|
||||
'orderNumber' => '@string',
|
||||
'color' => '@string',
|
||||
'metaFields' => ['result' => 'array', 'type' => 'ProjectMeta'],
|
||||
@@ -557,7 +557,7 @@ abstract class APIControllerBaseTestCase extends AbstractControllerBaseTestCase
|
||||
'visible' => 'bool',
|
||||
'billable' => 'bool',
|
||||
'customer' => 'int',
|
||||
'number' => '@int',
|
||||
'number' => '@string',
|
||||
'color' => '@string',
|
||||
'metaFields' => ['result' => 'array', 'type' => 'ProjectMeta'],
|
||||
'parentTitle' => 'string',
|
||||
@@ -581,7 +581,7 @@ abstract class APIControllerBaseTestCase extends AbstractControllerBaseTestCase
|
||||
'visible' => 'bool',
|
||||
'billable' => 'bool',
|
||||
'project' => '@int',
|
||||
'number' => '@int',
|
||||
'number' => '@string',
|
||||
'color' => '@string',
|
||||
'comment' => '@string',
|
||||
];
|
||||
@@ -593,7 +593,7 @@ abstract class APIControllerBaseTestCase extends AbstractControllerBaseTestCase
|
||||
'visible' => 'bool',
|
||||
'billable' => 'bool',
|
||||
'project' => ['result' => 'object', 'type' => '@ProjectExpanded'],
|
||||
'number' => '@int',
|
||||
'number' => '@string',
|
||||
'color' => '@string',
|
||||
'comment' => '@string',
|
||||
];
|
||||
@@ -606,7 +606,7 @@ abstract class APIControllerBaseTestCase extends AbstractControllerBaseTestCase
|
||||
'visible' => 'bool',
|
||||
'billable' => 'bool',
|
||||
'project' => '@int',
|
||||
'number' => '@int',
|
||||
'number' => '@string',
|
||||
'color' => '@string',
|
||||
'metaFields' => ['result' => 'array', 'type' => 'ProjectMeta'],
|
||||
'parentTitle' => '@string',
|
||||
@@ -622,7 +622,7 @@ abstract class APIControllerBaseTestCase extends AbstractControllerBaseTestCase
|
||||
'visible' => 'bool',
|
||||
'billable' => 'bool',
|
||||
'project' => '@int',
|
||||
'number' => '@int',
|
||||
'number' => '@string',
|
||||
'color' => '@string',
|
||||
'metaFields' => ['result' => 'array', 'type' => 'ProjectMeta'],
|
||||
'parentTitle' => '@string',
|
||||
|
||||
@@ -243,6 +243,24 @@ class ActivityControllerTest extends APIControllerBaseTestCase
|
||||
|
||||
self::assertIsArray($result);
|
||||
self::assertApiResponseTypeStructure('ActivityEntity', $result);
|
||||
|
||||
self::assertCount(14, array_keys($result));
|
||||
self::assertNull($result['parentTitle']);
|
||||
self::assertNotEmpty($result['id']);
|
||||
self::assertIsArray($result['teams']);
|
||||
self::assertEquals([], $result['teams']);
|
||||
self::assertIsArray($result['metaFields']);
|
||||
self::assertEquals([], $result['metaFields']);
|
||||
self::assertEquals('Test', $result['name']);
|
||||
self::assertNull($result['project']);
|
||||
self::assertEquals(1000, $result['budget']);
|
||||
self::assertEquals(100000, $result['timeBudget']);
|
||||
self::assertNull($result['budgetType']);
|
||||
self::assertNull($result['number']);
|
||||
self::assertEquals('Test comment', $result['comment']);
|
||||
self::assertNull($result['color']);
|
||||
self::assertTrue($result['visible']);
|
||||
self::assertTrue($result['billable']);
|
||||
}
|
||||
|
||||
public function testNotFound(): void
|
||||
@@ -256,9 +274,16 @@ class ActivityControllerTest extends APIControllerBaseTestCase
|
||||
$data = [
|
||||
'name' => 'foo',
|
||||
'project' => 1,
|
||||
'visible' => true,
|
||||
'budget' => '999',
|
||||
'timeBudget' => '7200',
|
||||
'timeBudget' => '10,25',
|
||||
'budgetType' => 'month',
|
||||
'number' => 'P-754',
|
||||
'comment' => 'Awesome activity since a short time',
|
||||
'invoiceText' => 'Some invoice text, pay slow please',
|
||||
'color' => '#000000',
|
||||
'visible' => true,
|
||||
'billable' => true,
|
||||
'teams' => [1],
|
||||
];
|
||||
$this->request($client, '/api/activities', 'POST', [], json_encode($data));
|
||||
self::assertTrue($client->getResponse()->isSuccessful());
|
||||
@@ -269,7 +294,22 @@ class ActivityControllerTest extends APIControllerBaseTestCase
|
||||
|
||||
self::assertIsArray($result);
|
||||
self::assertApiResponseTypeStructure('ActivityEntity', $result);
|
||||
self::assertEquals('Test', $result['parentTitle']);
|
||||
self::assertNotEmpty($result['id']);
|
||||
self::assertIsArray($result['teams']);
|
||||
self::assertEquals([['id' => 1, 'name' => 'Test team', 'color' => null]], $result['teams']);
|
||||
self::assertIsArray($result['metaFields']);
|
||||
self::assertEquals([], $result['metaFields']);
|
||||
self::assertEquals('foo', $result['name']);
|
||||
self::assertEquals(1, $result['project']);
|
||||
self::assertEquals('999', $result['budget']);
|
||||
self::assertEquals('36900', $result['timeBudget']);
|
||||
self::assertEquals('month', $result['budgetType']);
|
||||
self::assertEquals('P-754', $result['number']);
|
||||
self::assertEquals('Awesome activity since a short time', $result['comment']);
|
||||
self::assertEquals('#000000', $result['color']);
|
||||
self::assertTrue($result['visible']);
|
||||
self::assertTrue($result['billable']);
|
||||
}
|
||||
|
||||
public function testPostActionWithLeastFields(): void
|
||||
|
||||
@@ -228,6 +228,43 @@ class CustomerControllerTest extends APIControllerBaseTestCase
|
||||
|
||||
self::assertIsArray($result);
|
||||
self::assertApiResponseTypeStructure('CustomerEntity', $result);
|
||||
|
||||
self::assertCount(30, array_keys($result));
|
||||
self::assertNotEmpty($result['id']);
|
||||
self::assertIsArray($result['teams']);
|
||||
self::assertCount(1, $result['teams']);
|
||||
self::assertIsArray($result['teams'][0]);
|
||||
self::assertEquals('Testing customer 1 team', $result['teams'][0]['name']);
|
||||
self::assertIsArray($result['metaFields']);
|
||||
self::assertCount(1, $result['metaFields']);
|
||||
self::assertEquals([['name' => 'foo', 'value' => 'bar']], $result['metaFields']);
|
||||
self::assertEquals('Test', $result['name']);
|
||||
self::assertEquals(1000, $result['budget']);
|
||||
self::assertEquals(100000, $result['timeBudget']);
|
||||
self::assertNull($result['budgetType']);
|
||||
self::assertEquals('1', $result['number']);
|
||||
self::assertEquals('Test comment', $result['comment']);
|
||||
self::assertEquals('Test', $result['company']);
|
||||
self::assertNull($result['vatId']);
|
||||
self::assertEquals('Test', $result['contact']);
|
||||
self::assertEquals('Test', $result['address']);
|
||||
self::assertNull($result['addressLine1']);
|
||||
self::assertNull($result['addressLine2']);
|
||||
self::assertNull($result['addressLine3']);
|
||||
self::assertNull($result['postCode']);
|
||||
self::assertNull($result['city']);
|
||||
self::assertEquals('DE', $result['country']);
|
||||
self::assertEquals('EUR', $result['currency']);
|
||||
self::assertEquals('111', $result['phone']);
|
||||
self::assertEquals('222', $result['fax']);
|
||||
self::assertEquals('333', $result['mobile']);
|
||||
self::assertEquals('test@example.com', $result['email']);
|
||||
self::assertNull($result['homepage']);
|
||||
self::assertEquals('Europe/Berlin', $result['timezone']);
|
||||
self::assertNull($result['buyerReference']);
|
||||
self::assertNull($result['color']);
|
||||
self::assertTrue($result['visible']);
|
||||
self::assertTrue($result['billable']);
|
||||
}
|
||||
|
||||
public function testNotFound(): void
|
||||
@@ -240,12 +277,33 @@ class CustomerControllerTest extends APIControllerBaseTestCase
|
||||
$client = $this->getClientForAuthenticatedUser(User::ROLE_ADMIN);
|
||||
$data = [
|
||||
'name' => 'foo',
|
||||
'visible' => true,
|
||||
'budget' => '999',
|
||||
'timeBudget' => '10,25',
|
||||
'budgetType' => 'month',
|
||||
'number' => 'C-754',
|
||||
'comment' => 'Awesome customer since a long time',
|
||||
'company' => 'IT Professional Comp.',
|
||||
'vatId' => 'DE0123456789',
|
||||
'contact' => 'Mr. John Doe',
|
||||
'addressLine1' => 'test address line 1',
|
||||
'addressLine2' => 'foo address line 2',
|
||||
'addressLine3' => 'bar address line 3',
|
||||
'postCode' => '12345',
|
||||
'city' => 'Acme Town',
|
||||
'country' => 'DE',
|
||||
'currency' => 'EUR',
|
||||
'phone' => '666667787778999909087',
|
||||
'fax' => '0987654321',
|
||||
'mobile' => '01234534567890',
|
||||
'email' => 'admin@example.com',
|
||||
'homepage' => 'https://www.example.com/',
|
||||
'timezone' => 'Europe/Berlin',
|
||||
'budget' => '999',
|
||||
'timeBudget' => '7200',
|
||||
'invoiceText' => 'Some random text, pay fast please!',
|
||||
'buyerReference' => 'REF-0123456789',
|
||||
'color' => '#ff0000',
|
||||
'visible' => true,
|
||||
'billable' => true,
|
||||
'teams' => [1],
|
||||
];
|
||||
$this->request($client, '/api/customers', 'POST', [], json_encode($data));
|
||||
self::assertTrue($client->getResponse()->isSuccessful());
|
||||
@@ -257,6 +315,37 @@ class CustomerControllerTest extends APIControllerBaseTestCase
|
||||
self::assertIsArray($result);
|
||||
self::assertApiResponseTypeStructure('CustomerEntity', $result);
|
||||
self::assertNotEmpty($result['id']);
|
||||
self::assertIsArray($result['teams']);
|
||||
self::assertEquals([['id' => 1, 'name' => 'Test team', 'color' => null]], $result['teams']);
|
||||
self::assertIsArray($result['metaFields']);
|
||||
self::assertEquals([], $result['metaFields']);
|
||||
self::assertEquals('foo', $result['name']);
|
||||
self::assertEquals('999', $result['budget']);
|
||||
self::assertEquals('36900', $result['timeBudget']);
|
||||
self::assertEquals('month', $result['budgetType']);
|
||||
self::assertEquals('C-754', $result['number']);
|
||||
self::assertEquals('Awesome customer since a long time', $result['comment']);
|
||||
self::assertEquals('IT Professional Comp.', $result['company']);
|
||||
self::assertEquals('DE0123456789', $result['vatId']);
|
||||
self::assertEquals('Mr. John Doe', $result['contact']);
|
||||
self::assertNull($result['address']);
|
||||
self::assertEquals('test address line 1', $result['addressLine1']);
|
||||
self::assertEquals('foo address line 2', $result['addressLine2']);
|
||||
self::assertEquals('bar address line 3', $result['addressLine3']);
|
||||
self::assertEquals('12345', $result['postCode']);
|
||||
self::assertEquals('Acme Town', $result['city']);
|
||||
self::assertEquals('DE', $result['country']);
|
||||
self::assertEquals('EUR', $result['currency']);
|
||||
self::assertEquals('666667787778999909087', $result['phone']);
|
||||
self::assertEquals('0987654321', $result['fax']);
|
||||
self::assertEquals('01234534567890', $result['mobile']);
|
||||
self::assertEquals('admin@example.com', $result['email']);
|
||||
self::assertEquals('https://www.example.com/', $result['homepage']);
|
||||
self::assertEquals('Europe/Berlin', $result['timezone']);
|
||||
self::assertEquals('REF-0123456789', $result['buyerReference']);
|
||||
self::assertEquals('#ff0000', $result['color']);
|
||||
self::assertTrue($result['visible']);
|
||||
self::assertTrue($result['billable']);
|
||||
}
|
||||
|
||||
public function testPostActionWithLeastFields(): void
|
||||
|
||||
@@ -311,28 +311,28 @@ class ProjectControllerTest extends APIControllerBaseTestCase
|
||||
self::assertIsArray($result);
|
||||
self::assertApiResponseTypeStructure('ProjectEntity', $result);
|
||||
|
||||
$expected = [
|
||||
'parentTitle' => 'first one',
|
||||
'customer' => $customer->getId(),
|
||||
'id' => $project->getId(),
|
||||
'name' => 'first',
|
||||
'orderNumber' => null,
|
||||
// make sure the timezone is properly applied in serializer (see #1858)
|
||||
'orderDate' => '2019-11-29',
|
||||
'start' => '2020-01-07',
|
||||
'end' => '2021-03-23',
|
||||
'comment' => null,
|
||||
'visible' => true,
|
||||
'budget' => 0.0,
|
||||
'timeBudget' => 0,
|
||||
'metaFields' => [],
|
||||
'teams' => [],
|
||||
'color' => null,
|
||||
];
|
||||
|
||||
foreach ($expected as $key => $value) {
|
||||
self::assertEquals($value, $result[$key]);
|
||||
}
|
||||
self::assertCount(19, array_keys($result));
|
||||
self::assertEquals('first one', $result['parentTitle']);
|
||||
self::assertEquals($project->getId(), $result['id']);
|
||||
self::assertIsArray($result['teams']);
|
||||
self::assertEquals([], $result['teams']);
|
||||
self::assertIsArray($result['metaFields']);
|
||||
self::assertEquals([], $result['metaFields']);
|
||||
self::assertEquals('first', $result['name']);
|
||||
self::assertEquals($customer->getId(), $result['customer']);
|
||||
self::assertEquals('2019-11-29', $result['orderDate']);
|
||||
self::assertEquals('2020-01-07', $result['start']);
|
||||
self::assertEquals('2021-03-23', $result['end']);
|
||||
self::assertEquals(0.0, $result['budget']);
|
||||
self::assertEquals(0, $result['timeBudget']);
|
||||
self::assertNull($result['budgetType']);
|
||||
self::assertNull($result['orderNumber']);
|
||||
self::assertNull($result['number']);
|
||||
self::assertNull($result['comment']);
|
||||
self::assertNull($result['color']);
|
||||
self::assertTrue($result['globalActivities']);
|
||||
self::assertTrue($result['billable']);
|
||||
self::assertTrue($result['visible']);
|
||||
}
|
||||
|
||||
public function testNotFound(): void
|
||||
@@ -350,8 +350,17 @@ class ProjectControllerTest extends APIControllerBaseTestCase
|
||||
'start' => '2019-02-01',
|
||||
'end' => '2020-02-08',
|
||||
'budget' => '999',
|
||||
'timeBudget' => '7200',
|
||||
'timeBudget' => '10,25',
|
||||
'budgetType' => 'month',
|
||||
'orderNumber' => '1234567890/WXYZ/SUBPROJECT/1234/CONTRACT/EMPLOYEE1',
|
||||
'number' => 'A-1234',
|
||||
'comment' => 'Awesome project since a short time',
|
||||
'invoiceText' => 'Some invoice text, pay now!',
|
||||
'color' => '#c0c0c0',
|
||||
'globalActivities' => true,
|
||||
'visible' => true,
|
||||
'billable' => true,
|
||||
'teams' => [1],
|
||||
];
|
||||
$this->request($client, '/api/projects', 'POST', [], json_encode($data));
|
||||
self::assertTrue($client->getResponse()->isSuccessful());
|
||||
@@ -362,14 +371,27 @@ class ProjectControllerTest extends APIControllerBaseTestCase
|
||||
|
||||
self::assertIsArray($result);
|
||||
self::assertApiResponseTypeStructure('ProjectEntity', $result);
|
||||
self::assertEquals('Test', $result['parentTitle']);
|
||||
self::assertNotEmpty($result['id']);
|
||||
self::assertIsArray($result['teams']);
|
||||
self::assertEquals([['id' => 1, 'name' => 'Test team', 'color' => null]], $result['teams']);
|
||||
self::assertIsArray($result['metaFields']);
|
||||
self::assertEquals([], $result['metaFields']);
|
||||
self::assertEquals('foo', $result['name']);
|
||||
self::assertEquals(1, $result['customer']);
|
||||
self::assertEquals('2018-04-17', $result['orderDate']);
|
||||
self::assertEquals('2019-02-01', $result['start']);
|
||||
self::assertEquals('2020-02-08', $result['end']);
|
||||
self::assertEquals('999', $result['budget']);
|
||||
self::assertEquals('36900', $result['timeBudget']);
|
||||
self::assertEquals('month', $result['budgetType']);
|
||||
self::assertEquals('1234567890/WXYZ/SUBPROJECT/1234/CONTRACT/EMPLOYEE1', $result['orderNumber']);
|
||||
self::assertFalse($result['globalActivities']);
|
||||
self::assertFalse($result['billable']);
|
||||
self::assertFalse($result['visible']);
|
||||
self::assertEquals('A-1234', $result['number']);
|
||||
self::assertEquals('Awesome project since a short time', $result['comment']);
|
||||
self::assertEquals('#c0c0c0', $result['color']);
|
||||
self::assertTrue($result['globalActivities']);
|
||||
self::assertTrue($result['billable']);
|
||||
self::assertTrue($result['visible']);
|
||||
}
|
||||
|
||||
public function testPostActionWithOtherFields(): void
|
||||
|
||||
Reference in New Issue
Block a user