Release 2.25 (#5109)

This commit is contained in:
Kevin Papst
2024-11-21 22:44:49 +01:00
committed by GitHub
parent 49eb7068c9
commit 0c26a2678e
261 changed files with 6431 additions and 7426 deletions

View File

@@ -225,7 +225,7 @@ abstract class APIControllerBaseTest extends ControllerBaseTest
if (\count($globalError) > 0) {
self::assertArrayHasKey('errors', $result['errors']);
foreach ($globalError as $err) {
self::assertTrue(\in_array($err, $result['errors']['errors']), 'Missing global validation error: ' . $err);
self::assertTrue(\in_array($err, $result['errors']['errors']), 'Missing global validation error: ' . $err); // @phpstan-ignore binaryOp.invalid
}
}

View File

@@ -60,11 +60,13 @@ class ActionsControllerTest extends APIControllerBaseTest
$this->assertIsArray($result);
foreach ($result as $item) {
self::assertIsArray($item);
self::assertApiResponseTypeStructure('PageActionItem', $item);
}
$i = 0;
foreach ($entries as $id) {
self::assertIsArray($result[$i]);
self::assertEquals($id, $result[$i]['id'], \sprintf('Failed action "%s" with name "%s" in view "%s"', $i, $id, $view));
$i++;
}
@@ -110,11 +112,13 @@ class ActionsControllerTest extends APIControllerBaseTest
$this->assertIsArray($result);
foreach ($result as $item) {
self::assertIsArray($item);
self::assertApiResponseTypeStructure('PageActionItem', $item);
}
$i = 0;
foreach ($entries as $id) {
self::assertIsArray($result[$i]);
self::assertEquals($id, $result[$i]['id'], \sprintf('Failed action "%s" with name "%s" in view "%s"', $i, $id, $view));
$i++;
}
@@ -159,11 +163,13 @@ class ActionsControllerTest extends APIControllerBaseTest
$this->assertIsArray($result);
foreach ($result as $item) {
self::assertIsArray($item);
self::assertApiResponseTypeStructure('PageActionItem', $item);
}
$i = 0;
foreach ($entries as $id) {
self::assertIsArray($result[$i]);
self::assertEquals($id, $result[$i]['id'], \sprintf('Failed action "%s" with name "%s" in view "%s"', $i, $id, $view));
$i++;
}
@@ -204,11 +210,13 @@ class ActionsControllerTest extends APIControllerBaseTest
$this->assertIsArray($result);
foreach ($result as $item) {
self::assertIsArray($item);
self::assertApiResponseTypeStructure('PageActionItem', $item);
}
$i = 0;
foreach ($entries as $id) {
self::assertIsArray($result[$i]);
self::assertEquals($id, $result[$i]['id'], \sprintf('Failed action "%s" with name "%s" in view "%s"', $i, $id, $view));
$i++;
}

View File

@@ -21,6 +21,7 @@ use App\Repository\ActivityRateRepository;
use App\Repository\ActivityRepository;
use App\Repository\Query\VisibilityInterface;
use App\Tests\Mocks\ActivityTestMetaFieldSubscriberMock;
use Symfony\Component\EventDispatcher\EventDispatcher;
/**
* @group integration
@@ -179,6 +180,7 @@ class ActivityControllerTest extends APIControllerBaseTest
for ($i = 0; $i < \count($result); $i++) {
$activity = $result[$i];
$hasProject = $expected[$i][0];
self::assertIsArray($activity);
self::assertApiResponseTypeStructure('ActivityCollection', $activity);
if ($hasProject && $projectId !== null) {
$this->assertEquals($projectId, $activity['project']);
@@ -219,6 +221,7 @@ class ActivityControllerTest extends APIControllerBaseTest
$this->assertIsArray($result);
$this->assertNotEmpty($result);
$this->assertEquals(5, \count($result));
self::assertIsArray($result[0]);
self::assertApiResponseTypeStructure('ActivityCollection', $result[0]);
$this->assertEquals($imports[0]->getId(), $result[4]['project']);
$this->assertEquals($imports[1]->getId(), $result[3]['project']);
@@ -429,7 +432,9 @@ class ActivityControllerTest extends APIControllerBaseTest
public function testMetaAction(): void
{
$client = $this->getClientForAuthenticatedUser(User::ROLE_ADMIN);
static::getContainer()->get('event_dispatcher')->addSubscriber(new ActivityTestMetaFieldSubscriberMock());
/** @var EventDispatcher $dispatcher */
$dispatcher = static::getContainer()->get('event_dispatcher');
$dispatcher->addSubscriber(new ActivityTestMetaFieldSubscriberMock());
$data = [
'name' => 'metatestmock',

View File

@@ -20,7 +20,6 @@ use Symfony\Component\Security\Core\Exception\BadCredentialsException;
use Symfony\Component\Security\Core\Exception\CustomUserMessageAuthenticationException;
use Symfony\Component\Security\Http\Authenticator\Passport\Badge\UserBadge;
use Symfony\Component\Security\Http\Authenticator\Passport\Credentials\CustomCredentials;
use Symfony\Component\Security\Http\Authenticator\Passport\Passport;
/**
* @covers \App\API\Authentication\TokenAuthenticator
@@ -118,7 +117,6 @@ class TokenAuthenticatorTest extends TestCase
$request = new Request([], [], [], [], [], ['REQUEST_URI' => '/api/fooo', 'HTTP_X-AUTH-USER' => 'foo2', 'HTTP_X-AUTH-TOKEN' => 'bar']);
$passport = $sut->authenticate($request);
self::assertInstanceOf(Passport::class, $passport);
$badge = $passport->getBadge(UserBadge::class);
self::assertInstanceOf(UserBadge::class, $badge);
self::assertEquals('foo2', $badge->getUserIdentifier());

View File

@@ -21,6 +21,7 @@ use App\Entity\User;
use App\Repository\CustomerRateRepository;
use App\Repository\CustomerRepository;
use App\Tests\Mocks\CustomerTestMetaFieldSubscriberMock;
use Symfony\Component\EventDispatcher\EventDispatcher;
/**
* @group integration
@@ -104,6 +105,7 @@ class CustomerControllerTest extends APIControllerBaseTest
$this->assertIsArray($result);
$this->assertNotEmpty($result);
$this->assertEquals(1, \count($result));
self::assertIsArray($result[0]);
self::assertApiResponseTypeStructure('CustomerCollection', $result[0]);
}
@@ -120,6 +122,7 @@ class CustomerControllerTest extends APIControllerBaseTest
$this->assertIsArray($result);
$this->assertNotEmpty($result);
$this->assertEquals(1, \count($result));
self::assertIsArray($result[0]);
self::assertApiResponseTypeStructure('CustomerCollection', $result[0]);
}
@@ -372,7 +375,9 @@ class CustomerControllerTest extends APIControllerBaseTest
public function testMetaAction(): void
{
$client = $this->getClientForAuthenticatedUser(User::ROLE_ADMIN);
self::getContainer()->get('event_dispatcher')->addSubscriber(new CustomerTestMetaFieldSubscriberMock());
/** @var EventDispatcher $dispatcher */
$dispatcher = static::getContainer()->get('event_dispatcher');
$dispatcher->addSubscriber(new CustomerTestMetaFieldSubscriberMock());
$data = [
'name' => 'metatestmock',

View File

@@ -51,6 +51,7 @@ class InvoiceControllerTest extends APIControllerBaseTest
$this->assertIsArray($result);
$this->assertNotEmpty($result);
$this->assertEquals(10, \count($result));
self::assertIsArray($result[0]);
self::assertApiResponseTypeStructure('InvoiceCollection', $result[0]);
}
@@ -72,6 +73,7 @@ class InvoiceControllerTest extends APIControllerBaseTest
$this->assertIsArray($result);
$this->assertNotEmpty($result);
$this->assertEquals(7, \count($result));
self::assertIsArray($result[0]);
self::assertApiResponseTypeStructure('InvoiceCollection', $result[0]);
}
@@ -91,6 +93,7 @@ class InvoiceControllerTest extends APIControllerBaseTest
$this->assertNotEmpty($result);
$this->assertEquals(4, \count($result));
$this->assertPagination($client->getResponse(), 2, 4, 5, 20);
self::assertIsArray($result[0]);
self::assertApiResponseTypeStructure('InvoiceCollection', $result[0]);
}

View File

@@ -21,6 +21,7 @@ use App\Repository\ProjectRateRepository;
use App\Repository\ProjectRepository;
use App\Repository\Query\VisibilityInterface;
use App\Tests\Mocks\ProjectTestMetaFieldSubscriberMock;
use Symfony\Component\EventDispatcher\EventDispatcher;
use Symfony\Component\HttpKernel\HttpKernelBrowser;
/**
@@ -105,6 +106,7 @@ class ProjectControllerTest extends APIControllerBaseTest
$this->assertIsArray($result);
$this->assertNotEmpty($result);
$this->assertEquals(1, \count($result));
self::assertIsArray($result[0]);
self::assertApiResponseTypeStructure('ProjectCollection', $result[0]);
}
@@ -219,6 +221,7 @@ class ProjectControllerTest extends APIControllerBaseTest
for ($i = 0; $i < \count($expected); $i++) {
$project = $result[$i];
self::assertIsArray($project);
self::assertApiResponseTypeStructure('ProjectCollection', $project);
if ($customerId !== null) {
$this->assertEquals($customerId, $project['customer']);
@@ -579,7 +582,9 @@ class ProjectControllerTest extends APIControllerBaseTest
public function testMetaAction(): void
{
$client = $this->getClientForAuthenticatedUser(User::ROLE_ADMIN);
self::getContainer()->get('event_dispatcher')->addSubscriber(new ProjectTestMetaFieldSubscriberMock());
/** @var EventDispatcher $dispatcher */
$dispatcher = static::getContainer()->get('event_dispatcher');
$dispatcher->addSubscriber(new ProjectTestMetaFieldSubscriberMock());
$data = [
'name' => 'metatestmock',

View File

@@ -150,7 +150,13 @@ trait RateControllerTestTrait
$this->assertEquals(\count($expectedRates), \count($result));
foreach ($result as $rate) {
$this->assertRateStructure($rate, ($rate['user'] === null ? null : $rate['user']['id']));
$this->assertIsArray($rate);
if ($rate['user'] === null) {
$this->assertRateStructure($rate);
} else {
$this->assertIsArray($rate['user']);
$this->assertRateStructure($rate, $rate['user']['id']);
}
}
}

View File

@@ -66,6 +66,7 @@ class TagControllerTest extends APIControllerBaseTest
$this->assertIsArray($result);
$this->assertNotEmpty($result);
$this->assertEquals(3, \count($result));
self::assertIsArray($result[0]);
self::assertApiResponseTypeStructure('TagEntity', $result[0]);
}

View File

@@ -65,6 +65,7 @@ class TeamControllerTest extends APIControllerBaseTest
$this->assertIsArray($result);
$this->assertNotEmpty($result);
self::assertEquals(2, \count($result));
self::assertIsArray($result[0]);
self::assertApiResponseTypeStructure('TeamCollection', $result[0]);
}
@@ -152,7 +153,9 @@ class TeamControllerTest extends APIControllerBaseTest
$this->request($client, '/api/teams', 'POST', [], json_encode($data));
$this->assertTrue($client->getResponse()->isSuccessful());
$result = json_decode($client->getResponse()->getContent(), true);
$this->assertIsArray($result);
$updateId = $result['id'];
$this->assertIsNumeric($updateId);
$data = [
'name' => 'foo',
@@ -171,14 +174,17 @@ class TeamControllerTest extends APIControllerBaseTest
self::assertApiResponseTypeStructure('TeamEntity', $result);
$this->assertNotEmpty($result['id']);
self::assertCount(3, $result['members']);
$this->assertIsNumeric($updateId);
$this->request($client, '/api/teams/' . $updateId);
$result = json_decode($client->getResponse()->getContent(), true);
$this->assertIsArray($result);
self::assertApiResponseTypeStructure('TeamEntity', $result);
$this->assertIsArray($result['members']);
self::assertCount(3, $result['members']);
$this->assertIsArray($result['members'][1]);
self::assertFalse($result['members'][1]['teamlead']);
self::assertEquals(1, $result['members'][1]['user']['id']);
self::assertEquals('clara_customer', $result['members'][1]['user']['username']);
@@ -187,7 +193,7 @@ class TeamControllerTest extends APIControllerBaseTest
self::assertEquals(4, $result['members'][2]['user']['id']);
self::assertEquals('tony_teamlead', $result['members'][2]['user']['username']);
self::assertTrue(true, $result['members'][0]['teamlead']);
self::assertTrue($result['members'][0]['teamlead']);
self::assertEquals(2, $result['members'][0]['user']['id']);
self::assertEquals('john_user', $result['members'][0]['user']['username']);
}
@@ -204,6 +210,8 @@ class TeamControllerTest extends APIControllerBaseTest
$this->request($client, '/api/teams', 'POST', [], json_encode($data));
$this->assertTrue($client->getResponse()->isSuccessful());
$result = json_decode($client->getResponse()->getContent(), true);
$this->assertIsArray($result);
$this->assertIsNumeric($result['id']);
$data = [
'name' => '1',
@@ -230,6 +238,7 @@ class TeamControllerTest extends APIControllerBaseTest
self::assertApiResponseTypeStructure('TeamEntity', $result);
$this->assertNotEmpty($result['id']);
$id = $result['id'];
$this->assertIsNumeric($id);
$this->request($client, '/api/teams/' . $id, 'DELETE');
$this->assertTrue($client->getResponse()->isSuccessful());
@@ -249,7 +258,10 @@ class TeamControllerTest extends APIControllerBaseTest
$this->request($client, '/api/teams', 'POST', [], json_encode($data));
$this->assertTrue($client->getResponse()->isSuccessful());
$result = json_decode($client->getResponse()->getContent(), true);
$this->assertIsArray($result);
$this->assertIsArray($result['members']);
self::assertCount(1, $result['members']);
$this->assertIsNumeric($result['id']);
$this->request($client, '/api/teams/' . $result['id'] . '/members/2', 'POST');
$this->assertTrue($client->getResponse()->isSuccessful());
@@ -257,6 +269,7 @@ class TeamControllerTest extends APIControllerBaseTest
$result = json_decode($client->getResponse()->getContent(), true);
$this->assertIsArray($result);
self::assertApiResponseTypeStructure('TeamEntity', $result);
$this->assertIsArray($result['members']);
self::assertCount(2, $result['members']);
}
@@ -273,6 +286,8 @@ class TeamControllerTest extends APIControllerBaseTest
$this->request($client, '/api/teams', 'POST', [], json_encode($data));
$this->assertTrue($client->getResponse()->isSuccessful());
$result = json_decode($client->getResponse()->getContent(), true);
$this->assertIsArray($result);
$this->assertIsNumeric($result['id']);
// team not found
$this->assertEntityNotFoundForPost($client, '/api/teams/999/members/999');
@@ -303,6 +318,9 @@ class TeamControllerTest extends APIControllerBaseTest
$this->request($client, '/api/teams', 'POST', [], json_encode($data));
$this->assertTrue($client->getResponse()->isSuccessful());
$result = json_decode($client->getResponse()->getContent(), true);
$this->assertIsArray($result);
$this->assertIsNumeric($result['id']);
$this->assertIsArray($result['members']);
self::assertCount(4, $result['members']);
$this->request($client, '/api/teams/' . $result['id'] . '/members/2', 'DELETE');
@@ -311,6 +329,7 @@ class TeamControllerTest extends APIControllerBaseTest
$result = json_decode($client->getResponse()->getContent(), true);
$this->assertIsArray($result);
self::assertApiResponseTypeStructure('TeamEntity', $result);
$this->assertIsArray($result['members']);
self::assertCount(3, $result['members']);
}
@@ -329,6 +348,8 @@ class TeamControllerTest extends APIControllerBaseTest
$this->request($client, '/api/teams', 'POST', [], json_encode($data));
$this->assertTrue($client->getResponse()->isSuccessful());
$result = json_decode($client->getResponse()->getContent(), true);
$this->assertIsArray($result);
$this->assertIsNumeric($result['id']);
// team not found
$this->assertNotFoundForDelete($client, '/api/teams/999/members/999');
@@ -359,6 +380,8 @@ class TeamControllerTest extends APIControllerBaseTest
$this->request($client, '/api/teams', 'POST', [], json_encode($data));
$this->assertTrue($client->getResponse()->isSuccessful());
$result = json_decode($client->getResponse()->getContent(), true);
$this->assertIsArray($result);
$this->assertIsNumeric($result['id']);
self::assertCount(0, $result['customers']);
$this->request($client, '/api/teams/' . $result['id'] . '/customers/1', 'POST');
@@ -367,7 +390,9 @@ class TeamControllerTest extends APIControllerBaseTest
$result = json_decode($client->getResponse()->getContent(), true);
$this->assertIsArray($result);
self::assertApiResponseTypeStructure('TeamEntity', $result);
$this->assertIsArray($result['customers']);
self::assertCount(1, $result['customers']);
$this->assertIsArray($result['customers'][0]);
self::assertEquals(1, $result['customers'][0]['id']);
}
@@ -384,6 +409,8 @@ class TeamControllerTest extends APIControllerBaseTest
$this->request($client, '/api/teams', 'POST', [], json_encode($data));
$this->assertTrue($client->getResponse()->isSuccessful());
$result = json_decode($client->getResponse()->getContent(), true);
$this->assertIsArray($result);
$this->assertIsNumeric($result['id']);
// team not found
$this->assertEntityNotFoundForPost($client, '/api/teams/999/customers/999');
@@ -395,6 +422,8 @@ class TeamControllerTest extends APIControllerBaseTest
$this->request($client, '/api/teams/' . $result['id'] . '/customers/1', 'POST');
$this->assertTrue($client->getResponse()->isSuccessful());
$result = json_decode($client->getResponse()->getContent(), true);
$this->assertIsArray($result);
$this->assertIsNumeric($result['id']);
self::assertCount(1, $result['customers']);
// cannot add existing customer
@@ -416,12 +445,16 @@ class TeamControllerTest extends APIControllerBaseTest
$this->request($client, '/api/teams', 'POST', [], json_encode($data));
$this->assertTrue($client->getResponse()->isSuccessful());
$result = json_decode($client->getResponse()->getContent(), true);
$this->assertIsArray($result);
$this->assertIsNumeric($result['id']);
self::assertCount(0, $result['customers']);
// add customer
$this->request($client, '/api/teams/' . $result['id'] . '/customers/1', 'POST');
$this->assertTrue($client->getResponse()->isSuccessful());
$result = json_decode($client->getResponse()->getContent(), true);
$this->assertIsArray($result);
$this->assertIsNumeric($result['id']);
self::assertCount(1, $result['customers']);
$this->request($client, '/api/teams/' . $result['id'] . '/customers/1', 'DELETE');
@@ -429,7 +462,10 @@ class TeamControllerTest extends APIControllerBaseTest
$result = json_decode($client->getResponse()->getContent(), true);
$this->assertIsArray($result);
$this->assertIsNumeric($result['id']);
$this->assertIsArray($result);
self::assertApiResponseTypeStructure('TeamEntity', $result);
$this->assertIsArray($result['customers']);
self::assertCount(0, $result['customers']);
/** @var EntityManager $em */
@@ -454,6 +490,8 @@ class TeamControllerTest extends APIControllerBaseTest
$this->request($client, '/api/teams', 'POST', [], json_encode($data));
$this->assertTrue($client->getResponse()->isSuccessful());
$result = json_decode($client->getResponse()->getContent(), true);
$this->assertIsArray($result);
$this->assertIsNumeric($result['id']);
// team not found
$this->assertNotFoundForDelete($client, '/api/teams/999/customers/999');
@@ -477,6 +515,8 @@ class TeamControllerTest extends APIControllerBaseTest
$this->request($client, '/api/teams', 'POST', [], json_encode($data));
$this->assertTrue($client->getResponse()->isSuccessful());
$result = json_decode($client->getResponse()->getContent(), true);
$this->assertIsArray($result);
$this->assertIsNumeric($result['id']);
self::assertCount(0, $result['projects']);
$this->request($client, '/api/teams/' . $result['id'] . '/projects/1', 'POST');
$this->assertTrue($client->getResponse()->isSuccessful());
@@ -484,7 +524,9 @@ class TeamControllerTest extends APIControllerBaseTest
$result = json_decode($client->getResponse()->getContent(), true);
$this->assertIsArray($result);
self::assertApiResponseTypeStructure('TeamEntity', $result);
$this->assertIsArray($result['projects']);
self::assertCount(1, $result['projects']);
$this->assertIsArray($result['projects'][0]);
self::assertEquals(1, $result['projects'][0]['id']);
}
@@ -501,6 +543,8 @@ class TeamControllerTest extends APIControllerBaseTest
$this->request($client, '/api/teams', 'POST', [], json_encode($data));
$this->assertTrue($client->getResponse()->isSuccessful());
$result = json_decode($client->getResponse()->getContent(), true);
$this->assertIsArray($result);
$this->assertIsNumeric($result['id']);
// team not found
$this->assertEntityNotFoundForPost($client, '/api/teams/999/projects/999');
@@ -514,6 +558,8 @@ class TeamControllerTest extends APIControllerBaseTest
$this->request($client, '/api/teams/' . $result['id'] . '/projects/1', 'POST');
$this->assertTrue($client->getResponse()->isSuccessful());
$result = json_decode($client->getResponse()->getContent(), true);
$this->assertIsArray($result);
$this->assertIsNumeric($result['id']);
self::assertCount(1, $result['projects']);
// cannot add existing project
@@ -535,12 +581,16 @@ class TeamControllerTest extends APIControllerBaseTest
$this->request($client, '/api/teams', 'POST', [], json_encode($data));
$this->assertTrue($client->getResponse()->isSuccessful());
$result = json_decode($client->getResponse()->getContent(), true);
$this->assertIsArray($result);
$this->assertIsNumeric($result['id']);
self::assertCount(0, $result['projects']);
// add project
$this->request($client, '/api/teams/' . $result['id'] . '/projects/1', 'POST');
$this->assertTrue($client->getResponse()->isSuccessful());
$result = json_decode($client->getResponse()->getContent(), true);
$this->assertIsArray($result);
$this->assertIsArray($result['projects']);
self::assertCount(1, $result['projects']);
$this->request($client, '/api/teams/' . $result['id'] . '/projects/1', 'DELETE');
@@ -549,6 +599,7 @@ class TeamControllerTest extends APIControllerBaseTest
$result = json_decode($client->getResponse()->getContent(), true);
$this->assertIsArray($result);
self::assertApiResponseTypeStructure('TeamEntity', $result);
$this->assertIsArray($result['projects']);
self::assertCount(0, $result['projects']);
/** @var EntityManager $em */
@@ -573,6 +624,8 @@ class TeamControllerTest extends APIControllerBaseTest
$this->request($client, '/api/teams', 'POST', [], json_encode($data));
$this->assertTrue($client->getResponse()->isSuccessful());
$result = json_decode($client->getResponse()->getContent(), true);
$this->assertIsArray($result);
$this->assertIsNumeric($result['id']);
// team not found
$this->assertNotFoundForDelete($client, '/api/teams/999/projects/999');
@@ -596,6 +649,8 @@ class TeamControllerTest extends APIControllerBaseTest
$this->request($client, '/api/teams', 'POST', [], json_encode($data));
$this->assertTrue($client->getResponse()->isSuccessful());
$result = json_decode($client->getResponse()->getContent(), true);
$this->assertIsArray($result);
$this->assertIsNumeric($result['id']);
self::assertCount(0, $result['activities']);
$this->request($client, '/api/teams/' . $result['id'] . '/activities/1', 'POST');
$this->assertTrue($client->getResponse()->isSuccessful());
@@ -603,7 +658,9 @@ class TeamControllerTest extends APIControllerBaseTest
$result = json_decode($client->getResponse()->getContent(), true);
$this->assertIsArray($result);
self::assertApiResponseTypeStructure('TeamEntity', $result);
$this->assertIsArray($result['activities']);
self::assertCount(1, $result['activities']);
$this->assertIsArray($result['activities'][0]);
self::assertEquals(1, $result['activities'][0]['id']);
}
@@ -620,6 +677,8 @@ class TeamControllerTest extends APIControllerBaseTest
$this->request($client, '/api/teams', 'POST', [], json_encode($data));
$this->assertTrue($client->getResponse()->isSuccessful());
$result = json_decode($client->getResponse()->getContent(), true);
$this->assertIsArray($result);
$this->assertIsNumeric($result['id']);
// team not found
$this->assertEntityNotFoundForPost($client, '/api/teams/999/activities/999');
@@ -631,6 +690,8 @@ class TeamControllerTest extends APIControllerBaseTest
$this->request($client, '/api/teams/' . $result['id'] . '/activities/1', 'POST');
$this->assertTrue($client->getResponse()->isSuccessful());
$result = json_decode($client->getResponse()->getContent(), true);
$this->assertIsArray($result);
$this->assertIsNumeric($result['id']);
self::assertCount(1, $result['activities']);
// cannot add existing activity
@@ -652,12 +713,16 @@ class TeamControllerTest extends APIControllerBaseTest
$this->request($client, '/api/teams', 'POST', [], json_encode($data));
$this->assertTrue($client->getResponse()->isSuccessful());
$result = json_decode($client->getResponse()->getContent(), true);
$this->assertIsArray($result);
$this->assertIsArray($result['activities']);
self::assertCount(0, $result['activities']);
// add activity
$this->request($client, '/api/teams/' . $result['id'] . '/activities/1', 'POST');
$this->assertTrue($client->getResponse()->isSuccessful());
$result = json_decode($client->getResponse()->getContent(), true);
$this->assertIsArray($result);
$this->assertIsNumeric($result['id']);
self::assertCount(1, $result['activities']);
$this->request($client, '/api/teams/' . $result['id'] . '/activities/1', 'DELETE');
@@ -666,6 +731,7 @@ class TeamControllerTest extends APIControllerBaseTest
$result = json_decode($client->getResponse()->getContent(), true);
$this->assertIsArray($result);
self::assertApiResponseTypeStructure('TeamEntity', $result);
$this->assertIsArray($result['activities']);
self::assertCount(0, $result['activities']);
}
@@ -684,6 +750,8 @@ class TeamControllerTest extends APIControllerBaseTest
$this->request($client, '/api/teams', 'POST', [], json_encode($data));
$this->assertTrue($client->getResponse()->isSuccessful());
$result = json_decode($client->getResponse()->getContent(), true);
$this->assertIsArray($result);
$this->assertIsNumeric($result['id']);
// team not found
$this->assertNotFoundForDelete($client, '/api/teams/999/activities/9999');

View File

@@ -20,6 +20,7 @@ use App\Entity\User;
use App\Tests\DataFixtures\TimesheetFixtures;
use App\Tests\Mocks\TimesheetTestMetaFieldSubscriberMock;
use App\Timesheet\DateTimeFactory;
use Symfony\Component\EventDispatcher\EventDispatcher;
use Symfony\Component\HttpFoundation\Response;
/**
@@ -63,6 +64,7 @@ class TimesheetControllerTest extends APIControllerBaseTest
self::assertIsArray($result);
self::assertNotEmpty($result);
self::assertEquals(10, \count($result));
$this->assertIsArray($result[0]);
self::assertApiResponseTypeStructure('TimesheetCollection', $result[0]);
}
@@ -79,6 +81,7 @@ class TimesheetControllerTest extends APIControllerBaseTest
self::assertIsArray($result);
self::assertNotEmpty($result);
self::assertEquals(10, \count($result));
$this->assertIsArray($result[0]);
self::assertApiResponseTypeStructure('TimesheetCollectionFull', $result[0]);
}
@@ -103,6 +106,7 @@ class TimesheetControllerTest extends APIControllerBaseTest
self::assertIsArray($result);
self::assertNotEmpty($result);
self::assertEquals(10, \count($result));
$this->assertIsArray($result[0]);
self::assertApiResponseTypeStructure('TimesheetCollection', $result[0]);
$query = ['users' => [2]];
@@ -115,6 +119,7 @@ class TimesheetControllerTest extends APIControllerBaseTest
self::assertIsArray($result);
self::assertNotEmpty($result);
self::assertEquals(10, \count($result));
$this->assertIsArray($result[0]);
self::assertApiResponseTypeStructure('TimesheetCollection', $result[0]);
}
@@ -162,6 +167,7 @@ class TimesheetControllerTest extends APIControllerBaseTest
self::assertIsArray($result);
self::assertNotEmpty($result);
self::assertEquals(10, \count($result));
$this->assertIsArray($result[0]);
self::assertApiResponseTypeStructure('TimesheetCollection', $result[0]);
}
@@ -186,6 +192,7 @@ class TimesheetControllerTest extends APIControllerBaseTest
self::assertIsArray($result);
self::assertNotEmpty($result);
self::assertEquals(17, \count($result));
$this->assertIsArray($result[0]);
self::assertApiResponseTypeStructure('TimesheetCollection', $result[0]);
}
@@ -237,6 +244,7 @@ class TimesheetControllerTest extends APIControllerBaseTest
self::assertIsArray($result);
self::assertNotEmpty($result);
self::assertEquals(4, \count($result));
$this->assertIsArray($result[0]);
self::assertApiResponseTypeStructure('TimesheetCollection', $result[0]);
}
@@ -289,6 +297,7 @@ class TimesheetControllerTest extends APIControllerBaseTest
self::assertIsArray($result);
self::assertNotEmpty($result);
self::assertEquals(5, \count($result));
$this->assertIsArray($result[0]);
self::assertApiResponseTypeStructure('TimesheetCollection', $result[0]);
}
@@ -324,6 +333,7 @@ class TimesheetControllerTest extends APIControllerBaseTest
self::assertIsArray($result);
self::assertNotEmpty($result);
self::assertEquals(7, \count($result));
$this->assertIsArray($result[0]);
self::assertApiResponseTypeStructure('TimesheetCollection', $result[0]);
$query = [
@@ -342,6 +352,7 @@ class TimesheetControllerTest extends APIControllerBaseTest
self::assertIsArray($result);
self::assertNotEmpty($result);
self::assertEquals(10, \count($result));
$this->assertIsArray($result[0]);
self::assertApiResponseTypeStructure('TimesheetCollection', $result[0]);
$query = [
@@ -358,6 +369,7 @@ class TimesheetControllerTest extends APIControllerBaseTest
self::assertIsArray($result);
self::assertNotEmpty($result);
self::assertEquals(17, \count($result));
$this->assertIsArray($result[0]);
self::assertApiResponseTypeStructure('TimesheetCollection', $result[0]);
}
@@ -896,6 +908,7 @@ class TimesheetControllerTest extends APIControllerBaseTest
self::assertIsArray($result);
self::assertApiResponseTypeStructure('TimesheetEntity', $result);
self::assertNotEmpty($result['id']);
self::assertIsNumeric($result['id']);
$id = $result['id'];
$this->request($client, '/api/timesheets/' . $id, 'DELETE');
@@ -999,6 +1012,7 @@ class TimesheetControllerTest extends APIControllerBaseTest
self::assertIsArray($result);
self::assertNotEmpty($result);
self::assertEquals(1, \count($result));
$this->assertIsArray($result[0]);
self::assertApiResponseTypeStructure('TimesheetCollectionFull', $result[0]);
}
@@ -1024,6 +1038,7 @@ class TimesheetControllerTest extends APIControllerBaseTest
self::assertEquals(3, \count($result));
foreach ($result as $timesheet) {
$this->assertIsArray($timesheet);
self::assertApiResponseTypeStructure('TimesheetCollectionFull', $timesheet);
}
}
@@ -1142,6 +1157,7 @@ class TimesheetControllerTest extends APIControllerBaseTest
self::assertIsArray($result);
self::assertNotEmpty($result);
self::assertEquals(10, \count($result));
$this->assertIsArray($result[0]);
self::assertApiResponseTypeStructure('TimesheetCollection', $result[0]);
$query = ['tags' => ['Test', 'Admin']];
@@ -1154,6 +1170,7 @@ class TimesheetControllerTest extends APIControllerBaseTest
self::assertIsArray($result);
self::assertNotEmpty($result);
self::assertEquals(10, \count($result));
$this->assertIsArray($result[0]);
self::assertApiResponseTypeStructure('TimesheetCollection', $result[0]);
$query = ['tags' => ['Nothing-2-see', 'here']];
@@ -1166,6 +1183,7 @@ class TimesheetControllerTest extends APIControllerBaseTest
self::assertIsArray($result);
self::assertNotEmpty($result);
self::assertEquals(20, \count($result));
$this->assertIsArray($result[0]);
self::assertApiResponseTypeStructure('TimesheetCollection', $result[0]);
}
@@ -1190,6 +1208,7 @@ class TimesheetControllerTest extends APIControllerBaseTest
self::assertIsString($content);
$result = json_decode($content, true);
$this->assertIsArray($result);
self::assertApiResponseTypeStructure('TimesheetEntity', $result);
$this->assertEmpty($result['description']);
$this->assertEmpty($result['tags']);
@@ -1227,6 +1246,7 @@ class TimesheetControllerTest extends APIControllerBaseTest
self::assertIsString($content);
$result = json_decode($content, true);
$this->assertIsArray($result);
self::assertApiResponseTypeStructure('TimesheetEntity', $result);
$this->assertEmpty($result['description']);
$this->assertEmpty($result['tags']);
@@ -1272,6 +1292,7 @@ class TimesheetControllerTest extends APIControllerBaseTest
self::assertIsString($content);
$result = json_decode($content, true);
$this->assertIsArray($result);
self::assertApiResponseTypeStructure('TimesheetEntity', $result);
self::assertEquals('foo', $result['description']);
self::assertEquals([['name' => 'sdfsdf', 'value' => 'nnnnn'], ['name' => '1234567890', 'value' => '1234567890']], $result['metaFields']);
@@ -1342,8 +1363,9 @@ class TimesheetControllerTest extends APIControllerBaseTest
self::assertNotEmpty($result['id']);
$this->assertTrue($result['duration'] == 28800 || $result['duration'] == 28860); // 1 minute rounding might be applied
self::assertEquals(2016, $result['rate']);
$this->request($client, '/api/timesheets/' . $result['id'] . '/duplicate', 'PATCH');
$id = $result['id'];
self::assertIsNumeric($id);
$this->request($client, '/api/timesheets/' . $id . '/duplicate', 'PATCH');
$this->assertTrue($client->getResponse()->isSuccessful());
$content = $client->getResponse()->getContent();
@@ -1380,6 +1402,7 @@ class TimesheetControllerTest extends APIControllerBaseTest
self::assertIsString($content);
$result = json_decode($content, true);
$this->assertIsArray($result);
self::assertApiResponseTypeStructure('TimesheetEntity', $result);
$em->clear();
@@ -1456,7 +1479,9 @@ class TimesheetControllerTest extends APIControllerBaseTest
$client = $this->getClientForAuthenticatedUser(User::ROLE_USER);
$timesheets = $this->importFixtureForUser(User::ROLE_USER);
$id = $timesheets[0]->getId();
static::getContainer()->get('event_dispatcher')->addSubscriber(new TimesheetTestMetaFieldSubscriberMock());
/** @var EventDispatcher $dispatcher */
$dispatcher = static::getContainer()->get('event_dispatcher');
$dispatcher->addSubscriber(new TimesheetTestMetaFieldSubscriberMock());
$data = [
'name' => 'metatestmock',
@@ -1472,6 +1497,7 @@ class TimesheetControllerTest extends APIControllerBaseTest
self::assertIsString($content);
$result = json_decode($content, true);
$this->assertIsArray($result);
self::assertApiResponseTypeStructure('TimesheetEntity', $result);
self::assertEquals(['name' => 'metatestmock', 'value' => 'another,testing,bar'], $result['metaFields'][0]);

View File

@@ -53,6 +53,7 @@ class UserControllerTest extends APIControllerBaseTest
$this->assertNotEmpty($result);
$this->assertEquals(7, \count($result));
foreach ($result as $user) {
$this->assertIsArray($user);
self::assertApiResponseTypeStructure('UserCollection', $user);
}
}
@@ -70,6 +71,7 @@ class UserControllerTest extends APIControllerBaseTest
$this->assertNotEmpty($result);
$this->assertEquals(7, \count($result));
foreach ($result as $user) {
$this->assertIsArray($user);
self::assertApiResponseTypeStructure('UserEntity', $user);
}
}
@@ -86,6 +88,7 @@ class UserControllerTest extends APIControllerBaseTest
$this->assertNotEmpty($result);
$this->assertEquals(1, \count($result));
foreach ($result as $user) {
$this->assertIsArray($user);
self::assertApiResponseTypeStructure('UserCollection', $user);
}
}
@@ -102,6 +105,7 @@ class UserControllerTest extends APIControllerBaseTest
$this->assertNotEmpty($result);
$this->assertEquals(8, \count($result));
foreach ($result as $user) {
$this->assertIsArray($user);
self::assertApiResponseTypeStructure('UserCollection', $user);
}
}
@@ -283,7 +287,9 @@ class UserControllerTest extends APIControllerBaseTest
'ROLE_TEAMLEAD',
],
];
$this->request($client, '/api/users/' . $result['id'], 'PATCH', [], json_encode($data));
$id = $result['id'];
self::assertIsNumeric($id);
$this->request($client, '/api/users/' . $id, 'PATCH', [], json_encode($data));
$this->assertTrue($client->getResponse()->isSuccessful());
$content = $client->getResponse()->getContent();