0
0
Fork 0
mirror of https://github.com/kevinpapst/kimai2.git synced 2025-04-11 00:00:26 +00:00

Upgrade tests to PhpUnit 10 ()

This commit is contained in:
Kevin Papst 2024-12-22 01:25:30 +01:00 committed by GitHub
parent 9bd37fb695
commit c7f0508707
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
377 changed files with 3308 additions and 3409 deletions
composer.jsoncomposer.lockphpstan.neonphpunit.xml.dist
src/WorkingTime
symfony.lock
tests
API
Calendar
Command
Configuration
Controller
DependencyInjection
Doctrine
Entity

View file

@ -90,7 +90,7 @@
"phpstan/phpstan-phpunit": "^2.0",
"phpstan/phpstan-strict-rules": "^2.0",
"phpstan/phpstan-symfony": "^2.0",
"phpunit/phpunit": "9.5.*",
"phpunit/phpunit": "^10.0",
"symfony/browser-kit": "^6.0",
"symfony/css-selector": "^6.0",
"symfony/debug-bundle": "^6.0",

864
composer.lock generated

File diff suppressed because it is too large Load diff

View file

@ -3657,11 +3657,6 @@ parameters:
count: 2
path: src/Project/ProjectStatisticService.php
-
message: "#^Parameter \\#1 \\$year of method App\\\\Reporting\\\\ProjectDetails\\\\ProjectDetailsModel\\:\\:addYearActivity\\(\\) expects string, int\\|string given\\.$#"
count: 1
path: src/Project/ProjectStatisticService.php
-
message: "#^Parameter \\#2 \\$statistic of class App\\\\Event\\\\ProjectStatisticEvent constructor expects App\\\\Model\\\\ProjectStatistic, App\\\\Model\\\\ProjectStatistic\\|null given\\.$#"
count: 1

View file

@ -1,73 +1,67 @@
<?xml version="1.0" encoding="UTF-8"?>
<phpunit xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="https://schema.phpunit.de/9.3/phpunit.xsd"
xsi:noNamespaceSchemaLocation="https://schema.phpunit.de/10.5/phpunit.xsd"
backupGlobals="false"
colors="true"
bootstrap="tests/bootstrap.php">
<php>
<ini name="error_reporting" value="-1"/>
<ini name="max_execution_time" value="-1"/>
<ini name="date.timezone" value="UTC"/>
<ini name="intl.default_locale" value="en_US"/>
<ini name="date.timezone" value="Europe/Vienna"/>
<env name="KERNEL_CLASS" value="App\Kernel" force="true"/>
<env name="SYMFONY_DEPRECATIONS_HELPER" value="weak"/>
<env name="APP_ENV" value="test" force="true"/>
<env name="APP_DEBUG" value="0" force="true"/>
<env name="APP_SECRET" value="5a79a1c866efef9ca1800f971d689f3e" force="true"/>
<env name="DATABASE_URL" value="mysql://kimai2_test:kimai2_test@127.0.0.1:3306/kimai2_test?charset=utf8mb4&amp;serverVersion=10.5.8-MariaDB"/>
<env name="CORS_ALLOW_ORIGIN" value="^https?://localhost(:[0-9]+)?$"/>
<env name="MAILER_URL" value="null://null"/>
<env name="MAILER_FROM" value="kimai@example.com"/>
<!--
REINSTALL THE TEST DATABASE, eg. AFTER CHANGING STRUCTURE!
- change to "true"
- composer tests
- change back to "false"
CREATE DATABASE IF NOT EXISTS `kimai2_test`;
CREATE USER IF NOT EXISTS `kimai2_test`@127.0.0.1;
ALTER USER `kimai2_test`@127.0.0.1 IDENTIFIED BY "kimai2_test";
GRANT execute,select,insert,update,delete,create,alter,drop,index,references ON `kimai2_test`.* TO kimai2_test@127.0.0.1;
-->
<env name="BOOTSTRAP_RESET_DATABASE" value="true"/>
</php>
<testsuites>
<testsuite name="Kimai">
<directory>tests/</directory>
</testsuite>
</testsuites>
<coverage processUncoveredFiles="true">
<include>
<directory suffix=".php">src/</directory>
<directory suffix=".php">templates/</directory>
</include>
<exclude>
<directory suffix=".php">migrations/</directory>
<directory suffix=".php">assets/</directory>
<directory suffix=".php">bin/</directory>
<directory suffix=".php">config/</directory>
<directory suffix=".php">node_modules/</directory>
<directory suffix=".php">public/</directory>
<directory suffix=".php">tests/</directory>
<directory suffix=".php">translations/</directory>
<directory suffix=".php">var/</directory>
<directory suffix=".php">vendor/</directory>
</exclude>
</coverage>
bootstrap="tests/bootstrap.php"
cacheDirectory="var/cache/phpunit/">
<php>
<ini name="error_reporting" value="-1"/>
<ini name="max_execution_time" value="-1"/>
<ini name="date.timezone" value="UTC"/>
<ini name="intl.default_locale" value="en_US"/>
<ini name="date.timezone" value="Europe/Vienna"/>
<env name="KERNEL_CLASS" value="App\Kernel" force="true"/>
<env name="SYMFONY_DEPRECATIONS_HELPER" value="weak"/>
<env name="APP_ENV" value="test" force="true"/>
<env name="APP_DEBUG" value="0" force="true"/>
<env name="APP_SECRET" value="5a79a1c866efef9ca1800f971d689f3e" force="true"/>
<env name="DATABASE_URL" value="mysql://kimai2_test:kimai2_test@127.0.0.1:3306/kimai2_test?charset=utf8mb4&amp;serverVersion=10.5.8-MariaDB"/>
<env name="CORS_ALLOW_ORIGIN" value="^https?://localhost(:[0-9]+)?$"/>
<env name="MAILER_URL" value="null://null"/>
<env name="MAILER_FROM" value="kimai@example.com"/>
<!--
wrap tests inside database transactions, so tests can safely manipulate contents without
affecting other tests. @see https://github.com/dmaicher/doctrine-test-bundle
-->
<extensions>
<extension class="DAMA\DoctrineTestBundle\PHPUnit\PHPUnitExtension"/>
</extensions>
REINSTALL THE TEST DATABASE, eg. AFTER CHANGING STRUCTURE!
- change to "true"
- composer tests
- change back to "false"
CREATE DATABASE IF NOT EXISTS `kimai2_test`;
CREATE USER IF NOT EXISTS `kimai2_test`@127.0.0.1;
ALTER USER `kimai2_test`@127.0.0.1 IDENTIFIED BY "kimai2_test";
GRANT execute,select,insert,update,delete,create,alter,drop,index,references ON `kimai2_test`.* TO kimai2_test@127.0.0.1;
-->
<env name="BOOTSTRAP_RESET_DATABASE" value="true"/>
</php>
<testsuites>
<testsuite name="Kimai">
<directory>tests/</directory>
</testsuite>
</testsuites>
<coverage>
<include>
<directory suffix=".php">src/</directory>
<directory suffix=".php">templates/</directory>
</include>
<exclude>
<directory suffix=".php">migrations/</directory>
<directory suffix=".php">assets/</directory>
<directory suffix=".php">bin/</directory>
<directory suffix=".php">config/</directory>
<directory suffix=".php">node_modules/</directory>
<directory suffix=".php">public/</directory>
<directory suffix=".php">tests/</directory>
<directory suffix=".php">translations/</directory>
<directory suffix=".php">var/</directory>
<directory suffix=".php">vendor/</directory>
</exclude>
</coverage>
<extensions>
<bootstrap class="DAMA\DoctrineTestBundle\PHPUnit\PHPUnitExtension"/>
</extensions>
<listeners>
<listener class="Symfony\Bridge\PhpUnit\SymfonyTestsListener"/>
</listeners>
</phpunit>

View file

@ -242,6 +242,6 @@ final class WorkingTimeService
$durations[$row['day']] = (int) $row['duration'];
}
return $durations; // @phpstan-ignore-line
return $durations;
}
}

View file

@ -334,9 +334,6 @@
"sebastian/recursion-context": {
"version": "3.0.0"
},
"sebastian/resource-operations": {
"version": "1.0.0"
},
"sebastian/type": {
"version": "1.1.3"
},

View file

@ -11,7 +11,7 @@ namespace App\Tests\API;
use App\DataFixtures\UserFixtures;
use App\Entity\User;
use App\Tests\Controller\ControllerBaseTest;
use App\Tests\Controller\AbstractControllerBaseTestCase;
use PHPUnit\Framework\Constraint\IsType;
use Symfony\Component\DomCrawler\Crawler;
use Symfony\Component\HttpFoundation\Response;
@ -20,7 +20,7 @@ use Symfony\Component\HttpKernel\HttpKernelBrowser;
/**
* Adds some useful functions for writing API integration tests.
*/
abstract class APIControllerBaseTest extends ControllerBaseTest
abstract class APIControllerBaseTestCase extends AbstractControllerBaseTestCase
{
/**
* @return array<string, string>
@ -50,15 +50,15 @@ abstract class APIControllerBaseTest extends ControllerBaseTest
protected function assertPagination(Response $response, int $page, int $pageSize, int $totalPages, int $totalResults): void
{
$this->assertTrue($response->headers->has('X-Page'), 'Missing "X-Page" header');
$this->assertTrue($response->headers->has('X-Total-Count'), 'Missing "X-Total-Count" header');
$this->assertTrue($response->headers->has('X-Total-Pages'), 'Missing "X-Total-Pages" header');
$this->assertTrue($response->headers->has('X-Per-Page'), 'Missing "X-Per-Page" header');
self::assertTrue($response->headers->has('X-Page'), 'Missing "X-Page" header');
self::assertTrue($response->headers->has('X-Total-Count'), 'Missing "X-Total-Count" header');
self::assertTrue($response->headers->has('X-Total-Pages'), 'Missing "X-Total-Pages" header');
self::assertTrue($response->headers->has('X-Per-Page'), 'Missing "X-Per-Page" header');
$this->assertEquals($page, $response->headers->get('X-Page'));
$this->assertEquals($totalResults, $response->headers->get('X-Total-Count'));
$this->assertEquals($totalPages, $response->headers->get('X-Total-Pages'));
$this->assertEquals($pageSize, $response->headers->get('X-Per-Page'));
self::assertEquals($page, $response->headers->get('X-Page'));
self::assertEquals($totalResults, $response->headers->get('X-Total-Count'));
self::assertEquals($totalPages, $response->headers->get('X-Total-Pages'));
self::assertEquals($pageSize, $response->headers->get('X-Per-Page'));
}
protected function assertRequestIsSecured(HttpKernelBrowser $client, string $url, string $method = 'GET'): void
@ -242,7 +242,7 @@ abstract class APIControllerBaseTest extends ControllerBaseTest
if (\count($expectedFields) > 0) {
foreach ($expectedFields as $expectedField) {
$this->assertArrayHasKey($expectedField, $data, 'Expected field is missing: ' . $expectedField);
self::assertArrayHasKey($expectedField, $data, 'Expected field is missing: ' . $expectedField);
}
}

View file

@ -18,7 +18,7 @@ use App\Tests\DataFixtures\TimesheetFixtures;
/**
* @group integration
*/
class ActionsControllerTest extends APIControllerBaseTest
class ActionsControllerTest extends APIControllerBaseTestCase
{
public function testIsSecure(): void
{
@ -58,7 +58,7 @@ class ActionsControllerTest extends APIControllerBaseTest
$this->assertAccessIsGranted($client, \sprintf('/api/actions/timesheet/%s/%s/en', $items[0]->getId(), $view));
$result = json_decode($client->getResponse()->getContent(), true);
$this->assertIsArray($result);
self::assertIsArray($result);
foreach ($result as $item) {
self::assertIsArray($item);
self::assertApiResponseTypeStructure('PageActionItem', $item);
@ -110,7 +110,7 @@ class ActionsControllerTest extends APIControllerBaseTest
$this->assertAccessIsGranted($client, \sprintf('/api/actions/activity/%s/%s/en', $activities[0]->getId(), $view));
$result = json_decode($client->getResponse()->getContent(), true);
$this->assertIsArray($result);
self::assertIsArray($result);
foreach ($result as $item) {
self::assertIsArray($item);
self::assertApiResponseTypeStructure('PageActionItem', $item);
@ -161,7 +161,7 @@ class ActionsControllerTest extends APIControllerBaseTest
$this->assertAccessIsGranted($client, \sprintf('/api/actions/project/%s/%s/en', $projects[0]->getId(), $view));
$result = json_decode($client->getResponse()->getContent(), true);
$this->assertIsArray($result);
self::assertIsArray($result);
foreach ($result as $item) {
self::assertIsArray($item);
self::assertApiResponseTypeStructure('PageActionItem', $item);
@ -208,7 +208,7 @@ class ActionsControllerTest extends APIControllerBaseTest
$this->assertAccessIsGranted($client, \sprintf('/api/actions/customer/%s/%s/en', $customers[0]->getId(), $view));
$result = json_decode($client->getResponse()->getContent(), true);
$this->assertIsArray($result);
self::assertIsArray($result);
foreach ($result as $item) {
self::assertIsArray($item);
self::assertApiResponseTypeStructure('PageActionItem', $item);

View file

@ -28,7 +28,7 @@ use Symfony\Component\HttpFoundation\Response;
/**
* @group integration
*/
class ActivityControllerTest extends APIControllerBaseTest
class ActivityControllerTest extends APIControllerBaseTestCase
{
use RateControllerTestTrait;
@ -173,19 +173,19 @@ class ActivityControllerTest extends APIControllerBaseTest
$this->assertAccessIsGranted($client, $url, 'GET', $parameters);
$content = $client->getResponse()->getContent();
$this->assertIsString($content);
self::assertIsString($content);
$result = json_decode($content, true);
$this->assertIsArray($result);
$this->assertNotEmpty($result);
$this->assertEquals(\count($expected), \count($result));
self::assertIsArray($result);
self::assertNotEmpty($result);
self::assertEquals(\count($expected), \count($result));
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']);
self::assertEquals($projectId, $activity['project']);
}
}
}
@ -193,7 +193,7 @@ class ActivityControllerTest extends APIControllerBaseTest
/**
* @return \Generator<array<mixed>>
*/
public function getCollectionTestData(): iterable
public static function getCollectionTestData(): iterable
{
yield ['/api/activities', null, [], [[false], [true, 2], [true, 2], [null], [true, 1]]];
//yield ['/api/activities', [], [[false], [false], [true, 2], [true, 1], [true, 2]]];
@ -217,17 +217,17 @@ class ActivityControllerTest extends APIControllerBaseTest
$this->assertAccessIsGranted($client, '/api/activities', 'GET', $query);
$content = $client->getResponse()->getContent();
$this->assertIsString($content);
self::assertIsString($content);
$result = json_decode($content, true);
$this->assertIsArray($result);
$this->assertNotEmpty($result);
$this->assertEquals(5, \count($result));
self::assertIsArray($result);
self::assertNotEmpty($result);
self::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']);
$this->assertEquals($imports[1]->getId(), $result[2]['project']);
self::assertEquals($imports[0]->getId(), $result[4]['project']);
self::assertEquals($imports[1]->getId(), $result[3]['project']);
self::assertEquals($imports[1]->getId(), $result[2]['project']);
}
public function testGetEntityIsSecure(): void
@ -241,10 +241,10 @@ class ActivityControllerTest extends APIControllerBaseTest
$this->assertAccessIsGranted($client, '/api/activities/1');
$content = $client->getResponse()->getContent();
$this->assertIsString($content);
self::assertIsString($content);
$result = json_decode($content, true);
$this->assertIsArray($result);
self::assertIsArray($result);
self::assertApiResponseTypeStructure('ActivityEntity', $result);
}
@ -264,15 +264,15 @@ class ActivityControllerTest extends APIControllerBaseTest
'timeBudget' => '7200',
];
$this->request($client, '/api/activities', 'POST', [], json_encode($data));
$this->assertTrue($client->getResponse()->isSuccessful());
self::assertTrue($client->getResponse()->isSuccessful());
$content = $client->getResponse()->getContent();
$this->assertIsString($content);
self::assertIsString($content);
$result = json_decode($content, true);
$this->assertIsArray($result);
self::assertIsArray($result);
self::assertApiResponseTypeStructure('ActivityEntity', $result);
$this->assertNotEmpty($result['id']);
self::assertNotEmpty($result['id']);
}
public function testPostActionWithLeastFields(): void
@ -282,15 +282,15 @@ class ActivityControllerTest extends APIControllerBaseTest
'name' => 'foo',
];
$this->request($client, '/api/activities', 'POST', [], json_encode($data));
$this->assertTrue($client->getResponse()->isSuccessful());
self::assertTrue($client->getResponse()->isSuccessful());
$content = $client->getResponse()->getContent();
$this->assertIsString($content);
self::assertIsString($content);
$result = json_decode($content, true);
$this->assertIsArray($result);
self::assertIsArray($result);
self::assertApiResponseTypeStructure('ActivityEntity', $result);
$this->assertNotEmpty($result['id']);
self::assertNotEmpty($result['id']);
}
public function testPostActionWithInvalidUser(): void
@ -331,15 +331,15 @@ class ActivityControllerTest extends APIControllerBaseTest
'timeBudget' => '7200',
];
$this->request($client, '/api/activities/1', 'PATCH', [], json_encode($data));
$this->assertTrue($client->getResponse()->isSuccessful());
self::assertTrue($client->getResponse()->isSuccessful());
$content = $client->getResponse()->getContent();
$this->assertIsString($content);
self::assertIsString($content);
$result = json_decode($content, true);
$this->assertIsArray($result);
self::assertIsArray($result);
self::assertApiResponseTypeStructure('ActivityEntity', $result);
$this->assertNotEmpty($result['id']);
self::assertNotEmpty($result['id']);
}
public function testPatchActionWithNonGlobalActivity(): void
@ -356,16 +356,16 @@ class ActivityControllerTest extends APIControllerBaseTest
'timeBudget' => '7200',
];
$this->request($client, '/api/activities/' . $imports[2]->getId(), 'PATCH', [], json_encode($data));
$this->assertTrue($client->getResponse()->isSuccessful());
self::assertTrue($client->getResponse()->isSuccessful());
$content = $client->getResponse()->getContent();
$this->assertIsString($content);
self::assertIsString($content);
$result = json_decode($content, true);
$this->assertIsArray($result);
self::assertIsArray($result);
self::assertApiResponseTypeStructure('ActivityEntity', $result);
$this->assertNotEmpty($result['id']);
$this->assertEquals($imports[1]->getId(), $result['project']);
self::assertNotEmpty($result['id']);
self::assertEquals($imports[1]->getId(), $result['project']);
}
public function testPatchActionWithInvalidUser(): void
@ -398,7 +398,7 @@ class ActivityControllerTest extends APIControllerBaseTest
$this->request($client, '/api/activities/1', 'PATCH', [], json_encode($data));
$response = $client->getResponse();
$this->assertEquals(400, $response->getStatusCode());
self::assertEquals(400, $response->getStatusCode());
$this->assertApiCallValidationError($response, ['name']);
}
@ -444,12 +444,12 @@ class ActivityControllerTest extends APIControllerBaseTest
];
$this->request($client, '/api/activities/1/meta', 'PATCH', [], json_encode($data));
$this->assertTrue($client->getResponse()->isSuccessful());
self::assertTrue($client->getResponse()->isSuccessful());
$em = $this->getEntityManager();
/** @var Activity $activity */
$activity = $em->getRepository(Activity::class)->find(1);
$this->assertEquals('another,testing,bar', $activity->getMetaField('metatestmock')->getValue());
self::assertEquals('another,testing,bar', $activity->getMetaField('metatestmock')->getValue());
}
// ------------------------------- [DELETE] -------------------------------
@ -499,9 +499,9 @@ class ActivityControllerTest extends APIControllerBaseTest
$id = $result['id'];
$this->request($client, '/api/activities/' . $id, Request::METHOD_DELETE);
$this->assertTrue($client->getResponse()->isSuccessful());
self::assertTrue($client->getResponse()->isSuccessful());
self::assertEquals(Response::HTTP_NO_CONTENT, $client->getResponse()->getStatusCode());
$this->assertEmpty($client->getResponse()->getContent());
self::assertEmpty($client->getResponse()->getContent());
$this->request($client, $getUrl);
$this->assertApiException($client->getResponse(), [

View file

@ -10,12 +10,12 @@
namespace App\Tests\API;
use App\Entity\User;
use App\Tests\Controller\ControllerBaseTest;
use App\Tests\Controller\AbstractControllerBaseTestCase;
/**
* @group integration
*/
class ApiDocControllerTest extends ControllerBaseTest
class ApiDocControllerTest extends AbstractControllerBaseTestCase
{
public function testIsSecure(): void
{
@ -26,7 +26,7 @@ class ApiDocControllerTest extends ControllerBaseTest
{
$client = $this->getClientForAuthenticatedUser(User::ROLE_USER);
$this->assertAccessIsGranted($client, '/api/doc');
$this->assertStringContainsString('<title>Kimai', $client->getResponse()->getContent());
self::assertStringContainsString('<title>Kimai', $client->getResponse()->getContent());
$result = $client->getCrawler()->filter('script#swagger-data');
$swaggerJson = json_decode($result->text(), true);
$tags = [];
@ -104,25 +104,25 @@ class ApiDocControllerTest extends ControllerBaseTest
'/api/users/api-token/{id}',
];
$this->assertArrayHasKey('openapi', $json);
$this->assertEquals('3.0.0', $json['openapi']);
$this->assertArrayHasKey('info', $json);
$this->assertStringStartsWith('Kimai', $json['info']['title']);
$this->assertEquals('1.0', $json['info']['version']);
self::assertArrayHasKey('openapi', $json);
self::assertEquals('3.0.0', $json['openapi']);
self::assertArrayHasKey('info', $json);
self::assertStringStartsWith('Kimai', $json['info']['title']);
self::assertEquals('1.0', $json['info']['version']);
$this->assertArrayHasKey('paths', $json);
$this->assertEquals($paths, array_keys($json['paths']));
self::assertArrayHasKey('paths', $json);
self::assertEquals($paths, array_keys($json['paths']));
$this->assertArrayHasKey('security', $json);
$this->assertEquals(['bearer' => []], $json['security'][0]);
self::assertArrayHasKey('security', $json);
self::assertEquals(['bearer' => []], $json['security'][0]);
$this->assertArrayHasKey('components', $json);
$this->assertArrayHasKey('schemas', $json['components']);
$this->assertArrayHasKey('securitySchemes', $json['components']);
self::assertArrayHasKey('components', $json);
self::assertArrayHasKey('schemas', $json['components']);
self::assertArrayHasKey('securitySchemes', $json['components']);
$result = json_decode($client->getResponse()->getContent(), true);
$this->assertIsArray($result);
$this->assertNotEmpty($result);
self::assertIsArray($result);
self::assertNotEmpty($result);
}
protected function createUrl(string $url): string

View file

@ -55,11 +55,11 @@ class AccessTokenHandlerTest extends TestCase
$user = new User();
$user->setUserIdentifier('foo-bar');
$accessToken = new AccessToken($user, 'Test');
$this->assertNull($accessToken->getLastUsage());
self::assertNull($accessToken->getLastUsage());
$sut = $this->getSut($accessToken);
$badge = $sut->getUserBadgeFrom('foo');
$this->assertNotNull($accessToken->getLastUsage());
$this->assertSame('foo-bar', $badge->getUserIdentifier());
self::assertNotNull($accessToken->getLastUsage());
self::assertSame('foo-bar', $badge->getUserIdentifier());
}
}

View file

@ -19,7 +19,7 @@ use Symfony\Component\HttpFoundation\Response;
* @group legacy
* @group integration
*/
class AuthenticationTest extends APIControllerBaseTest
class AuthenticationTest extends APIControllerBaseTestCase
{
public function testPinIsSecure(): void
{
@ -31,11 +31,11 @@ class AuthenticationTest extends APIControllerBaseTest
$client = $this->getClientForAuthenticatedUser(User::ROLE_USER);
$this->assertAccessIsGranted($client, '/api/ping');
$response = $client->getResponse()->getContent();
$this->assertIsString($response);
self::assertIsString($response);
$result = json_decode($response, true);
$this->assertIsArray($result);
$this->assertEquals(['message' => 'pong'], $result);
self::assertIsArray($result);
self::assertEquals(['message' => 'pong'], $result);
}
public function testPingWithAuthTokenAndUsername(): void
@ -44,11 +44,11 @@ class AuthenticationTest extends APIControllerBaseTest
$this->assertAccessIsGranted($client, '/api/ping');
$response = $client->getResponse()->getContent();
$this->assertIsString($response);
self::assertIsString($response);
$result = json_decode($response, true);
$this->assertIsArray($result);
$this->assertEquals(['message' => 'pong'], $result);
self::assertIsArray($result);
self::assertEquals(['message' => 'pong'], $result);
}
public function testPingWithInvalidAuthTokenAndUsername(): void
@ -64,15 +64,15 @@ class AuthenticationTest extends APIControllerBaseTest
'message' => 'Invalid credentials',
];
$this->assertIsString($response->getContent());
self::assertIsString($response->getContent());
$this->assertEquals(
self::assertEquals(
$data,
json_decode($response->getContent(), true),
\sprintf('The secure URL %s is not protected.', $url)
);
$this->assertEquals(
self::assertEquals(
Response::HTTP_FORBIDDEN,
$response->getStatusCode(),
\sprintf('The secure URL %s has the wrong status code %s.', $url, $response->getStatusCode())

View file

@ -14,7 +14,7 @@ use App\Entity\User;
/**
* @group integration
*/
class ConfigurationControllerTest extends APIControllerBaseTest
class ConfigurationControllerTest extends APIControllerBaseTestCase
{
public function testIsTimesheetSecure(): void
{
@ -26,18 +26,18 @@ class ConfigurationControllerTest extends APIControllerBaseTest
$client = $this->getClientForAuthenticatedUser(User::ROLE_USER);
$this->assertAccessIsGranted($client, '/api/config/timesheet', 'GET');
$content = $client->getResponse()->getContent();
$this->assertIsString($content);
self::assertIsString($content);
$result = json_decode($content, true);
$this->assertIsArray($result);
$this->assertNotEmpty($result);
self::assertIsArray($result);
self::assertNotEmpty($result);
$expectedKeys = ['activeEntriesHardLimit', 'defaultBeginTime', 'isAllowFutureTimes', 'isAllowOverlapping', 'trackingMode'];
$this->assertCount(\count($expectedKeys), $result);
self::assertCount(\count($expectedKeys), $result);
$actual = array_keys($result);
sort($actual);
sort($expectedKeys);
$this->assertEquals($expectedKeys, $actual, 'Config structure does not match');
self::assertEquals($expectedKeys, $actual, 'Config structure does not match');
}
public function testIsColorsSecure(): void
@ -50,11 +50,11 @@ class ConfigurationControllerTest extends APIControllerBaseTest
$client = $this->getClientForAuthenticatedUser(User::ROLE_USER);
$this->assertAccessIsGranted($client, '/api/config/colors', 'GET');
$content = $client->getResponse()->getContent();
$this->assertIsString($content);
self::assertIsString($content);
$actual = json_decode($content, true);
$this->assertIsArray($actual);
$this->assertNotEmpty($actual);
self::assertIsArray($actual);
self::assertNotEmpty($actual);
$expected = [
'Silver' => '#c0c0c0',
'Gray' => '#808080',
@ -84,8 +84,8 @@ class ConfigurationControllerTest extends APIControllerBaseTest
'Rose' => '#ffe4e1',
'Lavender' => '#E6E6FA',
];
$this->assertCount(\count($expected), $actual);
self::assertCount(\count($expected), $actual);
$this->assertEquals($expected, $actual, 'Color structure does not match');
self::assertEquals($expected, $actual, 'Color structure does not match');
}
}

View file

@ -28,7 +28,7 @@ use Symfony\Component\HttpFoundation\Response;
/**
* @group integration
*/
class CustomerControllerTest extends APIControllerBaseTest
class CustomerControllerTest extends APIControllerBaseTestCase
{
use RateControllerTestTrait;
@ -140,12 +140,12 @@ class CustomerControllerTest extends APIControllerBaseTest
$this->assertAccessIsGranted($client, '/api/customers');
$content = $client->getResponse()->getContent();
$this->assertIsString($content);
self::assertIsString($content);
$result = json_decode($content, true);
$this->assertIsArray($result);
$this->assertNotEmpty($result);
$this->assertEquals(1, \count($result));
self::assertIsArray($result);
self::assertNotEmpty($result);
self::assertEquals(1, \count($result));
self::assertIsArray($result[0]);
self::assertApiResponseTypeStructure('CustomerCollection', $result[0]);
}
@ -157,12 +157,12 @@ class CustomerControllerTest extends APIControllerBaseTest
$this->assertAccessIsGranted($client, '/api/customers', 'GET', $query);
$content = $client->getResponse()->getContent();
$this->assertIsString($content);
self::assertIsString($content);
$result = json_decode($content, true);
$this->assertIsArray($result);
$this->assertNotEmpty($result);
$this->assertEquals(1, \count($result));
self::assertIsArray($result);
self::assertNotEmpty($result);
self::assertEquals(1, \count($result));
self::assertIsArray($result[0]);
self::assertApiResponseTypeStructure('CustomerCollection', $result[0]);
}
@ -178,10 +178,10 @@ class CustomerControllerTest extends APIControllerBaseTest
$this->assertAccessIsGranted($client, '/api/customers/1');
$content = $client->getResponse()->getContent();
$this->assertIsString($content);
self::assertIsString($content);
$result = json_decode($content, true);
$this->assertIsArray($result);
self::assertIsArray($result);
self::assertApiResponseTypeStructure('CustomerEntity', $result);
}
@ -225,10 +225,10 @@ class CustomerControllerTest extends APIControllerBaseTest
$this->assertAccessIsGranted($client, '/api/customers/1');
$content = $client->getResponse()->getContent();
$this->assertIsString($content);
self::assertIsString($content);
$result = json_decode($content, true);
$this->assertIsArray($result);
self::assertIsArray($result);
self::assertApiResponseTypeStructure('CustomerEntity', $result);
}
@ -250,15 +250,15 @@ class CustomerControllerTest extends APIControllerBaseTest
'timeBudget' => '7200',
];
$this->request($client, '/api/customers', 'POST', [], json_encode($data));
$this->assertTrue($client->getResponse()->isSuccessful());
self::assertTrue($client->getResponse()->isSuccessful());
$content = $client->getResponse()->getContent();
$this->assertIsString($content);
self::assertIsString($content);
$result = json_decode($content, true);
$this->assertIsArray($result);
self::assertIsArray($result);
self::assertApiResponseTypeStructure('CustomerEntity', $result);
$this->assertNotEmpty($result['id']);
self::assertNotEmpty($result['id']);
}
public function testPostActionWithLeastFields(): void
@ -271,15 +271,15 @@ class CustomerControllerTest extends APIControllerBaseTest
'timezone' => 'Europe/Berlin',
];
$this->request($client, '/api/customers', 'POST', [], json_encode($data));
$this->assertTrue($client->getResponse()->isSuccessful());
self::assertTrue($client->getResponse()->isSuccessful());
$content = $client->getResponse()->getContent();
$this->assertIsString($content);
self::assertIsString($content);
$result = json_decode($content, true);
$this->assertIsArray($result);
self::assertIsArray($result);
self::assertApiResponseTypeStructure('CustomerEntity', $result);
$this->assertNotEmpty($result['id']);
self::assertNotEmpty($result['id']);
}
public function testPostActionWithInvalidUser(): void
@ -327,15 +327,15 @@ class CustomerControllerTest extends APIControllerBaseTest
'timeBudget' => '7200',
];
$this->request($client, '/api/customers/1', 'PATCH', [], json_encode($data));
$this->assertTrue($client->getResponse()->isSuccessful());
self::assertTrue($client->getResponse()->isSuccessful());
$content = $client->getResponse()->getContent();
$this->assertIsString($content);
self::assertIsString($content);
$result = json_decode($content, true);
$this->assertIsArray($result);
self::assertIsArray($result);
self::assertApiResponseTypeStructure('CustomerEntity', $result);
$this->assertNotEmpty($result['id']);
self::assertNotEmpty($result['id']);
}
public function testPatchActionWithInvalidUser(): void
@ -373,7 +373,7 @@ class CustomerControllerTest extends APIControllerBaseTest
$this->request($client, '/api/customers/1', 'PATCH', [], json_encode($data));
$response = $client->getResponse();
$this->assertEquals(400, $response->getStatusCode());
self::assertEquals(400, $response->getStatusCode());
$this->assertApiCallValidationError($response, ['currency']);
}
@ -426,12 +426,12 @@ class CustomerControllerTest extends APIControllerBaseTest
];
$this->request($client, '/api/customers/1/meta', 'PATCH', [], json_encode($data));
$this->assertTrue($client->getResponse()->isSuccessful());
self::assertTrue($client->getResponse()->isSuccessful());
$em = $this->getEntityManager();
/** @var Customer $customer */
$customer = $em->getRepository(Customer::class)->find(1);
$this->assertEquals('another,testing,bar', $customer->getMetaField('metatestmock')->getValue());
self::assertEquals('another,testing,bar', $customer->getMetaField('metatestmock')->getValue());
}
// ------------------------------- [DELETE] -------------------------------
@ -481,9 +481,9 @@ class CustomerControllerTest extends APIControllerBaseTest
$id = $result['id'];
$this->request($client, '/api/customers/' . $id, Request::METHOD_DELETE);
$this->assertTrue($client->getResponse()->isSuccessful());
self::assertTrue($client->getResponse()->isSuccessful());
self::assertEquals(Response::HTTP_NO_CONTENT, $client->getResponse()->getStatusCode());
$this->assertEmpty($client->getResponse()->getContent());
self::assertEmpty($client->getResponse()->getContent());
$this->request($client, $getUrl);
$this->assertApiException($client->getResponse(), [

View file

@ -16,7 +16,7 @@ use App\Tests\DataFixtures\InvoiceFixtures;
/**
* @group integration
*/
class InvoiceControllerTest extends APIControllerBaseTest
class InvoiceControllerTest extends APIControllerBaseTestCase
{
/**
* @return Invoice[]
@ -45,12 +45,12 @@ class InvoiceControllerTest extends APIControllerBaseTest
$this->assertAccessIsGranted($client, '/api/invoices');
$content = $client->getResponse()->getContent();
$this->assertIsString($content);
self::assertIsString($content);
$result = json_decode($content, true);
$this->assertIsArray($result);
$this->assertNotEmpty($result);
$this->assertEquals(10, \count($result));
self::assertIsArray($result);
self::assertNotEmpty($result);
self::assertEquals(10, \count($result));
self::assertIsArray($result[0]);
self::assertApiResponseTypeStructure('InvoiceCollection', $result[0]);
}
@ -67,12 +67,12 @@ class InvoiceControllerTest extends APIControllerBaseTest
$this->assertAccessIsGranted($client, '/api/invoices', 'GET', $query);
$content = $client->getResponse()->getContent();
$this->assertIsString($content);
self::assertIsString($content);
$result = json_decode($content, true);
$this->assertIsArray($result);
$this->assertNotEmpty($result);
$this->assertEquals(7, \count($result));
self::assertIsArray($result);
self::assertNotEmpty($result);
self::assertEquals(7, \count($result));
self::assertIsArray($result[0]);
self::assertApiResponseTypeStructure('InvoiceCollection', $result[0]);
}
@ -86,12 +86,12 @@ class InvoiceControllerTest extends APIControllerBaseTest
$this->assertAccessIsGranted($client, '/api/invoices', 'GET', $query);
$content = $client->getResponse()->getContent();
$this->assertIsString($content);
self::assertIsString($content);
$result = json_decode($content, true);
$this->assertIsArray($result);
$this->assertNotEmpty($result);
$this->assertEquals(4, \count($result));
self::assertIsArray($result);
self::assertNotEmpty($result);
self::assertEquals(4, \count($result));
$this->assertPagination($client->getResponse(), 2, 4, 5, 20);
self::assertIsArray($result[0]);
self::assertApiResponseTypeStructure('InvoiceCollection', $result[0]);
@ -113,10 +113,10 @@ class InvoiceControllerTest extends APIControllerBaseTest
$this->assertAccessIsGranted($client, '/api/invoices/' . $invoices[0]->getId());
$content = $client->getResponse()->getContent();
$this->assertIsString($content);
self::assertIsString($content);
$result = json_decode($content, true);
$this->assertIsArray($result);
self::assertIsArray($result);
self::assertApiResponseTypeStructure('Invoice', $result);
}

View file

@ -28,7 +28,7 @@ use Symfony\Component\HttpFoundation\Response;
/**
* @group integration
*/
class ProjectControllerTest extends APIControllerBaseTest
class ProjectControllerTest extends APIControllerBaseTestCase
{
use RateControllerTestTrait;
@ -101,12 +101,12 @@ class ProjectControllerTest extends APIControllerBaseTest
$this->assertAccessIsGranted($client, '/api/projects');
$content = $client->getResponse()->getContent();
$this->assertIsString($content);
self::assertIsString($content);
$result = json_decode($content, true);
$this->assertIsArray($result);
$this->assertNotEmpty($result);
$this->assertEquals(1, \count($result));
self::assertIsArray($result);
self::assertNotEmpty($result);
self::assertEquals(1, \count($result));
self::assertIsArray($result[0]);
self::assertApiResponseTypeStructure('ProjectCollection', $result[0]);
}
@ -224,18 +224,18 @@ class ProjectControllerTest extends APIControllerBaseTest
$this->assertAccessIsGranted($client, $url, 'GET', $parameters);
$content = $client->getResponse()->getContent();
$this->assertIsString($content);
self::assertIsString($content);
$result = json_decode($content, true);
$this->assertIsArray($result);
$this->assertEquals(\count($expected), \count($result), 'Found wrong amount of projects');
self::assertIsArray($result);
self::assertEquals(\count($expected), \count($result), 'Found wrong amount of projects');
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']);
self::assertEquals($customerId, $project['customer']);
}
}
}
@ -243,7 +243,7 @@ class ProjectControllerTest extends APIControllerBaseTest
/**
* @return \Generator<array<mixed>>
*/
public function getCollectionTestData(): iterable
public static function getCollectionTestData(): iterable
{
// if you wonder why: case-sensitive ordering feels strange ... "Title" > "fifth”
yield ['/api/projects', null, [], [[true, 1], [false, 1], [false, 3]]];
@ -273,10 +273,10 @@ class ProjectControllerTest extends APIControllerBaseTest
$this->assertAccessIsGranted($client, '/api/projects/1');
$content = $client->getResponse()->getContent();
$this->assertIsString($content);
self::assertIsString($content);
$result = json_decode($content, true);
$this->assertIsArray($result);
self::assertIsArray($result);
self::assertApiResponseTypeStructure('ProjectEntity', $result);
}
@ -308,10 +308,10 @@ class ProjectControllerTest extends APIControllerBaseTest
$this->assertAccessIsGranted($client, '/api/projects/' . $project->getId());
$content = $client->getResponse()->getContent();
$this->assertIsString($content);
self::assertIsString($content);
$result = json_decode($content, true);
$this->assertIsArray($result);
self::assertIsArray($result);
self::assertApiResponseTypeStructure('ProjectEntity', $result);
$expected = [
@ -357,15 +357,15 @@ class ProjectControllerTest extends APIControllerBaseTest
'orderNumber' => '1234567890/WXYZ/SUBPROJECT/1234/CONTRACT/EMPLOYEE1',
];
$this->request($client, '/api/projects', 'POST', [], json_encode($data));
$this->assertTrue($client->getResponse()->isSuccessful());
self::assertTrue($client->getResponse()->isSuccessful());
$content = $client->getResponse()->getContent();
$this->assertIsString($content);
self::assertIsString($content);
$result = json_decode($content, true);
$this->assertIsArray($result);
self::assertIsArray($result);
self::assertApiResponseTypeStructure('ProjectEntity', $result);
$this->assertNotEmpty($result['id']);
self::assertNotEmpty($result['id']);
self::assertEquals('2018-04-17', $result['orderDate']);
self::assertEquals('2019-02-01', $result['start']);
self::assertEquals('2020-02-08', $result['end']);
@ -386,15 +386,15 @@ class ProjectControllerTest extends APIControllerBaseTest
'visible' => '',
];
$this->request($client, '/api/projects', 'POST', [], json_encode($data));
$this->assertTrue($client->getResponse()->isSuccessful());
self::assertTrue($client->getResponse()->isSuccessful());
$content = $client->getResponse()->getContent();
$this->assertIsString($content);
self::assertIsString($content);
$result = json_decode($content, true);
$this->assertIsArray($result);
self::assertIsArray($result);
self::assertApiResponseTypeStructure('ProjectEntity', $result);
$this->assertNotEmpty($result['id']);
self::assertNotEmpty($result['id']);
self::assertEquals('foo', $result['name']);
self::assertTrue($result['globalActivities']);
self::assertTrue($result['billable']);
@ -412,15 +412,15 @@ class ProjectControllerTest extends APIControllerBaseTest
'visible' => false,
];
$this->request($client, '/api/projects', 'POST', [], json_encode($data));
$this->assertTrue($client->getResponse()->isSuccessful());
self::assertTrue($client->getResponse()->isSuccessful());
$content = $client->getResponse()->getContent();
$this->assertIsString($content);
self::assertIsString($content);
$result = json_decode($content, true);
$this->assertIsArray($result);
self::assertIsArray($result);
self::assertApiResponseTypeStructure('ProjectEntity', $result);
$this->assertNotEmpty($result['id']);
self::assertNotEmpty($result['id']);
self::assertEquals('foo', $result['name']);
self::assertFalse($result['globalActivities']);
self::assertFalse($result['billable']);
@ -438,15 +438,15 @@ class ProjectControllerTest extends APIControllerBaseTest
'visible' => true,
];
$this->request($client, '/api/projects', 'POST', [], json_encode($data));
$this->assertTrue($client->getResponse()->isSuccessful());
self::assertTrue($client->getResponse()->isSuccessful());
$content = $client->getResponse()->getContent();
$this->assertIsString($content);
self::assertIsString($content);
$result = json_decode($content, true);
$this->assertIsArray($result);
self::assertIsArray($result);
self::assertApiResponseTypeStructure('ProjectEntity', $result);
$this->assertNotEmpty($result['id']);
self::assertNotEmpty($result['id']);
self::assertEquals('foo', $result['name']);
self::assertTrue($result['globalActivities']);
self::assertTrue($result['billable']);
@ -461,15 +461,15 @@ class ProjectControllerTest extends APIControllerBaseTest
'customer' => 1
];
$this->request($client, '/api/projects', 'POST', [], json_encode($data));
$this->assertTrue($client->getResponse()->isSuccessful());
self::assertTrue($client->getResponse()->isSuccessful());
$content = $client->getResponse()->getContent();
$this->assertIsString($content);
self::assertIsString($content);
$result = json_decode($content, true);
$this->assertIsArray($result);
self::assertIsArray($result);
self::assertApiResponseTypeStructure('ProjectEntity', $result);
$this->assertNotEmpty($result['id']);
self::assertNotEmpty($result['id']);
self::assertEquals('foo', $result['name']);
self::assertFalse($result['globalActivities']);
self::assertFalse($result['billable']);
@ -515,15 +515,15 @@ class ProjectControllerTest extends APIControllerBaseTest
'timeBudget' => '7200',
];
$this->request($client, '/api/projects/1', 'PATCH', [], json_encode($data));
$this->assertTrue($client->getResponse()->isSuccessful());
self::assertTrue($client->getResponse()->isSuccessful());
$content = $client->getResponse()->getContent();
$this->assertIsString($content);
self::assertIsString($content);
$result = json_decode($content, true);
$this->assertIsArray($result);
self::assertIsArray($result);
self::assertApiResponseTypeStructure('ProjectEntity', $result);
$this->assertNotEmpty($result['id']);
self::assertNotEmpty($result['id']);
}
public function testPatchActionWithInvalidUser(): void
@ -557,7 +557,7 @@ class ProjectControllerTest extends APIControllerBaseTest
$this->request($client, '/api/projects/1', 'PATCH', [], json_encode($data));
$response = $client->getResponse();
$this->assertEquals(400, $response->getStatusCode());
self::assertEquals(400, $response->getStatusCode());
$this->assertApiCallValidationError($response, ['customer']);
}
@ -603,12 +603,12 @@ class ProjectControllerTest extends APIControllerBaseTest
];
$this->request($client, '/api/projects/1/meta', 'PATCH', [], json_encode($data));
$this->assertTrue($client->getResponse()->isSuccessful());
self::assertTrue($client->getResponse()->isSuccessful());
$em = $this->getEntityManager();
/** @var Project $project */
$project = $em->getRepository(Project::class)->find(1);
$this->assertEquals('another,testing,bar', $project->getMetaField('metatestmock')->getValue());
self::assertEquals('another,testing,bar', $project->getMetaField('metatestmock')->getValue());
}
// ------------------------------- [DELETE] -------------------------------
@ -658,9 +658,9 @@ class ProjectControllerTest extends APIControllerBaseTest
$id = $result['id'];
$this->request($client, '/api/projects/' . $id, Request::METHOD_DELETE);
$this->assertTrue($client->getResponse()->isSuccessful());
self::assertTrue($client->getResponse()->isSuccessful());
self::assertEquals(Response::HTTP_NO_CONTENT, $client->getResponse()->getStatusCode());
$this->assertEmpty($client->getResponse()->getContent());
self::assertEmpty($client->getResponse()->getContent());
$this->request($client, $getUrl);
$this->assertApiException($client->getResponse(), [

View file

@ -53,7 +53,7 @@ trait RateControllerTestTrait
$this->request($client, $this->getRateUrl(), 'POST', [], json_encode($data));
$response = $client->getResponse();
$this->assertEquals(400, $response->getStatusCode());
self::assertEquals(400, $response->getStatusCode());
$this->assertApiCallValidationError($response, ['user']);
}
@ -81,18 +81,18 @@ trait RateControllerTestTrait
'is_fixed' => false
];
$this->request($client, $this->getRateUrl(), 'POST', [], json_encode($data));
$this->assertTrue($client->getResponse()->isSuccessful());
self::assertTrue($client->getResponse()->isSuccessful());
$content = $client->getResponse()->getContent();
$this->assertIsString($content);
self::assertIsString($content);
$result = json_decode($content, true);
$this->assertIsArray($result);
self::assertIsArray($result);
$this->assertRateStructure($result, null);
$this->assertNotEmpty($result['id']);
$this->assertEquals(12.34, $result['rate']);
$this->assertEquals(6.66, $result['internalRate']);
$this->assertFalse($result['isFixed']);
self::assertNotEmpty($result['id']);
self::assertEquals(12.34, $result['rate']);
self::assertEquals(6.66, $result['internalRate']);
self::assertFalse($result['isFixed']);
}
public function testAddFixedRateAction(): void
@ -105,32 +105,32 @@ trait RateControllerTestTrait
'is_fixed' => true
];
$this->request($client, $this->getRateUrl(), 'POST', [], json_encode($data));
$this->assertTrue($client->getResponse()->isSuccessful());
self::assertTrue($client->getResponse()->isSuccessful());
$content = $client->getResponse()->getContent();
$this->assertIsString($content);
self::assertIsString($content);
$result = json_decode($content, true);
$this->assertIsArray($result);
self::assertIsArray($result);
$this->assertRateStructure($result, 1);
$this->assertNotEmpty($result['id']);
$this->assertEquals(12.34, $result['rate']);
$this->assertEquals(6.66, $result['internalRate']);
$this->assertTrue($result['isFixed']);
self::assertNotEmpty($result['id']);
self::assertEquals(12.34, $result['rate']);
self::assertEquals(6.66, $result['internalRate']);
self::assertTrue($result['isFixed']);
}
public function testGetRatesEmptyResult(): void
{
$client = $this->getClientForAuthenticatedUser(User::ROLE_ADMIN);
$this->request($client, $this->getRateUrl(1));
$this->assertTrue($client->getResponse()->isSuccessful());
self::assertTrue($client->getResponse()->isSuccessful());
$content = $client->getResponse()->getContent();
$this->assertIsString($content);
self::assertIsString($content);
$result = json_decode($content, true);
$this->assertIsArray($result);
$this->assertEmpty($result);
self::assertIsArray($result);
self::assertEmpty($result);
}
public function testGetRates(): void
@ -139,22 +139,22 @@ trait RateControllerTestTrait
$expectedRates = $this->importTestRates(1);
$this->request($client, $this->getRateUrl(1));
$this->assertTrue($client->getResponse()->isSuccessful());
self::assertTrue($client->getResponse()->isSuccessful());
$content = $client->getResponse()->getContent();
$this->assertIsString($content);
self::assertIsString($content);
$result = json_decode($content, true);
$this->assertIsArray($result);
$this->assertNotEmpty($result);
$this->assertEquals(\count($expectedRates), \count($result));
self::assertIsArray($result);
self::assertNotEmpty($result);
self::assertEquals(\count($expectedRates), \count($result));
foreach ($result as $rate) {
$this->assertIsArray($rate);
self::assertIsArray($rate);
if ($rate['user'] === null) {
$this->assertRateStructure($rate);
} else {
$this->assertIsArray($rate['user']);
self::assertIsArray($rate['user']);
$this->assertRateStructure($rate, $rate['user']['id']);
}
}
@ -176,19 +176,19 @@ trait RateControllerTestTrait
$expectedRates = $this->importTestRates(1);
$this->request($client, $this->getRateUrlByRate($expectedRates[0], false), 'DELETE');
$this->assertTrue($client->getResponse()->isSuccessful());
$this->assertEmpty($client->getResponse()->getContent());
self::assertTrue($client->getResponse()->isSuccessful());
self::assertEmpty($client->getResponse()->getContent());
// fetch rates to validate that one was removed
$this->request($client, $this->getRateUrlByRate($expectedRates[0], true));
$this->assertTrue($client->getResponse()->isSuccessful());
self::assertTrue($client->getResponse()->isSuccessful());
$content = $client->getResponse()->getContent();
$this->assertIsString($content);
self::assertIsString($content);
$result = json_decode($content, true);
$this->assertIsArray($result);
$this->assertEquals(\count($expectedRates) - 1, \count($result));
self::assertIsArray($result);
self::assertEquals(\count($expectedRates) - 1, \count($result));
}
public function testDeleteRateEntityNotFound(): void
@ -234,7 +234,7 @@ trait RateControllerTestTrait
sort($actual);
sort($expectedKeys);
$this->assertEquals($expectedKeys, $actual, 'Rate structure does not match');
self::assertEquals($expectedKeys, $actual, 'Rate structure does not match');
if (null !== $user) {
self::assertIsArray($result['user'], 'Rate user is not an array');

View file

@ -15,7 +15,7 @@ use App\Entity\User;
/**
* @group integration
*/
class StatusControllerTest extends APIControllerBaseTest
class StatusControllerTest extends APIControllerBaseTestCase
{
public function testIsSecurePing(): void
{
@ -38,8 +38,8 @@ class StatusControllerTest extends APIControllerBaseTest
$this->assertAccessIsGranted($client, '/api/ping');
$result = json_decode($client->getResponse()->getContent(), true);
$this->assertIsArray($result);
$this->assertEquals(['message' => 'pong'], $result);
self::assertIsArray($result);
self::assertEquals(['message' => 'pong'], $result);
}
public function testVersion(): void
@ -48,15 +48,15 @@ class StatusControllerTest extends APIControllerBaseTest
$this->assertAccessIsGranted($client, '/api/version');
$result = json_decode($client->getResponse()->getContent(), true);
$this->assertIsArray($result);
self::assertIsArray($result);
$this->assertArrayHasKey('version', $result);
$this->assertArrayHasKey('versionId', $result);
$this->assertArrayHasKey('copyright', $result);
self::assertArrayHasKey('version', $result);
self::assertArrayHasKey('versionId', $result);
self::assertArrayHasKey('copyright', $result);
$this->assertSame(Constants::VERSION, $result['version']);
$this->assertSame(Constants::VERSION_ID, $result['versionId']);
$this->assertEquals(
self::assertSame(Constants::VERSION, $result['version']);
self::assertSame(Constants::VERSION_ID, $result['versionId']);
self::assertEquals(
'Kimai ' . Constants::VERSION . ' by Kevin Papst.',
$result['copyright']
);
@ -68,7 +68,7 @@ class StatusControllerTest extends APIControllerBaseTest
$this->assertAccessIsGranted($client, '/api/plugins');
$result = json_decode($client->getResponse()->getContent(), true);
$this->assertIsArray($result);
self::assertIsArray($result);
// no asserts, as plugins are disabled in tests
}
}

View file

@ -17,7 +17,7 @@ use Symfony\Component\HttpFoundation\Response;
/**
* @group integration
*/
class TagControllerTest extends APIControllerBaseTest
class TagControllerTest extends APIControllerBaseTestCase
{
/**
* @return Tag[]
@ -45,13 +45,13 @@ class TagControllerTest extends APIControllerBaseTest
$this->assertAccessIsGranted($client, '/api/tags');
$content = $client->getResponse()->getContent();
$this->assertNotFalse($content);
self::assertNotFalse($content);
$result = json_decode($content, true);
$this->assertIsArray($result);
$this->assertNotEmpty($result);
$this->assertEquals(10, \count($result));
$this->assertEquals('Test', $result[9]);
self::assertIsArray($result);
self::assertNotEmpty($result);
self::assertEquals(10, \count($result));
self::assertEquals('Test', $result[9]);
}
public function testFindCollection(): void
@ -60,12 +60,12 @@ class TagControllerTest extends APIControllerBaseTest
$this->importTagFixtures();
$this->assertAccessIsGranted($client, '/api/tags/find', 'GET', ['name' => '2018']);
$content = $client->getResponse()->getContent();
$this->assertNotFalse($content);
self::assertNotFalse($content);
$result = json_decode($content, true);
$this->assertIsArray($result);
$this->assertNotEmpty($result);
$this->assertEquals(3, \count($result));
self::assertIsArray($result);
self::assertNotEmpty($result);
self::assertEquals(3, \count($result));
self::assertIsArray($result[0]);
self::assertApiResponseTypeStructure('TagEntity', $result[0]);
}
@ -78,12 +78,12 @@ class TagControllerTest extends APIControllerBaseTest
$this->assertAccessIsGranted($client, '/api/tags', 'GET', $query);
$content = $client->getResponse()->getContent();
$this->assertNotFalse($content);
self::assertNotFalse($content);
$result = json_decode($content, true);
$this->assertIsArray($result);
$this->assertEmpty($result);
$this->assertEquals(0, \count($result));
self::assertIsArray($result);
self::assertEmpty($result);
self::assertEquals(0, \count($result));
}
public function testPostAction(): void
@ -95,15 +95,15 @@ class TagControllerTest extends APIControllerBaseTest
'color' => '#00ff00'
];
$this->request($client, '/api/tags', 'POST', [], json_encode($data));
$this->assertTrue($client->getResponse()->isSuccessful());
self::assertTrue($client->getResponse()->isSuccessful());
$content = $client->getResponse()->getContent();
$this->assertNotFalse($content);
self::assertNotFalse($content);
$result = json_decode($content, true);
$this->assertIsArray($result);
self::assertIsArray($result);
self::assertApiResponseTypeStructure('TagEntity', $result);
$this->assertNotEmpty($result['id']);
self::assertNotEmpty($result['id']);
self::assertEquals('#00ff00', $result['color']);
}
@ -117,7 +117,7 @@ class TagControllerTest extends APIControllerBaseTest
];
$this->request($client, '/api/tags', 'POST', [], json_encode($data));
$response = $client->getResponse();
$this->assertEquals(400, $response->getStatusCode());
self::assertEquals(400, $response->getStatusCode());
$this->assertApiCallValidationError($response, ['name', 'color']);
}
@ -129,15 +129,15 @@ class TagControllerTest extends APIControllerBaseTest
'name' => 'foo',
];
$this->request($client, '/api/tags', 'POST', [], json_encode($data));
$this->assertTrue($client->getResponse()->isSuccessful());
self::assertTrue($client->getResponse()->isSuccessful());
$content = $client->getResponse()->getContent();
$this->assertNotFalse($content);
self::assertNotFalse($content);
$result = json_decode($content, true);
$this->assertIsArray($result);
self::assertIsArray($result);
self::assertApiResponseTypeStructure('TagEntity', $result);
$this->assertNotEmpty($result['id']);
self::assertNotEmpty($result['id']);
self::assertEquals('foo', $result['name']);
}
@ -149,16 +149,16 @@ class TagControllerTest extends APIControllerBaseTest
$this->assertAccessIsGranted($client, '/api/tags', 'GET', $query);
$content = $client->getResponse()->getContent();
$this->assertNotFalse($content);
self::assertNotFalse($content);
$result = json_decode($content, true);
$this->assertIsArray($result);
$this->assertNotEmpty($result);
$this->assertEquals(3, \count($result));
self::assertIsArray($result);
self::assertNotEmpty($result);
self::assertEquals(3, \count($result));
$this->assertEquals('Administration', $result[0]);
$this->assertEquals('Bug Fixing', $result[1]);
$this->assertEquals('Marketing', $result[2]);
self::assertEquals('Administration', $result[0]);
self::assertEquals('Bug Fixing', $result[1]);
self::assertEquals('Marketing', $result[2]);
}
public function testDeleteAction(): void
@ -168,17 +168,17 @@ class TagControllerTest extends APIControllerBaseTest
$id = $tags[0]->getId();
$this->request($client, '/api/tags/' . $id, 'DELETE');
$this->assertTrue($client->getResponse()->isSuccessful());
$this->assertEquals(Response::HTTP_NO_CONTENT, $client->getResponse()->getStatusCode());
$this->assertEmpty($client->getResponse()->getContent());
self::assertTrue($client->getResponse()->isSuccessful());
self::assertEquals(Response::HTTP_NO_CONTENT, $client->getResponse()->getStatusCode());
self::assertEmpty($client->getResponse()->getContent());
$this->assertAccessIsGranted($client, '/api/tags');
$content = $client->getResponse()->getContent();
$this->assertNotFalse($content);
self::assertNotFalse($content);
$result = json_decode($content, true);
$this->assertEquals(9, \count($result));
self::assertEquals(9, \count($result));
}
public function testDeleteActionWithUnknownTimesheet(): void

View file

@ -18,7 +18,7 @@ use Symfony\Component\HttpFoundation\Response;
/**
* @group integration
*/
class TeamControllerTest extends APIControllerBaseTest
class TeamControllerTest extends APIControllerBaseTestCase
{
/**
* @return Team[]
@ -39,7 +39,7 @@ class TeamControllerTest extends APIControllerBaseTest
/**
* @return array<int, array<int, string>>
*/
public function getRoleTestData(): array
public static function getRoleTestData(): array
{
return [
[User::ROLE_USER],
@ -62,8 +62,8 @@ class TeamControllerTest extends APIControllerBaseTest
$this->assertAccessIsGranted($client, '/api/teams');
$result = json_decode($client->getResponse()->getContent(), true);
$this->assertIsArray($result);
$this->assertNotEmpty($result);
self::assertIsArray($result);
self::assertNotEmpty($result);
self::assertEquals(2, \count($result));
self::assertIsArray($result[0]);
self::assertApiResponseTypeStructure('TeamCollection', $result[0]);
@ -78,7 +78,7 @@ class TeamControllerTest extends APIControllerBaseTest
$this->assertAccessIsGranted($client, '/api/teams/' . $id);
$result = json_decode($client->getResponse()->getContent(), true);
$this->assertIsArray($result);
self::assertIsArray($result);
self::assertApiResponseTypeStructure('TeamEntity', $result);
}
@ -103,12 +103,12 @@ class TeamControllerTest extends APIControllerBaseTest
],
];
$this->request($client, '/api/teams', 'POST', [], json_encode($data));
$this->assertTrue($client->getResponse()->isSuccessful());
self::assertTrue($client->getResponse()->isSuccessful());
$result = json_decode($client->getResponse()->getContent(), true);
$this->assertIsArray($result);
self::assertIsArray($result);
self::assertApiResponseTypeStructure('TeamEntity', $result);
$this->assertNotEmpty($result['id']);
self::assertNotEmpty($result['id']);
}
public function testPostActionWithInvalidUser(): void
@ -135,7 +135,7 @@ class TeamControllerTest extends APIControllerBaseTest
$this->request($client, '/api/teams', 'POST', [], json_encode($data));
$response = $client->getResponse();
$this->assertEquals(400, $response->getStatusCode());
self::assertEquals(400, $response->getStatusCode());
$this->assertApiCallValidationError($response, ['name', 'members.0.user']);
}
@ -151,11 +151,11 @@ class TeamControllerTest extends APIControllerBaseTest
]
];
$this->request($client, '/api/teams', 'POST', [], json_encode($data));
$this->assertTrue($client->getResponse()->isSuccessful());
self::assertTrue($client->getResponse()->isSuccessful());
$result = json_decode($client->getResponse()->getContent(), true);
$this->assertIsArray($result);
self::assertIsArray($result);
$updateId = $result['id'];
$this->assertIsNumeric($updateId);
self::assertIsNumeric($updateId);
$data = [
'name' => 'foo',
@ -167,24 +167,24 @@ class TeamControllerTest extends APIControllerBaseTest
];
$this->request($client, '/api/teams/' . $updateId, 'PATCH', [], json_encode($data));
$this->assertTrue($client->getResponse()->isSuccessful());
self::assertTrue($client->getResponse()->isSuccessful());
$result = json_decode($client->getResponse()->getContent(), true);
$this->assertIsArray($result);
self::assertIsArray($result);
self::assertApiResponseTypeStructure('TeamEntity', $result);
$this->assertNotEmpty($result['id']);
self::assertNotEmpty($result['id']);
self::assertCount(3, $result['members']);
$this->assertIsNumeric($updateId);
self::assertIsNumeric($updateId);
$this->request($client, '/api/teams/' . $updateId);
$result = json_decode($client->getResponse()->getContent(), true);
$this->assertIsArray($result);
self::assertIsArray($result);
self::assertApiResponseTypeStructure('TeamEntity', $result);
$this->assertIsArray($result['members']);
self::assertIsArray($result['members']);
self::assertCount(3, $result['members']);
$this->assertIsArray($result['members'][1]);
self::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']);
@ -208,10 +208,10 @@ class TeamControllerTest extends APIControllerBaseTest
],
];
$this->request($client, '/api/teams', 'POST', [], json_encode($data));
$this->assertTrue($client->getResponse()->isSuccessful());
self::assertTrue($client->getResponse()->isSuccessful());
$result = json_decode($client->getResponse()->getContent(), true);
$this->assertIsArray($result);
$this->assertIsNumeric($result['id']);
self::assertIsArray($result);
self::assertIsNumeric($result['id']);
$data = [
'name' => '1',
@ -222,7 +222,7 @@ class TeamControllerTest extends APIControllerBaseTest
$this->request($client, '/api/teams/' . $result['id'], 'PATCH', [], json_encode($data));
$response = $client->getResponse();
$this->assertEquals(400, $response->getStatusCode());
self::assertEquals(400, $response->getStatusCode());
$this->assertApiCallValidationError($response, ['name', 'members.0.user']);
}
@ -234,16 +234,16 @@ class TeamControllerTest extends APIControllerBaseTest
$this->assertAccessIsGranted($client, '/api/teams/' . $id);
$result = json_decode($client->getResponse()->getContent(), true);
$this->assertIsArray($result);
self::assertIsArray($result);
self::assertApiResponseTypeStructure('TeamEntity', $result);
$this->assertNotEmpty($result['id']);
self::assertNotEmpty($result['id']);
$id = $result['id'];
$this->assertIsNumeric($id);
self::assertIsNumeric($id);
$this->request($client, '/api/teams/' . $id, 'DELETE');
$this->assertTrue($client->getResponse()->isSuccessful());
self::assertTrue($client->getResponse()->isSuccessful());
self::assertEquals(Response::HTTP_NO_CONTENT, $client->getResponse()->getStatusCode());
$this->assertEmpty($client->getResponse()->getContent());
self::assertEmpty($client->getResponse()->getContent());
}
public function testPostMemberAction(): void
@ -256,20 +256,20 @@ class TeamControllerTest extends APIControllerBaseTest
],
];
$this->request($client, '/api/teams', 'POST', [], json_encode($data));
$this->assertTrue($client->getResponse()->isSuccessful());
self::assertTrue($client->getResponse()->isSuccessful());
$result = json_decode($client->getResponse()->getContent(), true);
$this->assertIsArray($result);
$this->assertIsArray($result['members']);
self::assertIsArray($result);
self::assertIsArray($result['members']);
self::assertCount(1, $result['members']);
$this->assertIsNumeric($result['id']);
self::assertIsNumeric($result['id']);
$this->request($client, '/api/teams/' . $result['id'] . '/members/2', 'POST');
$this->assertTrue($client->getResponse()->isSuccessful());
self::assertTrue($client->getResponse()->isSuccessful());
$result = json_decode($client->getResponse()->getContent(), true);
$this->assertIsArray($result);
self::assertIsArray($result);
self::assertApiResponseTypeStructure('TeamEntity', $result);
$this->assertIsArray($result['members']);
self::assertIsArray($result['members']);
self::assertCount(2, $result['members']);
}
@ -284,10 +284,10 @@ class TeamControllerTest extends APIControllerBaseTest
],
];
$this->request($client, '/api/teams', 'POST', [], json_encode($data));
$this->assertTrue($client->getResponse()->isSuccessful());
self::assertTrue($client->getResponse()->isSuccessful());
$result = json_decode($client->getResponse()->getContent(), true);
$this->assertIsArray($result);
$this->assertIsNumeric($result['id']);
self::assertIsArray($result);
self::assertIsNumeric($result['id']);
// team not found
$this->assertEntityNotFoundForPost($client, '/api/teams/999/members/999');
@ -297,7 +297,7 @@ class TeamControllerTest extends APIControllerBaseTest
// add user
$this->request($client, '/api/teams/' . $result['id'] . '/members/5', 'POST');
$this->assertTrue($client->getResponse()->isSuccessful());
self::assertTrue($client->getResponse()->isSuccessful());
// cannot add existing member
$this->assertBadRequest($client, '/api/teams/' . $result['id'] . '/members/5', 'POST');
@ -316,20 +316,20 @@ class TeamControllerTest extends APIControllerBaseTest
],
];
$this->request($client, '/api/teams', 'POST', [], json_encode($data));
$this->assertTrue($client->getResponse()->isSuccessful());
self::assertTrue($client->getResponse()->isSuccessful());
$result = json_decode($client->getResponse()->getContent(), true);
$this->assertIsArray($result);
$this->assertIsNumeric($result['id']);
$this->assertIsArray($result['members']);
self::assertIsArray($result);
self::assertIsNumeric($result['id']);
self::assertIsArray($result['members']);
self::assertCount(4, $result['members']);
$this->request($client, '/api/teams/' . $result['id'] . '/members/2', 'DELETE');
$this->assertTrue($client->getResponse()->isSuccessful());
self::assertTrue($client->getResponse()->isSuccessful());
$result = json_decode($client->getResponse()->getContent(), true);
$this->assertIsArray($result);
self::assertIsArray($result);
self::assertApiResponseTypeStructure('TeamEntity', $result);
$this->assertIsArray($result['members']);
self::assertIsArray($result['members']);
self::assertCount(3, $result['members']);
}
@ -346,10 +346,10 @@ class TeamControllerTest extends APIControllerBaseTest
],
];
$this->request($client, '/api/teams', 'POST', [], json_encode($data));
$this->assertTrue($client->getResponse()->isSuccessful());
self::assertTrue($client->getResponse()->isSuccessful());
$result = json_decode($client->getResponse()->getContent(), true);
$this->assertIsArray($result);
$this->assertIsNumeric($result['id']);
self::assertIsArray($result);
self::assertIsNumeric($result['id']);
// team not found
$this->assertNotFoundForDelete($client, '/api/teams/999/members/999');
@ -359,7 +359,7 @@ class TeamControllerTest extends APIControllerBaseTest
// remove user
$this->request($client, '/api/teams/' . $result['id'] . '/members/2', 'DELETE');
$this->assertTrue($client->getResponse()->isSuccessful());
self::assertTrue($client->getResponse()->isSuccessful());
// cannot remove non-member
$this->assertBadRequest($client, '/api/teams/' . $result['id'] . '/members/2', 'DELETE');
@ -378,21 +378,21 @@ class TeamControllerTest extends APIControllerBaseTest
],
];
$this->request($client, '/api/teams', 'POST', [], json_encode($data));
$this->assertTrue($client->getResponse()->isSuccessful());
self::assertTrue($client->getResponse()->isSuccessful());
$result = json_decode($client->getResponse()->getContent(), true);
$this->assertIsArray($result);
$this->assertIsNumeric($result['id']);
self::assertIsArray($result);
self::assertIsNumeric($result['id']);
self::assertCount(0, $result['customers']);
$this->request($client, '/api/teams/' . $result['id'] . '/customers/1', 'POST');
$this->assertTrue($client->getResponse()->isSuccessful());
self::assertTrue($client->getResponse()->isSuccessful());
$result = json_decode($client->getResponse()->getContent(), true);
$this->assertIsArray($result);
self::assertIsArray($result);
self::assertApiResponseTypeStructure('TeamEntity', $result);
$this->assertIsArray($result['customers']);
self::assertIsArray($result['customers']);
self::assertCount(1, $result['customers']);
$this->assertIsArray($result['customers'][0]);
self::assertIsArray($result['customers'][0]);
self::assertEquals(1, $result['customers'][0]['id']);
}
@ -407,10 +407,10 @@ class TeamControllerTest extends APIControllerBaseTest
],
];
$this->request($client, '/api/teams', 'POST', [], json_encode($data));
$this->assertTrue($client->getResponse()->isSuccessful());
self::assertTrue($client->getResponse()->isSuccessful());
$result = json_decode($client->getResponse()->getContent(), true);
$this->assertIsArray($result);
$this->assertIsNumeric($result['id']);
self::assertIsArray($result);
self::assertIsNumeric($result['id']);
// team not found
$this->assertEntityNotFoundForPost($client, '/api/teams/999/customers/999');
@ -420,10 +420,10 @@ class TeamControllerTest extends APIControllerBaseTest
// add customer
$this->request($client, '/api/teams/' . $result['id'] . '/customers/1', 'POST');
$this->assertTrue($client->getResponse()->isSuccessful());
self::assertTrue($client->getResponse()->isSuccessful());
$result = json_decode($client->getResponse()->getContent(), true);
$this->assertIsArray($result);
$this->assertIsNumeric($result['id']);
self::assertIsArray($result);
self::assertIsNumeric($result['id']);
self::assertCount(1, $result['customers']);
// cannot add existing customer
@ -443,29 +443,29 @@ class TeamControllerTest extends APIControllerBaseTest
],
];
$this->request($client, '/api/teams', 'POST', [], json_encode($data));
$this->assertTrue($client->getResponse()->isSuccessful());
self::assertTrue($client->getResponse()->isSuccessful());
$result = json_decode($client->getResponse()->getContent(), true);
$this->assertIsArray($result);
$this->assertIsNumeric($result['id']);
self::assertIsArray($result);
self::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());
self::assertTrue($client->getResponse()->isSuccessful());
$result = json_decode($client->getResponse()->getContent(), true);
$this->assertIsArray($result);
$this->assertIsNumeric($result['id']);
self::assertIsArray($result);
self::assertIsNumeric($result['id']);
self::assertCount(1, $result['customers']);
$this->request($client, '/api/teams/' . $result['id'] . '/customers/1', 'DELETE');
$this->assertTrue($client->getResponse()->isSuccessful());
self::assertTrue($client->getResponse()->isSuccessful());
$result = json_decode($client->getResponse()->getContent(), true);
$this->assertIsArray($result);
$this->assertIsNumeric($result['id']);
$this->assertIsArray($result);
self::assertIsArray($result);
self::assertIsNumeric($result['id']);
self::assertIsArray($result);
self::assertApiResponseTypeStructure('TeamEntity', $result);
$this->assertIsArray($result['customers']);
self::assertIsArray($result['customers']);
self::assertCount(0, $result['customers']);
/** @var EntityManager $em */
@ -488,10 +488,10 @@ class TeamControllerTest extends APIControllerBaseTest
],
];
$this->request($client, '/api/teams', 'POST', [], json_encode($data));
$this->assertTrue($client->getResponse()->isSuccessful());
self::assertTrue($client->getResponse()->isSuccessful());
$result = json_decode($client->getResponse()->getContent(), true);
$this->assertIsArray($result);
$this->assertIsNumeric($result['id']);
self::assertIsArray($result);
self::assertIsNumeric($result['id']);
// team not found
$this->assertNotFoundForDelete($client, '/api/teams/999/customers/999');
@ -513,20 +513,20 @@ class TeamControllerTest extends APIControllerBaseTest
],
];
$this->request($client, '/api/teams', 'POST', [], json_encode($data));
$this->assertTrue($client->getResponse()->isSuccessful());
self::assertTrue($client->getResponse()->isSuccessful());
$result = json_decode($client->getResponse()->getContent(), true);
$this->assertIsArray($result);
$this->assertIsNumeric($result['id']);
self::assertIsArray($result);
self::assertIsNumeric($result['id']);
self::assertCount(0, $result['projects']);
$this->request($client, '/api/teams/' . $result['id'] . '/projects/1', 'POST');
$this->assertTrue($client->getResponse()->isSuccessful());
self::assertTrue($client->getResponse()->isSuccessful());
$result = json_decode($client->getResponse()->getContent(), true);
$this->assertIsArray($result);
self::assertIsArray($result);
self::assertApiResponseTypeStructure('TeamEntity', $result);
$this->assertIsArray($result['projects']);
self::assertIsArray($result['projects']);
self::assertCount(1, $result['projects']);
$this->assertIsArray($result['projects'][0]);
self::assertIsArray($result['projects'][0]);
self::assertEquals(1, $result['projects'][0]['id']);
}
@ -541,10 +541,10 @@ class TeamControllerTest extends APIControllerBaseTest
],
];
$this->request($client, '/api/teams', 'POST', [], json_encode($data));
$this->assertTrue($client->getResponse()->isSuccessful());
self::assertTrue($client->getResponse()->isSuccessful());
$result = json_decode($client->getResponse()->getContent(), true);
$this->assertIsArray($result);
$this->assertIsNumeric($result['id']);
self::assertIsArray($result);
self::assertIsNumeric($result['id']);
// team not found
$this->assertEntityNotFoundForPost($client, '/api/teams/999/projects/999');
@ -556,10 +556,10 @@ class TeamControllerTest extends APIControllerBaseTest
// add project
$this->request($client, '/api/teams/' . $result['id'] . '/projects/1', 'POST');
$this->assertTrue($client->getResponse()->isSuccessful());
self::assertTrue($client->getResponse()->isSuccessful());
$result = json_decode($client->getResponse()->getContent(), true);
$this->assertIsArray($result);
$this->assertIsNumeric($result['id']);
self::assertIsArray($result);
self::assertIsNumeric($result['id']);
self::assertCount(1, $result['projects']);
// cannot add existing project
@ -579,27 +579,27 @@ class TeamControllerTest extends APIControllerBaseTest
],
];
$this->request($client, '/api/teams', 'POST', [], json_encode($data));
$this->assertTrue($client->getResponse()->isSuccessful());
self::assertTrue($client->getResponse()->isSuccessful());
$result = json_decode($client->getResponse()->getContent(), true);
$this->assertIsArray($result);
$this->assertIsNumeric($result['id']);
self::assertIsArray($result);
self::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());
self::assertTrue($client->getResponse()->isSuccessful());
$result = json_decode($client->getResponse()->getContent(), true);
$this->assertIsArray($result);
$this->assertIsArray($result['projects']);
self::assertIsArray($result);
self::assertIsArray($result['projects']);
self::assertCount(1, $result['projects']);
$this->request($client, '/api/teams/' . $result['id'] . '/projects/1', 'DELETE');
$this->assertTrue($client->getResponse()->isSuccessful());
self::assertTrue($client->getResponse()->isSuccessful());
$result = json_decode($client->getResponse()->getContent(), true);
$this->assertIsArray($result);
self::assertIsArray($result);
self::assertApiResponseTypeStructure('TeamEntity', $result);
$this->assertIsArray($result['projects']);
self::assertIsArray($result['projects']);
self::assertCount(0, $result['projects']);
/** @var EntityManager $em */
@ -622,10 +622,10 @@ class TeamControllerTest extends APIControllerBaseTest
],
];
$this->request($client, '/api/teams', 'POST', [], json_encode($data));
$this->assertTrue($client->getResponse()->isSuccessful());
self::assertTrue($client->getResponse()->isSuccessful());
$result = json_decode($client->getResponse()->getContent(), true);
$this->assertIsArray($result);
$this->assertIsNumeric($result['id']);
self::assertIsArray($result);
self::assertIsNumeric($result['id']);
// team not found
$this->assertNotFoundForDelete($client, '/api/teams/999/projects/999');
@ -647,20 +647,20 @@ class TeamControllerTest extends APIControllerBaseTest
],
];
$this->request($client, '/api/teams', 'POST', [], json_encode($data));
$this->assertTrue($client->getResponse()->isSuccessful());
self::assertTrue($client->getResponse()->isSuccessful());
$result = json_decode($client->getResponse()->getContent(), true);
$this->assertIsArray($result);
$this->assertIsNumeric($result['id']);
self::assertIsArray($result);
self::assertIsNumeric($result['id']);
self::assertCount(0, $result['activities']);
$this->request($client, '/api/teams/' . $result['id'] . '/activities/1', 'POST');
$this->assertTrue($client->getResponse()->isSuccessful());
self::assertTrue($client->getResponse()->isSuccessful());
$result = json_decode($client->getResponse()->getContent(), true);
$this->assertIsArray($result);
self::assertIsArray($result);
self::assertApiResponseTypeStructure('TeamEntity', $result);
$this->assertIsArray($result['activities']);
self::assertIsArray($result['activities']);
self::assertCount(1, $result['activities']);
$this->assertIsArray($result['activities'][0]);
self::assertIsArray($result['activities'][0]);
self::assertEquals(1, $result['activities'][0]['id']);
}
@ -675,10 +675,10 @@ class TeamControllerTest extends APIControllerBaseTest
],
];
$this->request($client, '/api/teams', 'POST', [], json_encode($data));
$this->assertTrue($client->getResponse()->isSuccessful());
self::assertTrue($client->getResponse()->isSuccessful());
$result = json_decode($client->getResponse()->getContent(), true);
$this->assertIsArray($result);
$this->assertIsNumeric($result['id']);
self::assertIsArray($result);
self::assertIsNumeric($result['id']);
// team not found
$this->assertEntityNotFoundForPost($client, '/api/teams/999/activities/999');
@ -688,10 +688,10 @@ class TeamControllerTest extends APIControllerBaseTest
// add activity
$this->request($client, '/api/teams/' . $result['id'] . '/activities/1', 'POST');
$this->assertTrue($client->getResponse()->isSuccessful());
self::assertTrue($client->getResponse()->isSuccessful());
$result = json_decode($client->getResponse()->getContent(), true);
$this->assertIsArray($result);
$this->assertIsNumeric($result['id']);
self::assertIsArray($result);
self::assertIsNumeric($result['id']);
self::assertCount(1, $result['activities']);
// cannot add existing activity
@ -711,27 +711,27 @@ class TeamControllerTest extends APIControllerBaseTest
],
];
$this->request($client, '/api/teams', 'POST', [], json_encode($data));
$this->assertTrue($client->getResponse()->isSuccessful());
self::assertTrue($client->getResponse()->isSuccessful());
$result = json_decode($client->getResponse()->getContent(), true);
$this->assertIsArray($result);
$this->assertIsArray($result['activities']);
self::assertIsArray($result);
self::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());
self::assertTrue($client->getResponse()->isSuccessful());
$result = json_decode($client->getResponse()->getContent(), true);
$this->assertIsArray($result);
$this->assertIsNumeric($result['id']);
self::assertIsArray($result);
self::assertIsNumeric($result['id']);
self::assertCount(1, $result['activities']);
$this->request($client, '/api/teams/' . $result['id'] . '/activities/1', 'DELETE');
$this->assertTrue($client->getResponse()->isSuccessful());
self::assertTrue($client->getResponse()->isSuccessful());
$result = json_decode($client->getResponse()->getContent(), true);
$this->assertIsArray($result);
self::assertIsArray($result);
self::assertApiResponseTypeStructure('TeamEntity', $result);
$this->assertIsArray($result['activities']);
self::assertIsArray($result['activities']);
self::assertCount(0, $result['activities']);
}
@ -748,10 +748,10 @@ class TeamControllerTest extends APIControllerBaseTest
],
];
$this->request($client, '/api/teams', 'POST', [], json_encode($data));
$this->assertTrue($client->getResponse()->isSuccessful());
self::assertTrue($client->getResponse()->isSuccessful());
$result = json_decode($client->getResponse()->getContent(), true);
$this->assertIsArray($result);
$this->assertIsNumeric($result['id']);
self::assertIsArray($result);
self::assertIsNumeric($result['id']);
// team not found
$this->assertNotFoundForDelete($client, '/api/teams/999/activities/9999');

View file

@ -26,7 +26,7 @@ use Symfony\Component\HttpFoundation\Response;
/**
* @group integration
*/
class TimesheetControllerTest extends APIControllerBaseTest
class TimesheetControllerTest extends APIControllerBaseTestCase
{
public const DATE_FORMAT = 'Y-m-d H:i:s';
public const DATE_FORMAT_HTML5 = 'Y-m-d\TH:i:s';
@ -64,7 +64,7 @@ class TimesheetControllerTest extends APIControllerBaseTest
self::assertIsArray($result);
self::assertNotEmpty($result);
self::assertEquals(10, \count($result));
$this->assertIsArray($result[0]);
self::assertIsArray($result[0]);
self::assertApiResponseTypeStructure('TimesheetCollection', $result[0]);
}
@ -81,7 +81,7 @@ class TimesheetControllerTest extends APIControllerBaseTest
self::assertIsArray($result);
self::assertNotEmpty($result);
self::assertEquals(10, \count($result));
$this->assertIsArray($result[0]);
self::assertIsArray($result[0]);
self::assertApiResponseTypeStructure('TimesheetCollectionFull', $result[0]);
}
@ -106,7 +106,7 @@ class TimesheetControllerTest extends APIControllerBaseTest
self::assertIsArray($result);
self::assertNotEmpty($result);
self::assertEquals(10, \count($result));
$this->assertIsArray($result[0]);
self::assertIsArray($result[0]);
self::assertApiResponseTypeStructure('TimesheetCollection', $result[0]);
$query = ['users' => [2]];
@ -119,7 +119,7 @@ class TimesheetControllerTest extends APIControllerBaseTest
self::assertIsArray($result);
self::assertNotEmpty($result);
self::assertEquals(10, \count($result));
$this->assertIsArray($result[0]);
self::assertIsArray($result[0]);
self::assertApiResponseTypeStructure('TimesheetCollection', $result[0]);
}
@ -167,7 +167,7 @@ class TimesheetControllerTest extends APIControllerBaseTest
self::assertIsArray($result);
self::assertNotEmpty($result);
self::assertEquals(10, \count($result));
$this->assertIsArray($result[0]);
self::assertIsArray($result[0]);
self::assertApiResponseTypeStructure('TimesheetCollection', $result[0]);
}
@ -192,7 +192,7 @@ class TimesheetControllerTest extends APIControllerBaseTest
self::assertIsArray($result);
self::assertNotEmpty($result);
self::assertEquals(17, \count($result));
$this->assertIsArray($result[0]);
self::assertIsArray($result[0]);
self::assertApiResponseTypeStructure('TimesheetCollection', $result[0]);
}
@ -207,7 +207,7 @@ class TimesheetControllerTest extends APIControllerBaseTest
$result = json_decode($content, true);
self::assertIsArray($result);
$this->assertEmpty($result);
self::assertEmpty($result);
}
public function testGetCollectionWithQuery(): void
@ -244,7 +244,7 @@ class TimesheetControllerTest extends APIControllerBaseTest
self::assertIsArray($result);
self::assertNotEmpty($result);
self::assertEquals(4, \count($result));
$this->assertIsArray($result[0]);
self::assertIsArray($result[0]);
self::assertApiResponseTypeStructure('TimesheetCollection', $result[0]);
}
@ -297,7 +297,7 @@ class TimesheetControllerTest extends APIControllerBaseTest
self::assertIsArray($result);
self::assertNotEmpty($result);
self::assertEquals(5, \count($result));
$this->assertIsArray($result[0]);
self::assertIsArray($result[0]);
self::assertApiResponseTypeStructure('TimesheetCollection', $result[0]);
}
@ -333,7 +333,7 @@ class TimesheetControllerTest extends APIControllerBaseTest
self::assertIsArray($result);
self::assertNotEmpty($result);
self::assertEquals(7, \count($result));
$this->assertIsArray($result[0]);
self::assertIsArray($result[0]);
self::assertApiResponseTypeStructure('TimesheetCollection', $result[0]);
$query = [
@ -352,7 +352,7 @@ class TimesheetControllerTest extends APIControllerBaseTest
self::assertIsArray($result);
self::assertNotEmpty($result);
self::assertEquals(10, \count($result));
$this->assertIsArray($result[0]);
self::assertIsArray($result[0]);
self::assertApiResponseTypeStructure('TimesheetCollection', $result[0]);
$query = [
@ -369,7 +369,7 @@ class TimesheetControllerTest extends APIControllerBaseTest
self::assertIsArray($result);
self::assertNotEmpty($result);
self::assertEquals(17, \count($result));
$this->assertIsArray($result[0]);
self::assertIsArray($result[0]);
self::assertApiResponseTypeStructure('TimesheetCollection', $result[0]);
}
@ -440,7 +440,7 @@ class TimesheetControllerTest extends APIControllerBaseTest
$client = $this->getClientForAuthenticatedUser(User::ROLE_USER);
$this->importFixtureForUser(User::ROLE_USER);
$timesheets = $this->importFixtureForUser(User::ROLE_ADMIN);
$this->assertCount(10, $timesheets);
self::assertCount(10, $timesheets);
$this->assertApiAccessDenied($client, '/api/timesheets/' . $timesheets[0]->getId(), 'Access denied.');
}
@ -480,7 +480,7 @@ class TimesheetControllerTest extends APIControllerBaseTest
$json = json_encode($data);
self::assertIsString($json);
$this->request($client, '/api/timesheets', 'POST', [], $json);
$this->assertTrue($client->getResponse()->isSuccessful());
self::assertTrue($client->getResponse()->isSuccessful());
$content = $client->getResponse()->getContent();
self::assertIsString($content);
@ -489,9 +489,9 @@ class TimesheetControllerTest extends APIControllerBaseTest
self::assertIsArray($result);
self::assertApiResponseTypeStructure('TimesheetEntity', $result);
self::assertNotEmpty($result['id']);
$this->assertTrue($result['duration'] == 28800 || $result['duration'] == 28860); // 1 minute rounding might be applied
self::assertTrue($result['duration'] == 28800 || $result['duration'] == 28860); // 1 minute rounding might be applied
self::assertEquals(2016, $result['rate']);
$this->assertFalse($result['billable']);
self::assertFalse($result['billable']);
}
public function testPostActionWithFullExpandedResponse(): void
@ -511,7 +511,7 @@ class TimesheetControllerTest extends APIControllerBaseTest
$json = json_encode($data);
self::assertIsString($json);
$this->request($client, '/api/timesheets?full=true', 'POST', [], $json);
$this->assertTrue($client->getResponse()->isSuccessful());
self::assertTrue($client->getResponse()->isSuccessful());
$content = $client->getResponse()->getContent();
self::assertIsString($content);
@ -520,9 +520,9 @@ class TimesheetControllerTest extends APIControllerBaseTest
self::assertIsArray($result);
self::assertApiResponseTypeStructure('TimesheetExpanded', $result);
self::assertNotEmpty($result['id']);
$this->assertTrue($result['duration'] == 28800 || $result['duration'] == 28860); // 1 minute rounding might be applied
self::assertTrue($result['duration'] == 28800 || $result['duration'] == 28860); // 1 minute rounding might be applied
self::assertEquals(2016, $result['rate']);
$this->assertTrue($result['billable']);
self::assertTrue($result['billable']);
}
public function testPostActionForDifferentUser(): void
@ -545,7 +545,7 @@ class TimesheetControllerTest extends APIControllerBaseTest
$json = json_encode($data);
self::assertIsString($json);
$this->request($client, '/api/timesheets', 'POST', [], $json);
$this->assertTrue($client->getResponse()->isSuccessful());
self::assertTrue($client->getResponse()->isSuccessful());
$content = $client->getResponse()->getContent();
self::assertIsString($content);
@ -556,7 +556,7 @@ class TimesheetControllerTest extends APIControllerBaseTest
self::assertNotEmpty($result['id']);
self::assertEquals($user->getId(), $result['user']);
$this->assertNotEquals($admin->getId(), $result['user']);
$this->assertTrue($result['billable']);
self::assertTrue($result['billable']);
}
// check for project, as this is a required field. It will not be included in the select, as it is
@ -711,7 +711,7 @@ class TimesheetControllerTest extends APIControllerBaseTest
$json = json_encode($data);
self::assertIsString($json);
$this->request($client, '/api/timesheets', 'POST', [], $json);
$this->assertTrue($client->getResponse()->isSuccessful());
self::assertTrue($client->getResponse()->isSuccessful());
$content = $client->getResponse()->getContent();
self::assertIsString($content);
@ -719,7 +719,7 @@ class TimesheetControllerTest extends APIControllerBaseTest
self::assertIsArray($result);
self::assertApiResponseTypeStructure('TimesheetEntity', $result);
$this->assertFalse($result['billable']);
self::assertFalse($result['billable']);
}
public function testPostActionWithNonBillableCustomerExplicit(): void
@ -752,7 +752,7 @@ class TimesheetControllerTest extends APIControllerBaseTest
$json = json_encode($data);
self::assertIsString($json);
$this->request($client, '/api/timesheets', 'POST', [], $json);
$this->assertTrue($client->getResponse()->isSuccessful());
self::assertTrue($client->getResponse()->isSuccessful());
$content = $client->getResponse()->getContent();
self::assertIsString($content);
@ -761,10 +761,10 @@ class TimesheetControllerTest extends APIControllerBaseTest
self::assertIsArray($result);
self::assertApiResponseTypeStructure('TimesheetEntity', $result);
// explicit overwritten values win!
$this->assertTrue($result['billable']);
self::assertTrue($result['billable']);
}
public function getTrackingModeTestData(): array
public static function getTrackingModeTestData(): array
{
return [
['duration_fixed_begin', User::ROLE_USER, false],
@ -800,7 +800,7 @@ class TimesheetControllerTest extends APIControllerBaseTest
$response = $client->getResponse();
if ($showTimes) {
$this->assertTrue($response->isSuccessful());
self::assertTrue($response->isSuccessful());
} else {
$this->assertApiCallValidationError($response, [], true, [], [], ['begin', 'end']);
}
@ -822,7 +822,7 @@ class TimesheetControllerTest extends APIControllerBaseTest
$json = json_encode($data);
self::assertIsString($json);
$this->request($client, '/api/timesheets/' . $timesheets[0]->getId(), 'PATCH', [], $json);
$this->assertTrue($client->getResponse()->isSuccessful());
self::assertTrue($client->getResponse()->isSuccessful());
$content = $client->getResponse()->getContent();
self::assertIsString($content);
@ -833,7 +833,7 @@ class TimesheetControllerTest extends APIControllerBaseTest
self::assertNotEmpty($result['id']);
self::assertEquals(25200, $result['duration']);
self::assertEquals('foo', $result['description']);
$this->assertFalse($result['billable']);
self::assertFalse($result['billable']);
}
public function testPatchActionWithInvalidUser(): void
@ -912,9 +912,9 @@ class TimesheetControllerTest extends APIControllerBaseTest
$id = $result['id'];
$this->request($client, '/api/timesheets/' . $id, 'DELETE');
$this->assertTrue($client->getResponse()->isSuccessful());
self::assertTrue($client->getResponse()->isSuccessful());
self::assertEquals(Response::HTTP_NO_CONTENT, $client->getResponse()->getStatusCode());
$this->assertEmpty($client->getResponse()->getContent());
self::assertEmpty($client->getResponse()->getContent());
}
public function testDeleteActionWithUnknownTimesheet(): void
@ -929,9 +929,9 @@ class TimesheetControllerTest extends APIControllerBaseTest
$timesheets = $this->importFixtureForUser(User::ROLE_USER);
$this->request($client, '/api/timesheets/' . $timesheets[0]->getId(), 'DELETE');
$this->assertTrue($client->getResponse()->isSuccessful());
self::assertTrue($client->getResponse()->isSuccessful());
self::assertEquals(Response::HTTP_NO_CONTENT, $client->getResponse()->getStatusCode());
$this->assertEmpty($client->getResponse()->getContent());
self::assertEmpty($client->getResponse()->getContent());
}
public function testDeleteActionWithoutAuthorization(): void
@ -979,7 +979,7 @@ class TimesheetControllerTest extends APIControllerBaseTest
$em->flush();
$this->request($client, '/api/timesheets/' . $id, 'DELETE');
$this->assertTrue($client->getResponse()->isSuccessful());
self::assertTrue($client->getResponse()->isSuccessful());
}
public function testGetRecentAction(): void
@ -1012,7 +1012,7 @@ class TimesheetControllerTest extends APIControllerBaseTest
self::assertIsArray($result);
self::assertNotEmpty($result);
self::assertEquals(1, \count($result));
$this->assertIsArray($result[0]);
self::assertIsArray($result[0]);
self::assertApiResponseTypeStructure('TimesheetCollectionFull', $result[0]);
}
@ -1030,7 +1030,7 @@ class TimesheetControllerTest extends APIControllerBaseTest
$this->importFixture($fixture);
$this->request($client, '/api/timesheets/active');
$this->assertTrue($client->getResponse()->isSuccessful());
self::assertTrue($client->getResponse()->isSuccessful());
$content = $client->getResponse()->getContent();
self::assertIsString($content);
@ -1038,7 +1038,7 @@ class TimesheetControllerTest extends APIControllerBaseTest
self::assertEquals(3, \count($result));
foreach ($result as $timesheet) {
$this->assertIsArray($timesheet);
self::assertIsArray($timesheet);
self::assertApiResponseTypeStructure('TimesheetCollectionFull', $timesheet);
}
}
@ -1063,7 +1063,7 @@ class TimesheetControllerTest extends APIControllerBaseTest
$id = $timesheets[0]->getId();
$this->request($client, '/api/timesheets/' . $id . '/stop', 'PATCH');
$this->assertTrue($client->getResponse()->isSuccessful());
self::assertTrue($client->getResponse()->isSuccessful());
$content = $client->getResponse()->getContent();
self::assertIsString($content);
@ -1076,7 +1076,7 @@ class TimesheetControllerTest extends APIControllerBaseTest
$em = $this->getEntityManager();
/** @var Timesheet $timesheet */
$timesheet = $em->getRepository(Timesheet::class)->find($id);
$this->assertInstanceOf(\DateTime::class, $timesheet->getEnd());
self::assertInstanceOf(\DateTime::class, $timesheet->getEnd());
}
public function testStopActionTriggersValidationOnLongRunning(): void
@ -1157,7 +1157,7 @@ class TimesheetControllerTest extends APIControllerBaseTest
self::assertIsArray($result);
self::assertNotEmpty($result);
self::assertEquals(10, \count($result));
$this->assertIsArray($result[0]);
self::assertIsArray($result[0]);
self::assertApiResponseTypeStructure('TimesheetCollection', $result[0]);
$query = ['tags' => ['Test', 'Admin']];
@ -1170,7 +1170,7 @@ class TimesheetControllerTest extends APIControllerBaseTest
self::assertIsArray($result);
self::assertNotEmpty($result);
self::assertEquals(10, \count($result));
$this->assertIsArray($result[0]);
self::assertIsArray($result[0]);
self::assertApiResponseTypeStructure('TimesheetCollection', $result[0]);
$query = ['tags' => ['Nothing-2-see', 'not-existing-here']];
@ -1193,26 +1193,26 @@ class TimesheetControllerTest extends APIControllerBaseTest
$this->request($client, '/api/timesheets/' . $id, 'PATCH', [], $json);
$this->request($client, '/api/timesheets/' . $id . '/restart', 'PATCH');
$this->assertTrue($client->getResponse()->isSuccessful());
self::assertTrue($client->getResponse()->isSuccessful());
$content = $client->getResponse()->getContent();
self::assertIsString($content);
$result = json_decode($content, true);
$this->assertIsArray($result);
self::assertIsArray($result);
self::assertApiResponseTypeStructure('TimesheetEntity', $result);
$this->assertEmpty($result['description']);
$this->assertEmpty($result['tags']);
self::assertEmpty($result['description']);
self::assertEmpty($result['tags']);
$em = $this->getEntityManager();
/** @var Timesheet $timesheet */
$timesheet = $em->getRepository(Timesheet::class)->find($result['id']);
$this->assertInstanceOf(\DateTime::class, $timesheet->getBegin());
$this->assertNull($timesheet->getEnd());
self::assertInstanceOf(\DateTime::class, $timesheet->getBegin());
self::assertNull($timesheet->getEnd());
self::assertEquals(1, $timesheet->getActivity()->getId());
self::assertEquals(1, $timesheet->getProject()->getId());
$this->assertEmpty($timesheet->getDescription());
$this->assertEmpty($timesheet->getTags());
self::assertEmpty($timesheet->getDescription());
self::assertEmpty($timesheet->getTags());
}
public function testRestartActionWithBegin(): void
@ -1231,27 +1231,27 @@ class TimesheetControllerTest extends APIControllerBaseTest
$begin = new \DateTime('2019-11-27 13:55:00');
$this->request($client, '/api/timesheets/' . $id . '/restart', 'PATCH', ['begin' => $begin->format(BaseApiController::DATE_FORMAT_PHP)]);
$this->assertTrue($client->getResponse()->isSuccessful());
self::assertTrue($client->getResponse()->isSuccessful());
$content = $client->getResponse()->getContent();
self::assertIsString($content);
$result = json_decode($content, true);
$this->assertIsArray($result);
self::assertIsArray($result);
self::assertApiResponseTypeStructure('TimesheetEntity', $result);
$this->assertEmpty($result['description']);
$this->assertEmpty($result['tags']);
self::assertEmpty($result['description']);
self::assertEmpty($result['tags']);
$em = $this->getEntityManager();
/** @var Timesheet $timesheet */
$timesheet = $em->getRepository(Timesheet::class)->find($result['id']);
$this->assertInstanceOf(\DateTime::class, $timesheet->getBegin());
self::assertInstanceOf(\DateTime::class, $timesheet->getBegin());
self::assertEquals($begin->format(BaseApiController::DATE_FORMAT_PHP), $timesheet->getBegin()->format(BaseApiController::DATE_FORMAT_PHP));
$this->assertNull($timesheet->getEnd());
self::assertNull($timesheet->getEnd());
self::assertEquals(1, $timesheet->getActivity()->getId());
self::assertEquals(1, $timesheet->getProject()->getId());
$this->assertEmpty($timesheet->getDescription());
$this->assertEmpty($timesheet->getTags());
self::assertEmpty($timesheet->getDescription());
self::assertEmpty($timesheet->getTags());
}
public function testRestartActionWithCopyData(): void
@ -1277,13 +1277,13 @@ class TimesheetControllerTest extends APIControllerBaseTest
self::assertEquals('foo', $timesheet->getDescription());
$this->request($client, '/api/timesheets/' . $id . '/restart', 'PATCH', ['copy' => 'all']);
$this->assertTrue($client->getResponse()->isSuccessful());
self::assertTrue($client->getResponse()->isSuccessful());
$content = $client->getResponse()->getContent();
self::assertIsString($content);
$result = json_decode($content, true);
$this->assertIsArray($result);
self::assertIsArray($result);
self::assertApiResponseTypeStructure('TimesheetEntity', $result);
self::assertEquals('foo', $result['description']);
self::assertEquals([['name' => 'sdfsdf', 'value' => 'nnnnn'], ['name' => '1234567890', 'value' => '1234567890']], $result['metaFields']);
@ -1292,8 +1292,8 @@ class TimesheetControllerTest extends APIControllerBaseTest
$em = $this->getEntityManager();
/** @var Timesheet $timesheet */
$timesheet = $em->getRepository(Timesheet::class)->find($result['id']);
$this->assertInstanceOf(\DateTime::class, $timesheet->getBegin());
$this->assertNull($timesheet->getEnd());
self::assertInstanceOf(\DateTime::class, $timesheet->getBegin());
self::assertNull($timesheet->getEnd());
self::assertEquals(1, $timesheet->getActivity()->getId());
self::assertEquals(1, $timesheet->getProject()->getId());
self::assertEquals('foo', $timesheet->getDescription());
@ -1343,7 +1343,7 @@ class TimesheetControllerTest extends APIControllerBaseTest
$json = json_encode($data);
self::assertIsString($json);
$this->request($client, '/api/timesheets', 'POST', [], $json);
$this->assertTrue($client->getResponse()->isSuccessful());
self::assertTrue($client->getResponse()->isSuccessful());
$content = $client->getResponse()->getContent();
self::assertIsString($content);
@ -1352,12 +1352,12 @@ class TimesheetControllerTest extends APIControllerBaseTest
self::assertIsArray($result);
self::assertApiResponseTypeStructure('TimesheetEntity', $result);
self::assertNotEmpty($result['id']);
$this->assertTrue($result['duration'] == 28800 || $result['duration'] == 28860); // 1 minute rounding might be applied
self::assertTrue($result['duration'] == 28800 || $result['duration'] == 28860); // 1 minute rounding might be applied
self::assertEquals(2016, $result['rate']);
$id = $result['id'];
self::assertIsNumeric($id);
$this->request($client, '/api/timesheets/' . $id . '/duplicate', 'PATCH');
$this->assertTrue($client->getResponse()->isSuccessful());
self::assertTrue($client->getResponse()->isSuccessful());
$content = $client->getResponse()->getContent();
self::assertIsString($content);
@ -1366,7 +1366,7 @@ class TimesheetControllerTest extends APIControllerBaseTest
self::assertIsArray($result);
self::assertApiResponseTypeStructure('TimesheetEntity', $result);
self::assertNotEmpty($result['id']);
$this->assertTrue($result['duration'] == 28800 || $result['duration'] == 28860); // 1 minute rounding might be applied
self::assertTrue($result['duration'] == 28800 || $result['duration'] == 28860); // 1 minute rounding might be applied
self::assertEquals(2016, $result['rate']);
}
@ -1384,29 +1384,29 @@ class TimesheetControllerTest extends APIControllerBaseTest
$em = $this->getEntityManager();
/** @var Timesheet $timesheet */
$timesheet = $em->getRepository(Timesheet::class)->find($id);
$this->assertFalse($timesheet->isExported());
self::assertFalse($timesheet->isExported());
$this->request($client, '/api/timesheets/' . $id . '/export', 'PATCH');
$this->assertTrue($client->getResponse()->isSuccessful());
self::assertTrue($client->getResponse()->isSuccessful());
$content = $client->getResponse()->getContent();
self::assertIsString($content);
$result = json_decode($content, true);
$this->assertIsArray($result);
self::assertIsArray($result);
self::assertApiResponseTypeStructure('TimesheetEntity', $result);
$em->clear();
/** @var Timesheet $timesheet */
$timesheet = $em->getRepository(Timesheet::class)->find($id);
$this->assertTrue($timesheet->isExported());
self::assertTrue($timesheet->isExported());
$this->request($client, '/api/timesheets/' . $id . '/export', 'PATCH');
$this->assertTrue($client->getResponse()->isSuccessful());
self::assertTrue($client->getResponse()->isSuccessful());
$em->clear();
$timesheet = $em->getRepository(Timesheet::class)->find($id);
$this->assertFalse($timesheet->isExported());
self::assertFalse($timesheet->isExported());
}
public function testExportNotAllowedForUser(): void
@ -1482,13 +1482,13 @@ class TimesheetControllerTest extends APIControllerBaseTest
self::assertIsString($json);
$this->request($client, '/api/timesheets/' . $id . '/meta', 'PATCH', [], $json);
$this->assertTrue($client->getResponse()->isSuccessful());
self::assertTrue($client->getResponse()->isSuccessful());
$content = $client->getResponse()->getContent();
self::assertIsString($content);
$result = json_decode($content, true);
$this->assertIsArray($result);
self::assertIsArray($result);
self::assertApiResponseTypeStructure('TimesheetEntity', $result);
self::assertEquals(['name' => 'metatestmock', 'value' => 'another,testing,bar'], $result['metaFields'][0]);

View file

@ -14,7 +14,7 @@ use App\Entity\User;
/**
* @group integration
*/
class UserControllerTest extends APIControllerBaseTest
class UserControllerTest extends APIControllerBaseTestCase
{
public function testIsSecure(): void
{
@ -24,7 +24,7 @@ class UserControllerTest extends APIControllerBaseTest
/**
* @return array<array<string>>
*/
public function getRoleTestData(): array
public static function getRoleTestData(): array
{
return [
[User::ROLE_USER],
@ -46,14 +46,14 @@ class UserControllerTest extends APIControllerBaseTest
$client = $this->getClientForAuthenticatedUser(User::ROLE_SUPER_ADMIN);
$this->assertAccessIsGranted($client, '/api/users');
$content = $client->getResponse()->getContent();
$this->assertIsString($content);
self::assertIsString($content);
$result = json_decode($content, true);
$this->assertIsArray($result);
$this->assertNotEmpty($result);
$this->assertEquals(7, \count($result));
self::assertIsArray($result);
self::assertNotEmpty($result);
self::assertEquals(7, \count($result));
foreach ($result as $user) {
$this->assertIsArray($user);
self::assertIsArray($user);
self::assertApiResponseTypeStructure('UserCollection', $user);
}
}
@ -64,14 +64,14 @@ class UserControllerTest extends APIControllerBaseTest
$this->assertAccessIsGranted($client, '/api/users?full=true');
$content = $client->getResponse()->getContent();
$this->assertIsString($content);
self::assertIsString($content);
$result = json_decode($content, true);
$this->assertIsArray($result);
$this->assertNotEmpty($result);
$this->assertEquals(7, \count($result));
self::assertIsArray($result);
self::assertNotEmpty($result);
self::assertEquals(7, \count($result));
foreach ($result as $user) {
$this->assertIsArray($user);
self::assertIsArray($user);
self::assertApiResponseTypeStructure('UserEntity', $user);
}
}
@ -81,14 +81,14 @@ class UserControllerTest extends APIControllerBaseTest
$client = $this->getClientForAuthenticatedUser(User::ROLE_SUPER_ADMIN);
$this->assertAccessIsGranted($client, '/api/users', 'GET', ['visible' => 2, 'orderBy' => 'email', 'order' => 'DESC', 'term' => 'chris']);
$content = $client->getResponse()->getContent();
$this->assertIsString($content);
self::assertIsString($content);
$result = json_decode($content, true);
$this->assertIsArray($result);
$this->assertNotEmpty($result);
$this->assertEquals(1, \count($result));
self::assertIsArray($result);
self::assertNotEmpty($result);
self::assertEquals(1, \count($result));
foreach ($result as $user) {
$this->assertIsArray($user);
self::assertIsArray($user);
self::assertApiResponseTypeStructure('UserCollection', $user);
}
}
@ -98,14 +98,14 @@ class UserControllerTest extends APIControllerBaseTest
$client = $this->getClientForAuthenticatedUser(User::ROLE_SUPER_ADMIN);
$this->assertAccessIsGranted($client, '/api/users', 'GET', ['visible' => 3, 'orderBy' => 'email', 'order' => 'DESC']);
$content = $client->getResponse()->getContent();
$this->assertIsString($content);
self::assertIsString($content);
$result = json_decode($content, true);
$this->assertIsArray($result);
$this->assertNotEmpty($result);
$this->assertEquals(8, \count($result));
self::assertIsArray($result);
self::assertNotEmpty($result);
self::assertEquals(8, \count($result));
foreach ($result as $user) {
$this->assertIsArray($user);
self::assertIsArray($user);
self::assertApiResponseTypeStructure('UserCollection', $user);
}
}
@ -115,10 +115,10 @@ class UserControllerTest extends APIControllerBaseTest
$client = $this->getClientForAuthenticatedUser(User::ROLE_SUPER_ADMIN);
$this->assertAccessIsGranted($client, '/api/users/1');
$content = $client->getResponse()->getContent();
$this->assertIsString($content);
self::assertIsString($content);
$result = json_decode($content, true);
$this->assertIsArray($result);
self::assertIsArray($result);
self::assertApiResponseTypeStructure('UserEntity', $result);
self::assertEquals('1', $result['id']);
self::assertEquals('CFO', $result['title']);
@ -130,10 +130,10 @@ class UserControllerTest extends APIControllerBaseTest
$client = $this->getClientForAuthenticatedUser(User::ROLE_SUPER_ADMIN);
$this->assertAccessIsGranted($client, '/api/users/me');
$content = $client->getResponse()->getContent();
$this->assertIsString($content);
self::assertIsString($content);
$result = json_decode($content, true);
$this->assertIsArray($result);
self::assertIsArray($result);
self::assertApiResponseTypeStructure('UserEntity', $result);
self::assertEquals('6', $result['id']);
self::assertEquals('Super Administrator', $result['title']);
@ -156,10 +156,10 @@ class UserControllerTest extends APIControllerBaseTest
$client = $this->getClientForAuthenticatedUser(User::ROLE_USER);
$this->assertAccessIsGranted($client, '/api/users/2');
$content = $client->getResponse()->getContent();
$this->assertIsString($content);
self::assertIsString($content);
$result = json_decode($content, true);
$this->assertIsArray($result);
self::assertIsArray($result);
self::assertApiResponseTypeStructure('UserEntity', $result);
}
@ -181,14 +181,14 @@ class UserControllerTest extends APIControllerBaseTest
],
];
$this->request($client, '/api/users', 'POST', [], json_encode($data));
$this->assertTrue($client->getResponse()->isSuccessful());
self::assertTrue($client->getResponse()->isSuccessful());
$content = $client->getResponse()->getContent();
$this->assertIsString($content);
self::assertIsString($content);
$result = json_decode($content, true);
$this->assertIsArray($result);
self::assertIsArray($result);
self::assertApiResponseTypeStructure('UserEntity', $result);
$this->assertNotEmpty($result['id']);
self::assertNotEmpty($result['id']);
self::assertEquals('foo', $result['username']);
self::assertEquals('asdfghjkl', $result['title']);
self::assertTrue($result['enabled']);
@ -216,7 +216,7 @@ class UserControllerTest extends APIControllerBaseTest
$this->request($client, '/api/users', 'POST', [], json_encode($data));
$response = $client->getResponse();
$this->assertEquals(400, $response->getStatusCode());
self::assertEquals(400, $response->getStatusCode());
$this->assertApiCallValidationError($response, ['plainPassword']);
}
@ -236,7 +236,7 @@ class UserControllerTest extends APIControllerBaseTest
$this->request($client, '/api/users', 'POST', [], json_encode($data));
$response = $client->getResponse();
$this->assertEquals(400, $response->getStatusCode());
self::assertEquals(400, $response->getStatusCode());
$this->assertApiCallValidationError($response, ['username', 'email', 'plainPassword', 'language', 'timezone', 'roles']);
}
@ -272,9 +272,9 @@ class UserControllerTest extends APIControllerBaseTest
],
];
$this->request($client, '/api/users', 'POST', [], json_encode($data));
$this->assertTrue($client->getResponse()->isSuccessful());
self::assertTrue($client->getResponse()->isSuccessful());
$content = $client->getResponse()->getContent();
$this->assertIsString($content);
self::assertIsString($content);
$result = json_decode($content, true);
self::assertFalse($result['enabled']);
@ -290,14 +290,14 @@ class UserControllerTest extends APIControllerBaseTest
$id = $result['id'];
self::assertIsNumeric($id);
$this->request($client, '/api/users/' . $id, 'PATCH', [], json_encode($data));
$this->assertTrue($client->getResponse()->isSuccessful());
self::assertTrue($client->getResponse()->isSuccessful());
$content = $client->getResponse()->getContent();
$this->assertIsString($content);
self::assertIsString($content);
$result = json_decode($content, true);
$this->assertIsArray($result);
self::assertIsArray($result);
self::assertApiResponseTypeStructure('UserEntity', $result);
$this->assertNotEmpty($result['id']);
self::assertNotEmpty($result['id']);
self::assertEquals('foo', $result['username']);
self::assertEquals('qwertzui', $result['title']);
self::assertTrue($result['enabled']);
@ -335,7 +335,7 @@ class UserControllerTest extends APIControllerBaseTest
$this->request($client, '/api/users/1', 'PATCH', [], json_encode($data));
$response = $client->getResponse();
$this->assertEquals(400, $response->getStatusCode());
self::assertEquals(400, $response->getStatusCode());
$this->assertApiCallValidationError($response, ['email', 'language', 'timezone', 'roles'], true);
}
}

View file

@ -25,17 +25,17 @@ class CalendarSourceTest extends TestCase
$sut->addOption('hello', false);
$sut->addOption('world', 123);
$this->assertEquals(CalendarSourceType::JSON, $sut->getType());
$this->assertEquals('json', $sut->getTypeName());
$this->assertEquals('0815', $sut->getId());
$this->assertEquals('askdjfhlaksjdhflaksjhdflkjasdlkfjh', $sut->getUri());
$this->assertEquals('#fffccc', $sut->getColor());
$this->assertEquals(['foo' => 'bar', 'hello' => false, 'world' => 123], $sut->getOptions());
self::assertEquals(CalendarSourceType::JSON, $sut->getType());
self::assertEquals('json', $sut->getTypeName());
self::assertEquals('0815', $sut->getId());
self::assertEquals('askdjfhlaksjdhflaksjhdflkjasdlkfjh', $sut->getUri());
self::assertEquals('#fffccc', $sut->getColor());
self::assertEquals(['foo' => 'bar', 'hello' => false, 'world' => 123], $sut->getOptions());
$sut = new CalendarSource(CalendarSourceType::TIMESHEET, '0815', 'askdjfhlaksjdhflaksjhdflkjasdlkfjh', null);
$this->assertEquals('0815', $sut->getId());
$this->assertEquals('askdjfhlaksjdhflaksjhdflkjasdlkfjh', $sut->getUri());
$this->assertNull($sut->getColor());
self::assertEquals('0815', $sut->getId());
self::assertEquals('askdjfhlaksjdhflaksjhdflkjasdlkfjh', $sut->getUri());
self::assertNull($sut->getColor());
}
}

View file

@ -21,14 +21,14 @@ class GoogleSourceTest extends TestCase
{
$sut = new GoogleSource('0815', 'askdjfhlaksjdhflaksjhdflkjasdlkfjh', '#fffccc');
$this->assertEquals('0815', $sut->getId());
$this->assertEquals('askdjfhlaksjdhflaksjhdflkjasdlkfjh', $sut->getUri());
$this->assertEquals('#fffccc', $sut->getColor());
self::assertEquals('0815', $sut->getId());
self::assertEquals('askdjfhlaksjdhflaksjhdflkjasdlkfjh', $sut->getUri());
self::assertEquals('#fffccc', $sut->getColor());
$sut = new GoogleSource('0815', 'askdjfhlaksjdhflaksjhdflkjasdlkfjh', null);
$this->assertEquals('0815', $sut->getId());
$this->assertEquals('askdjfhlaksjdhflaksjhdflkjasdlkfjh', $sut->getUri());
$this->assertNull($sut->getColor());
self::assertEquals('0815', $sut->getId());
self::assertEquals('askdjfhlaksjdhflaksjhdflkjasdlkfjh', $sut->getUri());
self::assertNull($sut->getColor());
}
}

View file

@ -27,12 +27,12 @@ class GoogleTest extends TestCase
$sut = new Google('qwertzuiop1234567890');
$this->assertEquals([], $sut->getSources());
$this->assertEquals('qwertzuiop1234567890', $sut->getApiKey());
self::assertEquals([], $sut->getSources());
self::assertEquals('qwertzuiop1234567890', $sut->getApiKey());
$sut = new Google('ewa6347865fg908ouhpoihui7f56', $sources);
$this->assertEquals($sources, $sut->getSources());
$this->assertEquals('ewa6347865fg908ouhpoihui7f56', $sut->getApiKey());
self::assertEquals($sources, $sut->getSources());
self::assertEquals('ewa6347865fg908ouhpoihui7f56', $sut->getApiKey());
}
}

View file

@ -25,12 +25,12 @@ class RecentActivitiesSourceTest extends TestCase
$sut = new RecentActivitiesSource($entries);
$this->assertEquals('calendar/drag-drop.html.twig', $sut->getBlockInclude());
$this->assertSame($entries, $sut->getEntries());
$this->assertEquals('POST', $sut->getMethod());
$this->assertEquals('post_timesheet', $sut->getRoute());
$this->assertEquals(['full' => 'true'], $sut->getRouteParams());
$this->assertEquals([], $sut->getRouteReplacer());
$this->assertEquals('recent.activities', $sut->getTitle());
self::assertEquals('calendar/drag-drop.html.twig', $sut->getBlockInclude());
self::assertSame($entries, $sut->getEntries());
self::assertEquals('POST', $sut->getMethod());
self::assertEquals('post_timesheet', $sut->getRoute());
self::assertEquals(['full' => 'true'], $sut->getRouteParams());
self::assertEquals([], $sut->getRouteReplacer());
self::assertEquals('recent.activities', $sut->getTitle());
}
}

View file

@ -41,12 +41,12 @@ class TimesheetEntryTest extends TestCase
$sut = new TimesheetEntry($timesheet, '#cccccc');
$this->assertEquals('a wonderful activity!!', $sut->getTitle());
$this->assertEquals('#cccccc', $sut->getColor());
$this->assertSame($project, $sut->getProject());
$this->assertSame($activity, $sut->getActivity());
$this->assertEquals('dd_timesheet', $sut->getBlockName());
$this->assertEquals($expectedData, $sut->getData());
self::assertEquals('a wonderful activity!!', $sut->getTitle());
self::assertEquals('#cccccc', $sut->getColor());
self::assertSame($project, $sut->getProject());
self::assertSame($activity, $sut->getActivity());
self::assertEquals('dd_timesheet', $sut->getBlockName());
self::assertEquals($expectedData, $sut->getData());
$expectedData = [
'activity' => null,
@ -57,7 +57,7 @@ class TimesheetEntryTest extends TestCase
$sut = new TimesheetEntry($timesheet, '#cccccc', true);
$this->assertEquals($expectedData, $sut->getData());
self::assertEquals($expectedData, $sut->getData());
}
public function testEmpty(): void
@ -71,11 +71,11 @@ class TimesheetEntryTest extends TestCase
$sut = new TimesheetEntry($timesheet, '#ddd');
$this->assertEquals('', $sut->getTitle());
$this->assertEquals('#ddd', $sut->getColor());
$this->assertNull($sut->getProject());
$this->assertNull($sut->getActivity());
$this->assertEquals($expectedData, $sut->getData());
self::assertEquals('', $sut->getTitle());
self::assertEquals('#ddd', $sut->getColor());
self::assertNull($sut->getProject());
self::assertNull($sut->getActivity());
self::assertEquals($expectedData, $sut->getData());
}
public function testGetTitle(): void

View file

@ -70,7 +70,7 @@ class ActivateUserCommandTest extends KernelTestCase
$commandTester = $this->callCommand('chris_user');
$output = $commandTester->getDisplay();
$this->assertStringContainsString('[OK] User "chris_user" has been activated.', $output);
self::assertStringContainsString('[OK] User "chris_user" has been activated.', $output);
$container = self::$kernel->getContainer();
/** @var Registry $doctrine */
@ -87,7 +87,7 @@ class ActivateUserCommandTest extends KernelTestCase
$commandTester = $this->callCommand('susan_super');
$output = $commandTester->getDisplay();
$this->assertStringContainsString('[WARNING] User "susan_super" is already active.', $output);
self::assertStringContainsString('[WARNING] User "susan_super" is already active.', $output);
}
public function testWithMissingUsername(): void

View file

@ -86,7 +86,7 @@ class ChangePasswordCommandTest extends KernelTestCase
$commandTester = $this->callCommand('john_user', '0987654321');
$output = $commandTester->getDisplay();
$this->assertStringContainsString('[OK] Changed password for user "john_user".', $output);
self::assertStringContainsString('[OK] Changed password for user "john_user".', $output);
/** @var Registry $doctrine */
$doctrine = self::getContainer()->get('doctrine');
@ -105,7 +105,7 @@ class ChangePasswordCommandTest extends KernelTestCase
$commandTester = $this->callCommand('john_user', '1');
$output = $commandTester->getDisplay();
$this->assertStringContainsString('[ERROR] plainPassword: This value is too short.', $output);
self::assertStringContainsString('[ERROR] plainPassword: This value is too short.', $output);
}
public function testWithMissingUsername(): void
@ -120,6 +120,6 @@ class ChangePasswordCommandTest extends KernelTestCase
{
$commandTester = $this->callCommand('john_user', null);
$output = $commandTester->getDisplay();
$this->assertStringContainsString('[OK] Changed password for user "john_user".', $output);
self::assertStringContainsString('[OK] Changed password for user "john_user".', $output);
}
}

View file

@ -42,7 +42,7 @@ class CreateUserCommandTest extends KernelTestCase
$commandTester = $this->createUser('MyTestUser', 'user@example.com', 'ROLE_USER', 'foobar');
$output = $commandTester->getDisplay();
$this->assertStringContainsString('[ERROR] plainPassword: This value is too short.', $output);
self::assertStringContainsString('[ERROR] plainPassword: This value is too short.', $output);
}
public function testCreateUser(): void
@ -50,7 +50,7 @@ class CreateUserCommandTest extends KernelTestCase
$commandTester = $this->createUser('MyTestUser', 'user@example.com', 'ROLE_USER', 'foobar12');
$output = $commandTester->getDisplay();
$this->assertStringContainsString('[OK] Success! Created user: MyTestUser', $output);
self::assertStringContainsString('[OK] Success! Created user: MyTestUser', $output);
$container = self::$kernel->getContainer();
/** @var Registry $doctrine */
@ -80,9 +80,9 @@ class CreateUserCommandTest extends KernelTestCase
{
$commandTester = $this->createUser('xx', '', 'ROLE_USER', '');
$output = $commandTester->getDisplay();
$this->assertStringContainsString('[ERROR] email: This value should not be blank', $output);
$this->assertStringContainsString('[ERROR] plainPassword: This value should not be blank', $output);
$this->assertStringContainsString('[ERROR] plainPassword: This value is too short.', $output);
self::assertStringContainsString('[ERROR] email: This value should not be blank', $output);
self::assertStringContainsString('[ERROR] plainPassword: This value should not be blank', $output);
self::assertStringContainsString('[ERROR] plainPassword: This value is too short.', $output);
}
public function testUserAlreadyExisting(): void
@ -91,7 +91,7 @@ class CreateUserCommandTest extends KernelTestCase
$commandTester = $this->createUser('MyTestUser', 'user2@example.com', 'ROLE_USER', 'foobar123');
$output = $commandTester->getDisplay();
$this->assertStringContainsString('[ERROR] username: The username is already used.', $output);
self::assertStringContainsString('[ERROR] username: The username is already used.', $output);
}
public function testEmailAlreadyExisting(): void
@ -100,7 +100,7 @@ class CreateUserCommandTest extends KernelTestCase
$commandTester = $this->createUser('MyTestUser2', 'user@example.com', 'ROLE_USER', 'foobar');
$output = $commandTester->getDisplay();
$this->assertStringContainsString('[ERROR] email: This e-mail address is already in use.', $output);
self::assertStringContainsString('[ERROR] email: This e-mail address is already in use.', $output);
}
public function testUserEmail(): void
@ -108,6 +108,6 @@ class CreateUserCommandTest extends KernelTestCase
$commandTester = $this->createUser('MyTestUser', 'ROLE_USER', 'ROLE_USER', 'foobar12');
$output = $commandTester->getDisplay();
$this->assertStringContainsString('[ERROR] email: This value is not a valid email address', $output);
self::assertStringContainsString('[ERROR] email: This value is not a valid email address', $output);
}
}

View file

@ -69,7 +69,7 @@ class DeactivateUserCommandTest extends KernelTestCase
$commandTester = $this->callCommand('john_user');
$output = $commandTester->getDisplay();
$this->assertStringContainsString('[OK] User "john_user" has been deactivated.', $output);
self::assertStringContainsString('[OK] User "john_user" has been deactivated.', $output);
$container = self::$kernel->getContainer();
/** @var Registry $doctrine */
@ -86,7 +86,7 @@ class DeactivateUserCommandTest extends KernelTestCase
$commandTester = $this->callCommand('chris_user');
$output = $commandTester->getDisplay();
$this->assertStringContainsString('[WARNING] User "chris_user" is already deactivated.', $output);
self::assertStringContainsString('[WARNING] User "chris_user" is already deactivated.', $output);
}
public function testWithMissingUsername(): void

View file

@ -79,7 +79,7 @@ class DemoteUserCommandTest extends KernelTestCase
$commandTester = $this->callCommand('tony_teamlead', 'ROLE_TEAMLEAD');
$output = $commandTester->getDisplay();
$this->assertStringContainsString('[OK] Role "ROLE_TEAMLEAD" has been removed from user "tony_teamlead".', $output);
self::assertStringContainsString('[OK] Role "ROLE_TEAMLEAD" has been removed from user "tony_teamlead".', $output);
$container = self::$kernel->getContainer();
/** @var Registry $doctrine */
@ -96,7 +96,7 @@ class DemoteUserCommandTest extends KernelTestCase
$commandTester = $this->callCommand('susan_super', null, true);
$output = $commandTester->getDisplay();
$this->assertStringContainsString('[OK] Super administrator role has been removed from the user "susan_super".', $output);
self::assertStringContainsString('[OK] Super administrator role has been removed from the user "susan_super".', $output);
$container = self::$kernel->getContainer();
/** @var Registry $doctrine */
@ -113,7 +113,7 @@ class DemoteUserCommandTest extends KernelTestCase
$commandTester = $this->callCommand('tony_teamlead', null, true);
$output = $commandTester->getDisplay();
$this->assertStringContainsString('[WARNING] User "tony_teamlead" doesn\'t have the super administrator role.', $output);
self::assertStringContainsString('[WARNING] User "tony_teamlead" doesn\'t have the super administrator role.', $output);
}
public function testDemoteAdminFailsOnTeamlead(): void
@ -121,7 +121,7 @@ class DemoteUserCommandTest extends KernelTestCase
$commandTester = $this->callCommand('tony_teamlead', 'ROLE_ADMIN', false);
$output = $commandTester->getDisplay();
$this->assertStringContainsString('[WARNING] User "tony_teamlead" didn\'t have "ROLE_ADMIN" role.', $output);
self::assertStringContainsString('[WARNING] User "tony_teamlead" didn\'t have "ROLE_ADMIN" role.', $output);
}
public function testDemoteRoleAndSuperFails(): void

View file

@ -122,7 +122,7 @@ class ExportCreateCommandTest extends KernelTestCase
$commandTester = $this->createExport($options);
$output = $commandTester->getDisplay();
$this->assertStringContainsString('[ERROR] ' . $errorMessage, $output);
self::assertStringContainsString('[ERROR] ' . $errorMessage, $output);
}
protected function assertCommandResult(array $options = [], string $message = ''): void
@ -130,7 +130,7 @@ class ExportCreateCommandTest extends KernelTestCase
$commandTester = $this->createExport($options);
$output = $commandTester->getDisplay();
$this->assertStringContainsString('[OK] ' . $message, $output);
self::assertStringContainsString('[OK] ' . $message, $output);
}
public function testCreateWithUnknownExportFilter(): void
@ -179,7 +179,7 @@ class ExportCreateCommandTest extends KernelTestCase
$commandTester = $this->createExport($options);
$output = $commandTester->getDisplay();
$this->assertStringContainsString('[OK] No entries found, skipping', $output);
self::assertStringContainsString('[OK] No entries found, skipping', $output);
}
/**
@ -217,7 +217,7 @@ class ExportCreateCommandTest extends KernelTestCase
$commandTester = $this->createExport(['--template' => 'csv', '--customer' => [$data[0]->getId()], '--start' => $start->format('Y-m-d'), '--end' => $end->format('Y-m-d'), '--username' => UserFixtures::USERNAME_SUPER_ADMIN]);
$output = $commandTester->getDisplay();
$this->assertStringContainsString('Saved export to: ', $output);
self::assertStringContainsString('Saved export to: ', $output);
}
public function testCreateExportByProject(): void
@ -230,7 +230,7 @@ class ExportCreateCommandTest extends KernelTestCase
$commandTester = $this->createExport(['--template' => 'csv', '--project' => [$data[1][0]->getId()], '--start' => $start->format('Y-m-d'), '--end' => $end->format('Y-m-d')]);
$output = $commandTester->getDisplay();
$this->assertStringContainsString('Saved export to: ', $output);
self::assertStringContainsString('Saved export to: ', $output);
}
public function testCreateExportWithEmail(): void
@ -252,7 +252,7 @@ class ExportCreateCommandTest extends KernelTestCase
]));
$output = $commandTester->getDisplay();
$this->assertStringContainsString('Send email with report to: foo@example.com', $output);
$this->assertStringContainsString('Send email with report to: foo2@example.com', $output);
self::assertStringContainsString('Send email with report to: foo@example.com', $output);
self::assertStringContainsString('Send email with report to: foo2@example.com', $output);
}
}

View file

@ -108,7 +108,7 @@ class InvoiceCreateCommandTest extends KernelTestCase
$commandTester = $this->createInvoice($options);
$output = $commandTester->getDisplay();
$this->assertStringContainsString('[ERROR] ' . $errorMessage, $output);
self::assertStringContainsString('[ERROR] ' . $errorMessage, $output);
}
public function testCreateWithUnknownExportFilter(): void
@ -174,13 +174,13 @@ class InvoiceCreateCommandTest extends KernelTestCase
$commandTester = $this->createInvoice(['--user' => UserFixtures::USERNAME_SUPER_ADMIN, '--customer' => 1, '--template' => 'Invoice', '--start' => '2020-01-01', '--end' => '2020-03-01']);
$output = $commandTester->getDisplay();
$this->assertStringContainsString('Created 1 invoice(s)', $output);
$this->assertStringContainsString('| ID', $output);
$this->assertStringContainsString('| Customer', $output);
$this->assertStringContainsString('| Total', $output);
$this->assertStringContainsString('| Filename', $output);
$this->assertStringContainsString('0 EUR', $output);
$this->assertStringContainsString('/tests/_data/invoices/' . ((new \DateTime())->format('Y')) . '-001-Test.html |', $output);
self::assertStringContainsString('Created 1 invoice(s)', $output);
self::assertStringContainsString('| ID', $output);
self::assertStringContainsString('| Customer', $output);
self::assertStringContainsString('| Total', $output);
self::assertStringContainsString('| Filename', $output);
self::assertStringContainsString('0 EUR', $output);
self::assertStringContainsString('/tests/_data/invoices/' . ((new \DateTime())->format('Y')) . '-001-Test.html |', $output);
}
/**
@ -224,7 +224,7 @@ class InvoiceCreateCommandTest extends KernelTestCase
$commandTester = $this->createInvoice(['--user' => UserFixtures::USERNAME_SUPER_ADMIN, '--by-customer' => null, '--start' => $start->format('Y-m-d'), '--end' => $end->format('Y-m-d')]);
$output = $commandTester->getDisplay();
$this->assertStringContainsString('Created 1 invoice(s) ', $output);
self::assertStringContainsString('Created 1 invoice(s) ', $output);
}
public function testCreateInvoiceByCustomerId(): void
@ -238,7 +238,7 @@ class InvoiceCreateCommandTest extends KernelTestCase
$commandTester = $this->createInvoice(['--user' => UserFixtures::USERNAME_SUPER_ADMIN, '--customer' => $customer . ',1', '--start' => $start->format('Y-m-d'), '--end' => $end->format('Y-m-d')]);
$output = $commandTester->getDisplay();
$this->assertStringContainsString('Created 1 invoice(s) ', $output);
self::assertStringContainsString('Created 1 invoice(s) ', $output);
}
public function testCreateInvoiceByProject(): void
@ -251,7 +251,7 @@ class InvoiceCreateCommandTest extends KernelTestCase
$commandTester = $this->createInvoice(['--user' => UserFixtures::USERNAME_SUPER_ADMIN, '--exported' => 'all', '--by-project' => null, '--start' => $start->format('Y-m-d'), '--end' => $end->format('Y-m-d')]);
$output = $commandTester->getDisplay();
$this->assertStringContainsString('Created 1 invoice(s) ', $output);
self::assertStringContainsString('Created 1 invoice(s) ', $output);
}
public function testCreateInvoiceByProjectId(): void
@ -264,7 +264,7 @@ class InvoiceCreateCommandTest extends KernelTestCase
$commandTester = $this->createInvoice(['--user' => UserFixtures::USERNAME_SUPER_ADMIN, '--exported' => 'all', '--project' => '1', '--template' => 'Invoice', '--start' => $start->format('Y-m-d'), '--end' => $end->format('Y-m-d')]);
$output = $commandTester->getDisplay();
$this->assertStringContainsString('Created 1 invoice(s) ', $output);
self::assertStringContainsString('Created 1 invoice(s) ', $output);
}
public function testCreateInvoiceByProjectWithPreview(): void
@ -277,6 +277,6 @@ class InvoiceCreateCommandTest extends KernelTestCase
$commandTester = $this->createInvoice(['--user' => UserFixtures::USERNAME_SUPER_ADMIN, '--exported' => 'all', '--preview' => sys_get_temp_dir(), '--by-project' => null, '--start' => $start->format('Y-m-d'), '--end' => $end->format('Y-m-d')]);
$output = $commandTester->getDisplay();
$this->assertStringContainsString('Created 1 invoice(s) ', $output);
self::assertStringContainsString('Created 1 invoice(s) ', $output);
}
}

View file

@ -25,8 +25,8 @@ class ListUserCommandTest extends KernelTestCase
{
$commandTester = $this->getCommandTester();
$output = $commandTester->getDisplay();
$this->assertStringContainsString('Username Email Roles Active Authenticator', $output);
$this->assertStringContainsString('---------- ------- ------- -------- -------------', $output);
self::assertStringContainsString('Username Email Roles Active Authenticator', $output);
self::assertStringContainsString('---------- ------- ------- -------- -------------', $output);
}
protected function getCommandTester(): CommandTester

View file

@ -33,9 +33,9 @@ class PluginCommandTest extends KernelTestCase
$commandTester = $this->getCommandTester([$plugin1], []);
$output = $commandTester->getDisplay();
$this->assertStringContainsString(__DIR__, $output);
$this->assertStringContainsString('Plugin/Fixtures/TestPlugin', $output);
$this->assertStringContainsString('TestPlugin from composer.json', $output);
self::assertStringContainsString(__DIR__, $output);
self::assertStringContainsString('Plugin/Fixtures/TestPlugin', $output);
self::assertStringContainsString('TestPlugin from composer.json', $output);
}
private function getCommandTester(array $plugins, array $options = []): CommandTester

View file

@ -36,7 +36,7 @@ class PromoteUserCommandTest extends KernelTestCase
$container = self::$kernel->getContainer();
$userService = $container->get(UserService::class);
$this->assertInstanceOf(UserService::class, $userService);
self::assertInstanceOf(UserService::class, $userService);
$this->application->add(new PromoteUserCommand($userService));
}
@ -79,7 +79,7 @@ class PromoteUserCommandTest extends KernelTestCase
$commandTester = $this->callCommand('john_user', 'ROLE_TEAMLEAD');
$output = $commandTester->getDisplay();
$this->assertStringContainsString('[OK] Role "ROLE_TEAMLEAD" has been added to user "john_user".', $output);
self::assertStringContainsString('[OK] Role "ROLE_TEAMLEAD" has been added to user "john_user".', $output);
$container = self::$kernel->getContainer();
/** @var Registry $doctrine */
@ -96,7 +96,7 @@ class PromoteUserCommandTest extends KernelTestCase
$commandTester = $this->callCommand('john_user', null, true);
$output = $commandTester->getDisplay();
$this->assertStringContainsString('[OK] User "john_user" has been promoted as a super administrator.', $output);
self::assertStringContainsString('[OK] User "john_user" has been promoted as a super administrator.', $output);
$container = self::$kernel->getContainer();
/** @var Registry $doctrine */
@ -113,7 +113,7 @@ class PromoteUserCommandTest extends KernelTestCase
$commandTester = $this->callCommand('susan_super', null, true);
$output = $commandTester->getDisplay();
$this->assertStringContainsString('[WARNING] User "susan_super" does already have the super administrator role.', $output);
self::assertStringContainsString('[WARNING] User "susan_super" does already have the super administrator role.', $output);
}
public function testPromoteTeamleadFailsOnTeamlead(): void
@ -121,7 +121,7 @@ class PromoteUserCommandTest extends KernelTestCase
$commandTester = $this->callCommand('tony_teamlead', 'ROLE_TEAMLEAD', false);
$output = $commandTester->getDisplay();
$this->assertStringContainsString('[WARNING] User "tony_teamlead" did already have "ROLE_TEAMLEAD" role.', $output);
self::assertStringContainsString('[WARNING] User "tony_teamlead" did already have "ROLE_TEAMLEAD" role.', $output);
}
public function testPromoteRoleAndSuperFails(): void

View file

@ -39,10 +39,10 @@ class VersionCommandTest extends KernelTestCase
{
$commandTester = $this->getCommandTester($options);
$output = $commandTester->getDisplay();
$this->assertEquals($result . PHP_EOL, $output);
self::assertEquals($result . PHP_EOL, $output);
}
public function getTestData(): array // @phpstan-ignore missingType.iterableValue
public static function getTestData(): array // @phpstan-ignore missingType.iterableValue
{
return [
[[], 'Kimai ' . Constants::VERSION . ' by Kevin Papst.'],

View file

@ -45,18 +45,18 @@ class LdapConfigurationTest extends TestCase
public function testDefault(): void
{
$sut = $this->getSut([]);
$this->assertFalse($sut->isActivated());
$this->assertEquals([], $sut->getUserParameters());
$this->assertEquals([], $sut->getRoleParameters());
$this->assertEquals([], $sut->getConnectionParameters());
self::assertFalse($sut->isActivated());
self::assertEquals([], $sut->getUserParameters());
self::assertEquals([], $sut->getRoleParameters());
self::assertEquals([], $sut->getConnectionParameters());
}
public function testMapping(): void
{
$sut = $this->getSut($this->getDefaultSettings());
$this->assertTrue($sut->isActivated());
$this->assertEquals(['foo' => 'bar'], $sut->getUserParameters());
$this->assertEquals(['bar' => 'foo'], $sut->getRoleParameters());
$this->assertEquals(['host' => '1.2.3.4'], $sut->getConnectionParameters());
self::assertTrue($sut->isActivated());
self::assertEquals(['foo' => 'bar'], $sut->getUserParameters());
self::assertEquals(['bar' => 'foo'], $sut->getRoleParameters());
self::assertEquals(['host' => '1.2.3.4'], $sut->getConnectionParameters());
}
}

View file

@ -106,10 +106,10 @@ class LocaleServiceTest extends TestCase
public function testGetAllLocales(): void
{
$sut = $this->getSut([]);
$this->assertEquals([], $sut->getAllLocales());
self::assertEquals([], $sut->getAllLocales());
$sut = $this->getSut($this->getDefaultSettings());
$this->assertEquals(['de', 'en', 'en_AU', 'pt_BR', 'it', 'fr', 'fr_BE', 'fr_CA', 'es', 'ru', 'ar', 'hu'], $sut->getAllLocales());
self::assertEquals(['de', 'en', 'en_AU', 'pt_BR', 'it', 'fr', 'fr_BE', 'fr_CA', 'es', 'ru', 'ar', 'hu'], $sut->getAllLocales());
}
public function testInvalidLocaleWithGivenLocale(): void
@ -124,26 +124,26 @@ class LocaleServiceTest extends TestCase
public function testGetDurationFormat(): void
{
$sut = $this->getSut($this->getDefaultSettings());
$this->assertEquals('%h:%m', $sut->getDurationFormat('de'));
self::assertEquals('%h:%m', $sut->getDurationFormat('de'));
}
public function testGetDateFormat(): void
{
$sut = $this->getSut($this->getDefaultSettings());
$this->assertEquals('d.m.Y', $sut->getDateFormat('de'));
self::assertEquals('d.m.Y', $sut->getDateFormat('de'));
}
public function testGetDateTimeFormat(): void
{
$sut = $this->getSut($this->getDefaultSettings());
$this->assertEquals('d.m.Y H:i', $sut->getDateTimeFormat('de'));
self::assertEquals('d.m.Y H:i', $sut->getDateTimeFormat('de'));
}
public function testGetTimeFormat(): void
{
$sut = $this->getSut($this->getDefaultSettings());
$this->assertEquals('H:i', $sut->getTimeFormat('de'));
$this->assertEquals('H:i:s', $sut->getTimeFormat('en'));
self::assertEquals('H:i', $sut->getTimeFormat('de'));
self::assertEquals('H:i:s', $sut->getTimeFormat('en'));
}
/**
@ -153,13 +153,13 @@ class LocaleServiceTest extends TestCase
{
$sut = $this->getSut($this->getDefaultSettings());
$actual = $sut->getNearestTranslationLocale($locale);
$this->assertEquals($expected, $actual);
self::assertEquals($expected, $actual);
}
/**
* @return array<int, array<int, string>>
*/
public function getNearestTranslationLocaleData(): array
public static function getNearestTranslationLocaleData(): array
{
return [
['de', 'de'], // registered and translated: use it

View file

@ -53,31 +53,31 @@ class SamlConfigurationTest extends TestCase
public function testDefault(): void
{
$sut = $this->getSut([]);
$this->assertFalse($sut->isActivated());
$this->assertEquals('', $sut->getTitle());
$this->assertEquals([], $sut->getConnection());
$this->assertEquals([], $sut->getRolesMapping());
$this->assertEquals('', $sut->getRolesAttribute());
$this->assertEquals([], $sut->getAttributeMapping());
$this->assertFalse($sut->isRolesResetOnLogin());
self::assertFalse($sut->isActivated());
self::assertEquals('', $sut->getTitle());
self::assertEquals([], $sut->getConnection());
self::assertEquals([], $sut->getRolesMapping());
self::assertEquals('', $sut->getRolesAttribute());
self::assertEquals([], $sut->getAttributeMapping());
self::assertFalse($sut->isRolesResetOnLogin());
}
public function testDefaultSettings(): void
{
$sut = $this->getSut($this->getDefaultSettings());
$this->assertTrue($sut->isActivated());
$this->assertTrue($sut->isRolesResetOnLogin());
$this->assertEquals('SAML title', $sut->getTitle());
$this->assertEquals('google', $sut->getProvider());
$this->assertEquals([
self::assertTrue($sut->isActivated());
self::assertTrue($sut->isRolesResetOnLogin());
self::assertEquals('SAML title', $sut->getTitle());
self::assertEquals('google', $sut->getProvider());
self::assertEquals([
'host' => '1.2.3.4',
], $sut->getConnection());
$this->assertEquals([
self::assertEquals([
['saml' => 'Kimai - Admin', 'kimai' => 'ROLE_SUPER_ADMIN'],
['saml' => 'Management', 'kimai' => 'ROLE_TEAMLEAD'],
], $sut->getRolesMapping());
$this->assertEquals('Roles', $sut->getRolesAttribute());
$this->assertEquals([
self::assertEquals('Roles', $sut->getRolesAttribute());
self::assertEquals([
['saml' => '$Email', 'kimai' => 'email'],
['saml' => '$FirstName $LastName', 'kimai' => 'alias'],
], $sut->getAttributeMapping());

View file

@ -132,22 +132,22 @@ class SystemConfigurationTest extends TestCase
public function testDefaultWithoutLoader(): void
{
$sut = $this->getSut($this->getDefaultSettings(), []);
$this->assertEquals('Europe/London', $sut->find('defaults.customer.timezone'));
$this->assertEquals('GBP', $sut->find('defaults.customer.currency'));
$this->assertFalse($sut->find('timesheet.rules.allow_future_times'));
$this->assertEquals(99, $sut->find('timesheet.active_entries.hard_limit'));
$this->assertEquals('Maroon|#800000,Brown|#a52a2a,Red|#ff0000,Orange|#ffa500,#ffffff,,|#000000', $sut->getThemeColorChoices());
$this->assertEquals(['Maroon' => '#800000', 'Brown' => '#a52a2a', 'Red' => '#ff0000', 'Orange' => '#ffa500', '#ffffff' => '#ffffff', '#000000' => '#000000'], $sut->getThemeColors());
self::assertEquals('Europe/London', $sut->find('defaults.customer.timezone'));
self::assertEquals('GBP', $sut->find('defaults.customer.currency'));
self::assertFalse($sut->find('timesheet.rules.allow_future_times'));
self::assertEquals(99, $sut->find('timesheet.active_entries.hard_limit'));
self::assertEquals('Maroon|#800000,Brown|#a52a2a,Red|#ff0000,Orange|#ffa500,#ffffff,,|#000000', $sut->getThemeColorChoices());
self::assertEquals(['Maroon' => '#800000', 'Brown' => '#a52a2a', 'Red' => '#ff0000', 'Orange' => '#ffa500', '#ffffff' => '#ffffff', '#000000' => '#000000'], $sut->getThemeColors());
}
public function testDefaultWithLoader(): void
{
$sut = $this->getSut($this->getDefaultSettings(), $this->getDefaultLoaderSettings());
$this->assertEquals('Russia/Moscov', $sut->find('defaults.customer.timezone'));
$this->assertEquals('RUB', $sut->find('defaults.customer.currency'));
$this->assertTrue($sut->find('timesheet.rules.allow_future_times'));
$this->assertEquals(7, $sut->find('timesheet.active_entries.hard_limit'));
$this->assertFalse($sut->isSamlActive());
self::assertEquals('Russia/Moscov', $sut->find('defaults.customer.timezone'));
self::assertEquals('RUB', $sut->find('defaults.customer.currency'));
self::assertTrue($sut->find('timesheet.rules.allow_future_times'));
self::assertEquals(7, $sut->find('timesheet.active_entries.hard_limit'));
self::assertFalse($sut->isSamlActive());
}
public function testDefaultWithMixedConfigs(): void
@ -158,11 +158,11 @@ class SystemConfigurationTest extends TestCase
(new Configuration())->setName('theme.color_choices')->setValue(''),
(new Configuration())->setName('company.financial_year')->setValue('2020-03-27'),
]);
$this->assertFalse($sut->find('timesheet.rules.allow_future_times'));
$this->assertTrue($sut->isSamlActive());
$this->assertEquals('Silver|#c0c0c0', $sut->getThemeColorChoices());
$this->assertEquals(['Silver' => '#c0c0c0'], $sut->getThemeColors());
$this->assertEquals('2020-03-27', $sut->getFinancialYearStart());
self::assertFalse($sut->find('timesheet.rules.allow_future_times'));
self::assertTrue($sut->isSamlActive());
self::assertEquals('Silver|#c0c0c0', $sut->getThemeColorChoices());
self::assertEquals(['Silver' => '#c0c0c0'], $sut->getThemeColors());
self::assertEquals('2020-03-27', $sut->getFinancialYearStart());
}
public function testUnknownConfigs(): void
@ -170,100 +170,100 @@ class SystemConfigurationTest extends TestCase
$sut = $this->getSut($this->getDefaultSettings(), [
(new Configuration())->setName('timesheet.foo')->setValue('hello'),
]);
$this->assertEquals('hello', $sut->find('timesheet.foo'));
$this->assertTrue($sut->has('timesheet.foo'));
$this->assertFalse($sut->has('timesheet.yyyyyyyyy'));
$this->assertFalse($sut->has('xxxxxxxx.yyyyyyyyy'));
$this->assertNull($sut->find('xxxxxxxx.yyyyyyyyy'));
self::assertEquals('hello', $sut->find('timesheet.foo'));
self::assertTrue($sut->has('timesheet.foo'));
self::assertFalse($sut->has('timesheet.yyyyyyyyy'));
self::assertFalse($sut->has('xxxxxxxx.yyyyyyyyy'));
self::assertNull($sut->find('xxxxxxxx.yyyyyyyyy'));
$sut->set('xxxxxxxx.yyyyyyyyy', 'foooo-bar!');
$this->assertTrue($sut->has('xxxxxxxx.yyyyyyyyy'));
$this->assertEquals('foooo-bar!', $sut->find('xxxxxxxx.yyyyyyyyy'));
self::assertTrue($sut->has('xxxxxxxx.yyyyyyyyy'));
self::assertEquals('foooo-bar!', $sut->find('xxxxxxxx.yyyyyyyyy'));
}
public function testCalendarWithoutLoader(): void
{
$sut = $this->getSut($this->getDefaultSettings(), []);
$this->assertEquals('07:49', $sut->getCalendarBusinessTimeBegin());
$this->assertEquals('19:27', $sut->getCalendarBusinessTimeEnd());
$this->assertEquals('06:00:00', $sut->getCalendarTimeframeBegin());
$this->assertEquals('21:00:43', $sut->getCalendarTimeframeEnd());
$this->assertEquals('01:11:00', $sut->getCalendarSlotDuration());
$this->assertEquals(20, $sut->getCalendarDayLimit());
$this->assertFalse($sut->isCalendarShowWeekNumbers());
$this->assertTrue($sut->isCalendarShowWeekends());
self::assertEquals('07:49', $sut->getCalendarBusinessTimeBegin());
self::assertEquals('19:27', $sut->getCalendarBusinessTimeEnd());
self::assertEquals('06:00:00', $sut->getCalendarTimeframeBegin());
self::assertEquals('21:00:43', $sut->getCalendarTimeframeEnd());
self::assertEquals('01:11:00', $sut->getCalendarSlotDuration());
self::assertEquals(20, $sut->getCalendarDayLimit());
self::assertFalse($sut->isCalendarShowWeekNumbers());
self::assertTrue($sut->isCalendarShowWeekends());
$this->assertEquals('wertwertwegsdfbdf243w567fg8ihuon', $sut->getCalendarGoogleApiKey());
self::assertEquals('wertwertwegsdfbdf243w567fg8ihuon', $sut->getCalendarGoogleApiKey());
$sources = $sut->getCalendarGoogleSources();
$this->assertEquals(2, \count($sources));
self::assertEquals(2, \count($sources));
}
public function testCalendarWithLoader(): void
{
$sut = $this->getSut($this->getDefaultSettings(), $this->getDefaultLoaderSettings());
$this->assertEquals('00:30:00', $sut->getCalendarSlotDuration());
self::assertEquals('00:30:00', $sut->getCalendarSlotDuration());
$sources = $sut->getCalendarGoogleSources();
$this->assertEquals(2, \count($sources));
self::assertEquals(2, \count($sources));
}
public function testFormDefaultWithoutLoader(): void
{
$sut = $this->getSut($this->getDefaultSettings(), []);
$this->assertEquals('Europe/London', $sut->getCustomerDefaultTimezone());
$this->assertEquals('GBP', $sut->getCustomerDefaultCurrency());
$this->assertEquals('FR', $sut->getCustomerDefaultCountry());
$this->assertEquals('foo/bar', $sut->getUserDefaultTimezone());
$this->assertEquals('blue', $sut->getUserDefaultTheme());
$this->assertEquals('IT', $sut->getUserDefaultLanguage());
$this->assertEquals('USD', $sut->getUserDefaultCurrency());
$this->assertNull($sut->getFinancialYearStart());
self::assertEquals('Europe/London', $sut->getCustomerDefaultTimezone());
self::assertEquals('GBP', $sut->getCustomerDefaultCurrency());
self::assertEquals('FR', $sut->getCustomerDefaultCountry());
self::assertEquals('foo/bar', $sut->getUserDefaultTimezone());
self::assertEquals('blue', $sut->getUserDefaultTheme());
self::assertEquals('IT', $sut->getUserDefaultLanguage());
self::assertEquals('USD', $sut->getUserDefaultCurrency());
self::assertNull($sut->getFinancialYearStart());
}
public function testFormDefaultWithLoader(): void
{
$sut = $this->getSut($this->getDefaultSettings(), $this->getDefaultLoaderSettings());
$this->assertEquals('Russia/Moscov', $sut->getCustomerDefaultTimezone());
$this->assertEquals('RUB', $sut->getCustomerDefaultCurrency());
$this->assertEquals('FR', $sut->getCustomerDefaultCountry());
$this->assertEquals('foo/bar', $sut->getUserDefaultTimezone());
$this->assertEquals('blue', $sut->getUserDefaultTheme());
$this->assertEquals('IT', $sut->getUserDefaultLanguage());
$this->assertEquals('USD', $sut->getUserDefaultCurrency());
self::assertEquals('Russia/Moscov', $sut->getCustomerDefaultTimezone());
self::assertEquals('RUB', $sut->getCustomerDefaultCurrency());
self::assertEquals('FR', $sut->getCustomerDefaultCountry());
self::assertEquals('foo/bar', $sut->getUserDefaultTimezone());
self::assertEquals('blue', $sut->getUserDefaultTheme());
self::assertEquals('IT', $sut->getUserDefaultLanguage());
self::assertEquals('USD', $sut->getUserDefaultCurrency());
}
public function testTimesheetWithoutLoader(): void
{
$sut = $this->getSut($this->getDefaultSettings(), []);
$this->assertEquals(99, $sut->getTimesheetActiveEntriesHardLimit());
$this->assertFalse($sut->isTimesheetAllowFutureTimes());
$this->assertFalse($sut->isTimesheetMarkdownEnabled());
$this->assertEquals('punch', $sut->getTimesheetTrackingMode());
$this->assertEquals('now', $sut->getTimesheetDefaultBeginTime());
$this->assertEquals('', $sut->isTimesheetAllowOverlappingRecords());
$this->assertEquals('', $sut->getTimesheetDefaultRoundingDays());
$this->assertEquals('', $sut->getTimesheetDefaultRoundingMode());
$this->assertEquals(0, $sut->getTimesheetDefaultRoundingDuration());
$this->assertEquals(0, $sut->getTimesheetDefaultRoundingEnd());
$this->assertEquals(0, $sut->getTimesheetDefaultRoundingBegin());
$this->assertEquals(10, $sut->getTimesheetIncrementDuration());
$this->assertEquals(5, $sut->getTimesheetIncrementMinutes());
self::assertEquals(99, $sut->getTimesheetActiveEntriesHardLimit());
self::assertFalse($sut->isTimesheetAllowFutureTimes());
self::assertFalse($sut->isTimesheetMarkdownEnabled());
self::assertEquals('punch', $sut->getTimesheetTrackingMode());
self::assertEquals('now', $sut->getTimesheetDefaultBeginTime());
self::assertEquals('', $sut->isTimesheetAllowOverlappingRecords());
self::assertEquals('', $sut->getTimesheetDefaultRoundingDays());
self::assertEquals('', $sut->getTimesheetDefaultRoundingMode());
self::assertEquals(0, $sut->getTimesheetDefaultRoundingDuration());
self::assertEquals(0, $sut->getTimesheetDefaultRoundingEnd());
self::assertEquals(0, $sut->getTimesheetDefaultRoundingBegin());
self::assertEquals(10, $sut->getTimesheetIncrementDuration());
self::assertEquals(5, $sut->getTimesheetIncrementMinutes());
}
public function testTimesheetWithLoader(): void
{
$sut = $this->getSut($this->getDefaultSettings(), $this->getDefaultLoaderSettings());
$this->assertEquals(7, $sut->getTimesheetActiveEntriesHardLimit());
$this->assertTrue($sut->isTimesheetAllowFutureTimes());
$this->assertTrue($sut->isTimesheetMarkdownEnabled());
$this->assertEquals('default', $sut->getTimesheetTrackingMode());
$this->assertEquals('07:00', $sut->getTimesheetDefaultBeginTime());
$this->assertEquals('', $sut->isTimesheetAllowOverlappingRecords());
$this->assertEquals('', $sut->getTimesheetDefaultRoundingDays());
$this->assertEquals('', $sut->getTimesheetDefaultRoundingMode());
$this->assertEquals(0, $sut->getTimesheetDefaultRoundingDuration());
$this->assertEquals(0, $sut->getTimesheetDefaultRoundingEnd());
$this->assertEquals(0, $sut->getTimesheetDefaultRoundingBegin());
$this->assertEquals(10, $sut->getTimesheetIncrementDuration());
$this->assertEquals(5, $sut->getTimesheetIncrementMinutes());
self::assertEquals(7, $sut->getTimesheetActiveEntriesHardLimit());
self::assertTrue($sut->isTimesheetAllowFutureTimes());
self::assertTrue($sut->isTimesheetMarkdownEnabled());
self::assertEquals('default', $sut->getTimesheetTrackingMode());
self::assertEquals('07:00', $sut->getTimesheetDefaultBeginTime());
self::assertEquals('', $sut->isTimesheetAllowOverlappingRecords());
self::assertEquals('', $sut->getTimesheetDefaultRoundingDays());
self::assertEquals('', $sut->getTimesheetDefaultRoundingMode());
self::assertEquals(0, $sut->getTimesheetDefaultRoundingDuration());
self::assertEquals(0, $sut->getTimesheetDefaultRoundingEnd());
self::assertEquals(0, $sut->getTimesheetDefaultRoundingBegin());
self::assertEquals(10, $sut->getTimesheetIncrementDuration());
self::assertEquals(5, $sut->getTimesheetIncrementMinutes());
}
}

View file

@ -14,7 +14,7 @@ use App\Entity\User;
/**
* @group integration
*/
class AboutControllerTest extends ControllerBaseTest
class AboutControllerTest extends AbstractControllerBaseTestCase
{
public function testIndexAction(): void
{

View file

@ -34,7 +34,7 @@ use Symfony\Component\Security\Csrf\CsrfTokenManager;
/**
* ControllerBaseTest adds some useful functions for writing integration tests.
*/
abstract class ControllerBaseTest extends WebTestCase
abstract class AbstractControllerBaseTestCase extends WebTestCase
{
use KernelTestTrait;
@ -155,6 +155,9 @@ abstract class ControllerBaseTest extends WebTestCase
return $client;
}
/**
* @return non-empty-string
*/
protected function createUrl(string $url): string
{
$prefix = '/' . self::DEFAULT_LANGUAGE;
@ -404,10 +407,6 @@ abstract class ControllerBaseTest extends WebTestCase
}
}
/**
* @param HttpKernelBrowser $client
* @param string $url
*/
protected function assertIsRedirect(HttpKernelBrowser $client, ?string $url = null, bool $endsWith = true): void
{
self::assertResponseRedirects();
@ -431,7 +430,7 @@ abstract class ControllerBaseTest extends WebTestCase
self::assertStringContainsString($expectedMeta, $client->getResponse()->getContent());
if ($url !== null) {
if ($endsWith) {
if ($endsWith && $url !== '') {
self::assertStringEndsWith($url, $location, 'Redirect URL does not match');
} else {
self::assertStringContainsString($url, $location, 'Redirect URL does not match');
@ -447,7 +446,7 @@ abstract class ControllerBaseTest extends WebTestCase
$location = $client->getResponse()->headers->get('Location');
self::assertNotNull($location);
if ($endsWith) {
if ($endsWith && $url !== '') {
self::assertStringEndsWith($url, $location, 'Redirect URL does not match');
} else {
self::assertStringContainsString($url, $location, 'Redirect URL does not match');

View file

@ -26,7 +26,7 @@ use Symfony\Component\HttpKernel\HttpKernelBrowser;
/**
* @group integration
*/
class ActivityControllerTest extends ControllerBaseTest
class ActivityControllerTest extends AbstractControllerBaseTestCase
{
public function testIsSecure(): void
{
@ -88,7 +88,7 @@ class ActivityControllerTest extends ControllerBaseTest
'page' => 1,
]);
$this->assertTrue($client->getResponse()->isSuccessful());
self::assertTrue($client->getResponse()->isSuccessful());
$this->assertHasDataTable($client);
$this->assertDataTableRowCount($client, 'datatable_activity_admin', 5);
}
@ -215,7 +215,7 @@ class ActivityControllerTest extends ControllerBaseTest
$this->request($client, '/admin/activity/' . $id . '/edit');
$editForm = $client->getCrawler()->filter('form[name=activity_edit_form]')->form();
$this->assertEquals('An AcTiVitY Name', $editForm->get('activity_edit_form[name]')->getValue());
self::assertEquals('An AcTiVitY Name', $editForm->get('activity_edit_form[name]')->getValue());
}
public function testCreateActionShowsMetaFields(): void
@ -225,12 +225,12 @@ class ActivityControllerTest extends ControllerBaseTest
static::assertInstanceOf(EventDispatcher::class, $eventDispatcher);
$eventDispatcher->addSubscriber(new ActivityTestMetaFieldSubscriberMock());
$this->assertAccessIsGranted($client, '/admin/activity/create');
$this->assertTrue($client->getResponse()->isSuccessful());
self::assertTrue($client->getResponse()->isSuccessful());
$form = $client->getCrawler()->filter('form[name=activity_edit_form]')->form();
$this->assertTrue($form->has('activity_edit_form[metaFields][metatestmock][value]'));
$this->assertTrue($form->has('activity_edit_form[metaFields][foobar][value]'));
$this->assertFalse($form->has('activity_edit_form[metaFields][0][value]'));
self::assertTrue($form->has('activity_edit_form[metaFields][metatestmock][value]'));
self::assertTrue($form->has('activity_edit_form[metaFields][foobar][value]'));
self::assertFalse($form->has('activity_edit_form[metaFields][0][value]'));
}
public function testEditAction(): void
@ -238,7 +238,7 @@ class ActivityControllerTest extends ControllerBaseTest
$client = $this->getClientForAuthenticatedUser(User::ROLE_ADMIN);
$this->assertAccessIsGranted($client, '/admin/activity/1/edit');
$form = $client->getCrawler()->filter('form[name=activity_edit_form]')->form();
$this->assertEquals('Test', $form->get('activity_edit_form[name]')->getValue());
self::assertEquals('Test', $form->get('activity_edit_form[name]')->getValue());
$client->submit($form, [
'activity_edit_form' => ['name' => 'Test 2']
]);
@ -246,7 +246,7 @@ class ActivityControllerTest extends ControllerBaseTest
$client->followRedirect();
$this->request($client, '/admin/activity/1/edit');
$editForm = $client->getCrawler()->filter('form[name=activity_edit_form]')->form();
$this->assertEquals('Test 2', $editForm->get('activity_edit_form[name]')->getValue());
self::assertEquals('Test 2', $editForm->get('activity_edit_form[name]')->getValue());
}
public function testEditActionForGlobalActivity(): void
@ -254,7 +254,7 @@ class ActivityControllerTest extends ControllerBaseTest
$client = $this->getClientForAuthenticatedUser(User::ROLE_ADMIN);
$this->assertAccessIsGranted($client, '/admin/activity/1/edit');
$form = $client->getCrawler()->filter('form[name=activity_edit_form]')->form();
$this->assertEquals('Test', $form->get('activity_edit_form[name]')->getValue());
self::assertEquals('Test', $form->get('activity_edit_form[name]')->getValue());
$client->submit($form, [
'activity_edit_form' => ['name' => 'Test 2']
]);
@ -262,7 +262,7 @@ class ActivityControllerTest extends ControllerBaseTest
$client->followRedirect();
$this->request($client, '/admin/activity/1/edit');
$editForm = $client->getCrawler()->filter('form[name=activity_edit_form]')->form();
$this->assertEquals('Test 2', $editForm->get('activity_edit_form[name]')->getValue());
self::assertEquals('Test 2', $editForm->get('activity_edit_form[name]')->getValue());
}
public function testTeamPermissionAction(): void
@ -317,13 +317,13 @@ class ActivityControllerTest extends ControllerBaseTest
{
$client = $this->getClientForAuthenticatedUser(User::ROLE_ADMIN);
$this->request($client, '/admin/activity/1/edit');
$this->assertTrue($client->getResponse()->isSuccessful());
self::assertTrue($client->getResponse()->isSuccessful());
$this->request($client, '/admin/activity/1/delete');
$this->assertTrue($client->getResponse()->isSuccessful());
self::assertTrue($client->getResponse()->isSuccessful());
$form = $client->getCrawler()->filter('form[name=form]')->form();
$this->assertStringEndsWith($this->createUrl('/admin/activity/1/delete'), $form->getUri());
self::assertStringEndsWith($this->createUrl('/admin/activity/1/delete'), $form->getUri());
$client->submit($form);
$client->followRedirect();
@ -331,7 +331,7 @@ class ActivityControllerTest extends ControllerBaseTest
$this->assertHasNoEntriesWithFilter($client);
$this->request($client, '/admin/activity/1/edit');
$this->assertFalse($client->getResponse()->isSuccessful());
self::assertFalse($client->getResponse()->isSuccessful());
}
public function testDeleteActionWithTimesheetEntries(): void
@ -347,18 +347,18 @@ class ActivityControllerTest extends ControllerBaseTest
$this->importFixture($fixture);
$timesheets = $em->getRepository(Timesheet::class)->findAll();
$this->assertEquals(10, \count($timesheets));
self::assertEquals(10, \count($timesheets));
/** @var Timesheet $entry */
foreach ($timesheets as $entry) {
$this->assertEquals(1, $entry->getActivity()->getId());
self::assertEquals(1, $entry->getActivity()->getId());
}
$this->request($client, '/admin/activity/1/delete');
$this->assertTrue($client->getResponse()->isSuccessful());
self::assertTrue($client->getResponse()->isSuccessful());
$form = $client->getCrawler()->filter('form[name=form]')->form();
$this->assertStringEndsWith($this->createUrl('/admin/activity/1/delete'), $form->getUri());
self::assertStringEndsWith($this->createUrl('/admin/activity/1/delete'), $form->getUri());
$client->submit($form);
$this->assertIsRedirect($client, $this->createUrl('/admin/activity/'));
@ -368,10 +368,10 @@ class ActivityControllerTest extends ControllerBaseTest
$em->clear();
$timesheets = $em->getRepository(Timesheet::class)->findAll();
$this->assertEquals(0, \count($timesheets));
self::assertEquals(0, \count($timesheets));
$this->request($client, '/admin/activity/1/edit');
$this->assertFalse($client->getResponse()->isSuccessful());
self::assertFalse($client->getResponse()->isSuccessful());
}
public function testDeleteActionWithTimesheetEntriesAndReplacement(): void
@ -392,18 +392,18 @@ class ActivityControllerTest extends ControllerBaseTest
$id = $activity->getId();
$timesheets = $em->getRepository(Timesheet::class)->findAll();
$this->assertEquals(10, \count($timesheets));
self::assertEquals(10, \count($timesheets));
/** @var Timesheet $entry */
foreach ($timesheets as $entry) {
$this->assertEquals(1, $entry->getActivity()->getId());
self::assertEquals(1, $entry->getActivity()->getId());
}
$this->request($client, '/admin/activity/1/delete');
$this->assertTrue($client->getResponse()->isSuccessful());
self::assertTrue($client->getResponse()->isSuccessful());
$form = $client->getCrawler()->filter('form[name=form]')->form();
$this->assertStringEndsWith($this->createUrl('/admin/activity/1/delete'), $form->getUri());
self::assertStringEndsWith($this->createUrl('/admin/activity/1/delete'), $form->getUri());
$client->submit($form, [
'form' => [
'activity' => $id
@ -416,15 +416,15 @@ class ActivityControllerTest extends ControllerBaseTest
$this->assertHasFlashSuccess($client);
$timesheets = $em->getRepository(Timesheet::class)->findAll();
$this->assertEquals(10, \count($timesheets));
self::assertEquals(10, \count($timesheets));
/** @var Timesheet $entry */
foreach ($timesheets as $entry) {
$this->assertEquals($id, $entry->getActivity()->getId());
self::assertEquals($id, $entry->getActivity()->getId());
}
$this->request($client, '/admin/activity/1/edit');
$this->assertFalse($client->getResponse()->isSuccessful());
self::assertFalse($client->getResponse()->isSuccessful());
}
/**
@ -441,7 +441,7 @@ class ActivityControllerTest extends ControllerBaseTest
);
}
public function getValidationTestData()
public static function getValidationTestData()
{
return [
[

View file

@ -18,7 +18,7 @@ use App\Tests\Mocks\SystemConfigurationFactory;
/**
* @group integration
*/
class CalendarControllerTest extends ControllerBaseTest
class CalendarControllerTest extends AbstractControllerBaseTestCase
{
public function testIsSecure(): void
{
@ -33,13 +33,13 @@ class CalendarControllerTest extends ControllerBaseTest
$this->importFixture($fixtures);
$this->request($client, '/calendar/');
$this->assertTrue($client->getResponse()->isSuccessful());
self::assertTrue($client->getResponse()->isSuccessful());
$crawler = $client->getCrawler();
$calendar = $crawler->filter('div#timesheet_calendar');
$this->assertEquals(1, $calendar->count());
self::assertEquals(1, $calendar->count());
$dragAndDropBoxes = $crawler->filter('div.card-body.drag-and-drop-source');
$this->assertEquals(1, $dragAndDropBoxes->count());
self::assertEquals(1, $dragAndDropBoxes->count());
}
public function testCalendarActionAsSuperAdmin(): void
@ -60,13 +60,13 @@ class CalendarControllerTest extends ControllerBaseTest
$crawler = $client->getCrawler();
$calendar = $crawler->filter('div#timesheet_calendar');
$this->assertEquals(1, $calendar->count());
self::assertEquals(1, $calendar->count());
$content = $client->getResponse()->getContent();
$this->assertStringContainsString("googleCalendarId: 'de.german#holiday@group.v.calendar.google.com',", $content);
$this->assertStringContainsString("name: 'holidays'", $content);
$this->assertStringContainsString("googleCalendarId: 'en.german#holiday@group.v.calendar.google.com',", $content);
$this->assertStringContainsString("name: 'holidays_en'", $content);
self::assertStringContainsString("googleCalendarId: 'de.german#holiday@group.v.calendar.google.com',", $content);
self::assertStringContainsString("name: 'holidays'", $content);
self::assertStringContainsString("googleCalendarId: 'en.german#holiday@group.v.calendar.google.com',", $content);
self::assertStringContainsString("name: 'holidays_en'", $content);
}
protected function getDefaultSettings(): array

View file

@ -14,7 +14,7 @@ use App\Entity\User;
/**
* @group integration
*/
class ContractControllerTest extends ControllerBaseTest
class ContractControllerTest extends AbstractControllerBaseTestCase
{
public function testIsSecure(): void
{

View file

@ -27,7 +27,7 @@ use Symfony\Component\HttpKernel\HttpKernelBrowser;
/**
* @group integration
*/
class CustomerControllerTest extends ControllerBaseTest
class CustomerControllerTest extends AbstractControllerBaseTestCase
{
public function testIsSecure(): void
{
@ -91,7 +91,7 @@ class CustomerControllerTest extends ControllerBaseTest
'page' => 1,
]);
$this->assertTrue($client->getResponse()->isSuccessful());
self::assertTrue($client->getResponse()->isSuccessful());
$this->assertHasDataTable($client);
$this->assertDataTableRowCount($client, 'datatable_customer_admin', 5);
}
@ -113,7 +113,7 @@ class CustomerControllerTest extends ControllerBaseTest
$client = $this->getClientForAuthenticatedUser(User::ROLE_TEAMLEAD);
$this->request($client, '/admin/customer/');
$this->assertTrue($client->getResponse()->isSuccessful());
self::assertTrue($client->getResponse()->isSuccessful());
$form = $client->getCrawler()->filter('form.searchform')->form();
$form->getFormNode()->setAttribute('action', $this->createUrl('/admin/customer/export'));
@ -318,7 +318,7 @@ class CustomerControllerTest extends ControllerBaseTest
$form = $client->getCrawler()->filter('form[name=customer_edit_form]')->form();
$editForm = $client->getCrawler()->filter('form[name=customer_edit_form]')->form();
$this->assertEquals(date_default_timezone_get(), $editForm->get('customer_edit_form[timezone]')->getValue());
self::assertEquals(date_default_timezone_get(), $editForm->get('customer_edit_form[timezone]')->getValue());
$client->submit($form, [
'customer_edit_form' => [
@ -340,12 +340,12 @@ class CustomerControllerTest extends ControllerBaseTest
$dispatcher = self::getContainer()->get('event_dispatcher');
$dispatcher->addSubscriber(new CustomerTestMetaFieldSubscriberMock());
$this->assertAccessIsGranted($client, '/admin/customer/create');
$this->assertTrue($client->getResponse()->isSuccessful());
self::assertTrue($client->getResponse()->isSuccessful());
$form = $client->getCrawler()->filter('form[name=customer_edit_form]')->form();
$this->assertTrue($form->has('customer_edit_form[metaFields][metatestmock][value]'));
$this->assertTrue($form->has('customer_edit_form[metaFields][foobar][value]'));
$this->assertFalse($form->has('customer_edit_form[metaFields][0][value]'));
self::assertTrue($form->has('customer_edit_form[metaFields][metatestmock][value]'));
self::assertTrue($form->has('customer_edit_form[metaFields][foobar][value]'));
self::assertFalse($form->has('customer_edit_form[metaFields][0][value]'));
}
public function testEditAction(): void
@ -353,7 +353,7 @@ class CustomerControllerTest extends ControllerBaseTest
$client = $this->getClientForAuthenticatedUser(User::ROLE_ADMIN);
$this->assertAccessIsGranted($client, '/admin/customer/1/edit');
$form = $client->getCrawler()->filter('form[name=customer_edit_form]')->form();
$this->assertEquals('Test', $form->get('customer_edit_form[name]')->getValue());
self::assertEquals('Test', $form->get('customer_edit_form[name]')->getValue());
$client->submit($form, [
'customer_edit_form' => [
'name' => 'Test Customer 2'
@ -363,7 +363,7 @@ class CustomerControllerTest extends ControllerBaseTest
$client->followRedirect();
$this->request($client, '/admin/customer/1/edit');
$editForm = $client->getCrawler()->filter('form[name=customer_edit_form]')->form();
$this->assertEquals('Test Customer 2', $editForm->get('customer_edit_form[name]')->getValue());
self::assertEquals('Test Customer 2', $editForm->get('customer_edit_form[name]')->getValue());
}
public function testTeamPermissionAction(): void
@ -408,12 +408,12 @@ class CustomerControllerTest extends ControllerBaseTest
$id = $customer->getId();
$this->request($client, '/admin/customer/' . $id . '/edit');
$this->assertTrue($client->getResponse()->isSuccessful());
self::assertTrue($client->getResponse()->isSuccessful());
$this->request($client, '/admin/customer/' . $id . '/delete');
$this->assertTrue($client->getResponse()->isSuccessful());
self::assertTrue($client->getResponse()->isSuccessful());
$form = $client->getCrawler()->filter('form[name=form]')->form();
$this->assertStringEndsWith($this->createUrl('/admin/customer/' . $id . '/delete'), $form->getUri());
self::assertStringEndsWith($this->createUrl('/admin/customer/' . $id . '/delete'), $form->getUri());
$client->submit($form);
$client->followRedirect();
@ -421,7 +421,7 @@ class CustomerControllerTest extends ControllerBaseTest
$this->assertHasFlashSuccess($client);
$this->request($client, '/admin/customer/' . $id . '/edit');
$this->assertFalse($client->getResponse()->isSuccessful());
self::assertFalse($client->getResponse()->isSuccessful());
}
public function testDeleteActionWithTimesheetEntries(): void
@ -435,18 +435,18 @@ class CustomerControllerTest extends ControllerBaseTest
$this->importFixture($fixture);
$timesheets = $em->getRepository(Timesheet::class)->findAll();
$this->assertEquals(10, \count($timesheets));
self::assertEquals(10, \count($timesheets));
/** @var Timesheet $entry */
foreach ($timesheets as $entry) {
$this->assertEquals(1, $entry->getActivity()->getId());
self::assertEquals(1, $entry->getActivity()->getId());
}
$this->request($client, '/admin/customer/1/delete');
$this->assertTrue($client->getResponse()->isSuccessful());
self::assertTrue($client->getResponse()->isSuccessful());
$form = $client->getCrawler()->filter('form[name=form]')->form();
$this->assertStringEndsWith($this->createUrl('/admin/customer/1/delete'), $form->getUri());
self::assertStringEndsWith($this->createUrl('/admin/customer/1/delete'), $form->getUri());
$client->submit($form);
$this->assertIsRedirect($client, $this->createUrl('/admin/customer/'));
@ -456,10 +456,10 @@ class CustomerControllerTest extends ControllerBaseTest
$em->clear();
$timesheets = $em->getRepository(Timesheet::class)->findAll();
$this->assertEquals(0, \count($timesheets));
self::assertEquals(0, \count($timesheets));
$this->request($client, '/admin/customer/1/edit');
$this->assertFalse($client->getResponse()->isSuccessful());
self::assertFalse($client->getResponse()->isSuccessful());
}
public function testDeleteActionWithTimesheetEntriesAndReplacement(): void
@ -478,18 +478,18 @@ class CustomerControllerTest extends ControllerBaseTest
$id = $customer->getId();
$timesheets = $em->getRepository(Timesheet::class)->findAll();
$this->assertEquals(10, \count($timesheets));
self::assertEquals(10, \count($timesheets));
/** @var Timesheet $entry */
foreach ($timesheets as $entry) {
$this->assertEquals(1, $entry->getProject()->getCustomer()->getId());
self::assertEquals(1, $entry->getProject()->getCustomer()->getId());
}
$this->request($client, '/admin/customer/1/delete');
$this->assertTrue($client->getResponse()->isSuccessful());
self::assertTrue($client->getResponse()->isSuccessful());
$form = $client->getCrawler()->filter('form[name=form]')->form();
$this->assertStringEndsWith($this->createUrl('/admin/customer/1/delete'), $form->getUri());
self::assertStringEndsWith($this->createUrl('/admin/customer/1/delete'), $form->getUri());
$client->submit($form, [
'form' => [
'customer' => $id
@ -502,15 +502,15 @@ class CustomerControllerTest extends ControllerBaseTest
$this->assertHasFlashSuccess($client);
$timesheets = $em->getRepository(Timesheet::class)->findAll();
$this->assertEquals(10, \count($timesheets));
self::assertEquals(10, \count($timesheets));
/** @var Timesheet $entry */
foreach ($timesheets as $entry) {
$this->assertEquals($id, $entry->getProject()->getCustomer()->getId());
self::assertEquals($id, $entry->getProject()->getCustomer()->getId());
}
$this->request($client, '/admin/customer/1/edit');
$this->assertFalse($client->getResponse()->isSuccessful());
self::assertFalse($client->getResponse()->isSuccessful());
}
/**
@ -527,7 +527,7 @@ class CustomerControllerTest extends ControllerBaseTest
);
}
public function getValidationTestData()
public static function getValidationTestData()
{
return [
[

View file

@ -12,7 +12,7 @@ namespace App\Tests\Controller;
/**
* @group integration
*/
class DashboardControllerTest extends ControllerBaseTest
class DashboardControllerTest extends AbstractControllerBaseTestCase
{
public function testIsSecure(): void
{
@ -23,7 +23,7 @@ class DashboardControllerTest extends ControllerBaseTest
{
$client = $this->getClientForAuthenticatedUser();
$this->request($client, '/dashboard/');
$this->assertTrue($client->getResponse()->isSuccessful());
self::assertTrue($client->getResponse()->isSuccessful());
$this->assertMainContentClass($client, 'dashboard');
self::assertEquals(1, $client->getCrawler()->filter('div#PaginatedWorkingTimeChartBox canvas')->count());
}

View file

@ -14,7 +14,7 @@ use App\Entity\User;
/**
* @group integration
*/
class DoctorControllerTest extends ControllerBaseTest
class DoctorControllerTest extends AbstractControllerBaseTestCase
{
public function testDoctorIsSecure(): void
{

View file

@ -18,7 +18,7 @@ use Doctrine\ORM\EntityManager;
/**
* @group integration
*/
class ExportControllerTest extends ControllerBaseTest
class ExportControllerTest extends AbstractControllerBaseTestCase
{
public function testIsSecure(): void
{
@ -35,7 +35,7 @@ class ExportControllerTest extends ControllerBaseTest
$client = $this->getClientForAuthenticatedUser(User::ROLE_TEAMLEAD);
$this->request($client, '/export/?performSearch=performSearch');
$this->assertTrue($client->getResponse()->isSuccessful());
self::assertTrue($client->getResponse()->isSuccessful());
$this->assertHasNoEntriesWithFilter($client);
}
@ -83,7 +83,7 @@ class ExportControllerTest extends ControllerBaseTest
$em->flush();
$this->request($client, '/export/?performSearch=performSearch');
$this->assertTrue($client->getResponse()->isSuccessful());
self::assertTrue($client->getResponse()->isSuccessful());
// make sure all existing records are displayed
$this->assertHasDataTable($client);
@ -106,7 +106,7 @@ class ExportControllerTest extends ControllerBaseTest
$type = $button->getAttribute('data-type');
unset($expected[$type]);
}
$this->assertEmpty($expected);
self::assertEmpty($expected);
}
public function testIndexActionWithEntriesForTeamleadDoesNotShowUserWithoutTeam(): void
@ -126,7 +126,7 @@ class ExportControllerTest extends ControllerBaseTest
$this->importFixture($fixture);
$this->request($client, '/export/?performSearch=performSearch');
$this->assertTrue($client->getResponse()->isSuccessful());
self::assertTrue($client->getResponse()->isSuccessful());
// make sure existing records are not displayed
$this->assertHasNoEntriesWithFilter($client);
@ -142,7 +142,7 @@ class ExportControllerTest extends ControllerBaseTest
$this->importFixture($fixture);
$this->request($client, '/export/?performSearch=performSearch');
$this->assertTrue($client->getResponse()->isSuccessful());
self::assertTrue($client->getResponse()->isSuccessful());
// make sure all existing records are displayed
$this->assertHasDataTable($client);
@ -165,7 +165,7 @@ class ExportControllerTest extends ControllerBaseTest
$type = $button->getAttribute('data-type');
unset($expected[$type]);
}
$this->assertEmpty($expected);
self::assertEmpty($expected);
}
public function testExportActionWithMissingRenderer(): void
@ -180,7 +180,7 @@ class ExportControllerTest extends ControllerBaseTest
$client = $this->getClientForAuthenticatedUser(User::ROLE_TEAMLEAD);
$this->request($client, '/export/', 'GET');
$this->assertTrue($client->getResponse()->isSuccessful());
self::assertTrue($client->getResponse()->isSuccessful());
$form = $client->getCrawler()->filter('#export-form')->form();
$node = $form->getFormNode();
@ -210,7 +210,7 @@ class ExportControllerTest extends ControllerBaseTest
$this->importFixture($fixture);
$this->request($client, '/export/');
$this->assertTrue($client->getResponse()->isSuccessful());
self::assertTrue($client->getResponse()->isSuccessful());
$form = $client->getCrawler()->filter('#export-form')->form();
$node = $form->getFormNode();
@ -224,26 +224,26 @@ class ExportControllerTest extends ControllerBaseTest
]);
$response = $client->getResponse();
$this->assertTrue($response->isSuccessful());
self::assertTrue($response->isSuccessful());
$content = $response->getContent();
$node = $client->getCrawler()->filter('body');
$this->assertEquals(1, $node->count());
self::assertEquals(1, $node->count());
// poor mans assertions ;-)
/** @var \DOMElement $element */
$element = $node->getIterator()[0];
$this->assertStringContainsString('export_print', $element->getAttribute('class'));
$this->assertStringContainsString('<h2 id="doc-title" contenteditable="true"', $content);
$this->assertStringContainsString('<h3 class="card-title" id="doc-summary" contenteditable="true" data-original="Summary">Summary</h3>', $content);
self::assertStringContainsString('export_print', $element->getAttribute('class'));
self::assertStringContainsString('<h2 id="doc-title" contenteditable="true"', $content);
self::assertStringContainsString('<h3 class="card-title" id="doc-summary" contenteditable="true" data-original="Summary">Summary</h3>', $content);
$node = $client->getCrawler()->filter('section.export div#export-records table.dataTable tbody tr');
// 20 rows + the summary footer
$this->assertEquals(21, $node->count());
self::assertEquals(21, $node->count());
$timesheets = $em->getRepository(Timesheet::class)->findAll();
/** @var Timesheet $timesheet */
foreach ($timesheets as $timesheet) {
$this->assertTrue($timesheet->isExported());
self::assertTrue($timesheet->isExported());
}
}
}

View file

@ -15,7 +15,7 @@ use App\Tests\DataFixtures\TimesheetFixtures;
/**
* @group integration
*/
class FavoriteControllerTest extends ControllerBaseTest
class FavoriteControllerTest extends AbstractControllerBaseTestCase
{
public function testIsSecure(): void
{
@ -35,7 +35,7 @@ class FavoriteControllerTest extends ControllerBaseTest
$this->importFixture($fixture);
$this->request($client, '/favorite/timesheet/');
$this->assertTrue($client->getResponse()->isSuccessful());
self::assertTrue($client->getResponse()->isSuccessful());
$content = $client->getResponse()->getContent();
self::assertNotFalse($content);

View file

@ -14,7 +14,7 @@ use App\Entity\User;
/**
* @group integration
*/
class HelpControllerTest extends ControllerBaseTest
class HelpControllerTest extends AbstractControllerBaseTestCase
{
public function testHelpLocalesAction(): void
{

View file

@ -16,7 +16,7 @@ use App\Form\Type\InitialViewType;
/**
* @group integration
*/
class HomepageControllerTest extends ControllerBaseTest
class HomepageControllerTest extends AbstractControllerBaseTestCase
{
public function testIsSecure(): void
{

View file

@ -20,7 +20,7 @@ use Symfony\Component\HttpFoundation\BinaryFileResponse;
/**
* @group integration
*/
class InvoiceControllerTest extends ControllerBaseTest
class InvoiceControllerTest extends AbstractControllerBaseTestCase
{
protected function setUp(): void
{
@ -76,7 +76,7 @@ class InvoiceControllerTest extends ControllerBaseTest
$id = $templates[0]->getId();
$this->request($client, '/invoice/?customers[]=1&template=' . $id);
$this->assertTrue($client->getResponse()->isSuccessful());
self::assertTrue($client->getResponse()->isSuccessful());
$this->assertHasNoEntriesWithFilter($client);
}
@ -90,7 +90,7 @@ class InvoiceControllerTest extends ControllerBaseTest
$this->request($client, '/invoice/template');
$this->assertTrue($client->getResponse()->isSuccessful());
self::assertTrue($client->getResponse()->isSuccessful());
$this->assertHasDataTable($client);
}
@ -98,7 +98,7 @@ class InvoiceControllerTest extends ControllerBaseTest
{
$client = $this->getClientForAuthenticatedUser(User::ROLE_ADMIN);
$this->request($client, '/invoice/template/create');
$this->assertTrue($client->getResponse()->isSuccessful());
self::assertTrue($client->getResponse()->isSuccessful());
$form = $client->getCrawler()->filter('form[name=invoice_template_form]')->form();
$client->submit($form, [
@ -114,7 +114,7 @@ class InvoiceControllerTest extends ControllerBaseTest
$this->assertIsRedirect($client, $this->createUrl('/invoice/template'));
$client->followRedirect();
$this->assertTrue($client->getResponse()->isSuccessful());
self::assertTrue($client->getResponse()->isSuccessful());
$this->assertHasFlashSuccess($client);
$template = $this->getEntityManager()->getRepository(InvoiceTemplate::class)->findAll()[0];
@ -136,19 +136,19 @@ class InvoiceControllerTest extends ControllerBaseTest
$template = $templates[0];
$this->request($client, '/invoice/template/create/' . $template->getId());
$this->assertTrue($client->getResponse()->isSuccessful());
self::assertTrue($client->getResponse()->isSuccessful());
$form = $client->getCrawler()->filter('form[name=invoice_template_form]')->form();
$values = $form->getPhpValues()['invoice_template_form'];
$this->assertEquals($template->getName() . ' (1)', $values['name']);
$this->assertEquals($template->getTitle(), $values['title']);
$this->assertEquals($template->getDueDays(), $values['dueDays']);
$this->assertEquals($template->getCalculator(), $values['calculator']);
$this->assertEquals($template->getVat(), $values['vat']);
$this->assertEquals($template->getRenderer(), $values['renderer']);
$this->assertEquals($template->getCompany(), $values['company']);
$this->assertEquals($template->getAddress(), $values['address']);
$this->assertEquals($template->getPaymentTerms(), $values['paymentTerms']);
self::assertEquals($template->getName() . ' (1)', $values['name']);
self::assertEquals($template->getTitle(), $values['title']);
self::assertEquals($template->getDueDays(), $values['dueDays']);
self::assertEquals($template->getCalculator(), $values['calculator']);
self::assertEquals($template->getVat(), $values['vat']);
self::assertEquals($template->getRenderer(), $values['renderer']);
self::assertEquals($template->getCompany(), $values['company']);
self::assertEquals($template->getAddress(), $values['address']);
self::assertEquals($template->getPaymentTerms(), $values['paymentTerms']);
}
public function testCreateAction(): void
@ -170,11 +170,11 @@ class InvoiceControllerTest extends ControllerBaseTest
;
$timesheets = $this->importFixture($fixture);
foreach ($timesheets as $timesheet) {
$this->assertFalse($timesheet->isExported());
self::assertFalse($timesheet->isExported());
}
$this->request($client, '/invoice/');
$this->assertTrue($client->getResponse()->isSuccessful());
self::assertTrue($client->getResponse()->isSuccessful());
$dateRange = $this->formatDateRange($begin, $end);
@ -188,11 +188,11 @@ class InvoiceControllerTest extends ControllerBaseTest
'customers' => [1],
]);
$this->assertTrue($client->getResponse()->isSuccessful());
self::assertTrue($client->getResponse()->isSuccessful());
// no warning should be displayed
$node = $client->getCrawler()->filter('div.callout.callout-warning.lead');
$this->assertEquals(0, $node->count());
self::assertEquals(0, $node->count());
// but the datatable with all timesheets
$this->assertDataTableRowCount($client, 'datatable_invoice_create', 20);
@ -208,16 +208,16 @@ class InvoiceControllerTest extends ControllerBaseTest
$this->request($client, $action);
$this->assertIsRedirect($client, '/invoice/show?id=', false);
$client->followRedirect();
$this->assertTrue($client->getResponse()->isSuccessful());
self::assertTrue($client->getResponse()->isSuccessful());
$this->assertDataTableRowCount($client, 'datatable_invoices', 1);
$em = $this->getEntityManager();
$em->clear();
$timesheets = $em->getRepository(Timesheet::class)->findAll();
$this->assertCount(20, $timesheets);
self::assertCount(20, $timesheets);
/** @var Timesheet $timesheet */
foreach ($timesheets as $timesheet) {
$this->assertTrue($timesheet->isExported());
self::assertTrue($timesheet->isExported());
}
}
@ -240,7 +240,7 @@ class InvoiceControllerTest extends ControllerBaseTest
$this->importFixture($fixture);
$this->request($client, '/invoice/');
$this->assertTrue($client->getResponse()->isSuccessful());
self::assertTrue($client->getResponse()->isSuccessful());
$dateRange = $this->formatDateRange($begin, $end);
@ -254,7 +254,7 @@ class InvoiceControllerTest extends ControllerBaseTest
'customers' => [1],
]);
$this->assertTrue($client->getResponse()->isSuccessful());
self::assertTrue($client->getResponse()->isSuccessful());
$params = [
'daterange' => $dateRange,
@ -267,13 +267,13 @@ class InvoiceControllerTest extends ControllerBaseTest
$action = '/invoice/preview/1/' . $token . '?' . http_build_query($params);
$this->request($client, $action);
$this->assertTrue($client->getResponse()->isSuccessful());
self::assertTrue($client->getResponse()->isSuccessful());
$node = $client->getCrawler()->filter('body');
$this->assertEquals(1, $node->count());
self::assertEquals(1, $node->count());
/** @var \DOMElement $element */
$element = $node->getIterator()[0];
$this->assertEquals('invoice_print', $element->getAttribute('class'));
self::assertEquals('invoice_print', $element->getAttribute('class'));
}
public function testCreateActionAsAdminWithDownloadAndStatusChange(): void
@ -295,7 +295,7 @@ class InvoiceControllerTest extends ControllerBaseTest
$this->importFixture($fixture);
$this->request($client, '/invoice/');
$this->assertTrue($client->getResponse()->isSuccessful());
self::assertTrue($client->getResponse()->isSuccessful());
$dateRange = $this->formatDateRange($begin, $end);
@ -309,11 +309,11 @@ class InvoiceControllerTest extends ControllerBaseTest
'customers' => [1],
]);
$this->assertTrue($client->getResponse()->isSuccessful());
self::assertTrue($client->getResponse()->isSuccessful());
// no warning should be displayed
$node = $client->getCrawler()->filter('div.callout.callout-warning.lead');
$this->assertEquals(0, $node->count());
self::assertEquals(0, $node->count());
// but the datatable with all timesheets
$this->assertDataTableRowCount($client, 'datatable_invoice_create', 20);
@ -331,7 +331,7 @@ class InvoiceControllerTest extends ControllerBaseTest
$this->assertIsRedirect($client, '/invoice/show?id=', false);
$client->followRedirect();
$this->assertTrue($client->getResponse()->isSuccessful());
self::assertTrue($client->getResponse()->isSuccessful());
$invoices = $this->getEntityManager()->getRepository(Invoice::class)->findAll();
self::assertCount(1, $invoices);
@ -345,23 +345,23 @@ class InvoiceControllerTest extends ControllerBaseTest
// make sure the invoice is saved
$this->request($client, '/invoice/download/' . $id);
$response = $client->getResponse();
$this->assertTrue($response->isSuccessful());
self::assertTrue($response->isSuccessful());
self::assertInstanceOf(BinaryFileResponse::class, $response);
self::assertFileExists($response->getFile());
$this->request($client, '/invoice/show');
$this->assertTrue($client->getResponse()->isSuccessful());
self::assertTrue($client->getResponse()->isSuccessful());
$link = $client->getCrawler()->selectLink('Waiting for payment');
$this->request($client, $link->attr('href'));
$this->assertIsRedirect($client, '/invoice/show');
$client->followRedirect();
$this->assertTrue($client->getResponse()->isSuccessful());
self::assertTrue($client->getResponse()->isSuccessful());
$link = $client->getCrawler()->selectLink('Invoice paid');
$url = $link->attr('href');
$this->request($client, $url);
$this->assertTrue($client->getResponse()->isSuccessful());
self::assertTrue($client->getResponse()->isSuccessful());
$this->assertHasValidationError(
$client,
@ -375,7 +375,7 @@ class InvoiceControllerTest extends ControllerBaseTest
['#invoice_edit_form_paymentDate']
);
$this->assertTrue($client->getResponse()->isSuccessful());
self::assertTrue($client->getResponse()->isSuccessful());
$form = $client->getCrawler()->filter('form[name=invoice_edit_form]')->form();
$client->submit($form, [
@ -386,13 +386,13 @@ class InvoiceControllerTest extends ControllerBaseTest
$this->assertIsRedirect($client, '/invoice/show');
$client->followRedirect();
$this->assertTrue($client->getResponse()->isSuccessful());
self::assertTrue($client->getResponse()->isSuccessful());
$token = $this->getCsrfToken($client, 'invoice.status');
$this->request($client, '/invoice/change-status/' . $id . '/new/' . $token->getValue());
$this->assertIsRedirect($client, '/invoice/show');
$client->followRedirect();
$this->assertTrue($client->getResponse()->isSuccessful());
self::assertTrue($client->getResponse()->isSuccessful());
}
public function testEditTemplateAction(): void
@ -417,7 +417,7 @@ class InvoiceControllerTest extends ControllerBaseTest
$this->assertIsRedirect($client, $this->createUrl('/invoice/template'));
$client->followRedirect();
$this->assertTrue($client->getResponse()->isSuccessful());
self::assertTrue($client->getResponse()->isSuccessful());
$this->assertHasFlashSuccess($client);
}
@ -438,10 +438,10 @@ class InvoiceControllerTest extends ControllerBaseTest
$this->assertIsRedirect($client, '/invoice/template');
$client->followRedirect();
$this->assertTrue($client->getResponse()->isSuccessful());
self::assertTrue($client->getResponse()->isSuccessful());
$this->assertHasFlashSuccess($client);
$this->assertEquals(0, $this->getEntityManager()->getRepository(InvoiceTemplate::class)->count([]));
self::assertEquals(0, $this->getEntityManager()->getRepository(InvoiceTemplate::class)->count([]));
}
public function testUploadDocumentAction(): void
@ -452,7 +452,7 @@ class InvoiceControllerTest extends ControllerBaseTest
$this->importFixture($fixture);
$this->request($client, '/invoice/document_upload');
$this->assertTrue($client->getResponse()->isSuccessful());
self::assertTrue($client->getResponse()->isSuccessful());
$node = $client->getCrawler()->filter('form[name=invoice_document_upload_form]');
self::assertEquals(1, $node->count(), 'Could not find upload form');

View file

@ -15,7 +15,7 @@ use Symfony\Component\HttpKernel\HttpKernelBrowser;
/**
* @group integration
*/
class LayoutControllerTest extends ControllerBaseTest
class LayoutControllerTest extends AbstractControllerBaseTestCase
{
public function testNavigationMenus(): void
{
@ -24,7 +24,7 @@ class LayoutControllerTest extends ControllerBaseTest
$user = $this->getUserByRole(User::ROLE_USER);
$this->request($client, '/dashboard/');
$this->assertTrue($client->getResponse()->isSuccessful());
self::assertTrue($client->getResponse()->isSuccessful());
$this->assertHasMainHeader($client, $user);
$this->assertHasNavigation($client);
@ -34,22 +34,22 @@ class LayoutControllerTest extends ControllerBaseTest
{
$content = $client->getResponse()->getContent();
$this->assertStringContainsString('data-bs-toggle="dropdown" aria-label="Open personal menu"', $content);
$this->assertStringContainsString('href="/en/profile/' . $user->getUserIdentifier() . '"', $content);
$this->assertStringContainsString('href="/en/profile/' . $user->getUserIdentifier() . '/edit"', $content);
$this->assertStringContainsString('href="/en/profile/' . $user->getUserIdentifier() . '/prefs"', $content);
$this->assertStringContainsString('href="/en/logout', $content);
self::assertStringContainsString('data-bs-toggle="dropdown" aria-label="Open personal menu"', $content);
self::assertStringContainsString('href="/en/profile/' . $user->getUserIdentifier() . '"', $content);
self::assertStringContainsString('href="/en/profile/' . $user->getUserIdentifier() . '/edit"', $content);
self::assertStringContainsString('href="/en/profile/' . $user->getUserIdentifier() . '/prefs"', $content);
self::assertStringContainsString('href="/en/logout', $content);
}
protected function assertHasNavigation(HttpKernelBrowser $client): void
{
$content = $client->getResponse()->getContent();
$this->assertStringContainsString('href="/en/dashboard/"', $content);
$this->assertStringContainsString('href="/en/timesheet/"', $content);
$this->assertStringContainsString('My times', $content);
$this->assertStringContainsString('href="/en/calendar/"', $content);
$this->assertStringContainsString('Calendar', $content);
self::assertStringContainsString('href="/en/dashboard/"', $content);
self::assertStringContainsString('href="/en/timesheet/"', $content);
self::assertStringContainsString('My times', $content);
self::assertStringContainsString('href="/en/calendar/"', $content);
self::assertStringContainsString('Calendar', $content);
}
public function testActiveEntries(): void
@ -57,10 +57,10 @@ class LayoutControllerTest extends ControllerBaseTest
$client = $this->getClientForAuthenticatedUser(User::ROLE_USER);
$this->request($client, '/dashboard/');
$this->assertTrue($client->getResponse()->isSuccessful());
self::assertTrue($client->getResponse()->isSuccessful());
$content = $client->getResponse()->getContent();
$this->assertStringContainsString('<a title="Start time-tracking" href="/en/timesheet/create" class="modal-ajax-form ticktac-start btn', $content);
self::assertStringContainsString('<a title="Start time-tracking" href="/en/timesheet/create" class="modal-ajax-form ticktac-start btn', $content);
}
}

View file

@ -17,7 +17,7 @@ use App\Entity\User;
/**
* @group integration
*/
class PermissionControllerTest extends ControllerBaseTest
class PermissionControllerTest extends AbstractControllerBaseTestCase
{
public function testIsSecure(): void
{
@ -135,10 +135,10 @@ class PermissionControllerTest extends ControllerBaseTest
]);
$this->assertIsRedirect($client, $this->createUrl('/profile/' . urlencode(UserFixtures::USERNAME_USER) . '/roles'));
$client->followRedirect();
$this->assertTrue($client->getResponse()->isSuccessful());
self::assertTrue($client->getResponse()->isSuccessful());
$user = $this->getUserByName(UserFixtures::USERNAME_USER);
$this->assertEquals(['ROLE_TEAMLEAD', 'ROLE_SUPER_ADMIN', 'TEST_ROLE', 'ROLE_USER'], $user->getRoles());
self::assertEquals(['ROLE_TEAMLEAD', 'ROLE_SUPER_ADMIN', 'TEST_ROLE', 'ROLE_USER'], $user->getRoles());
$this->request($client, '/admin/permissions');
$node = $client->getCrawler()->filter('div.card .card-title a.confirmation-link');
@ -154,7 +154,7 @@ class PermissionControllerTest extends ControllerBaseTest
// verify that role was removed from user
$user = $this->getUserByName(UserFixtures::USERNAME_USER);
$this->assertEquals(['ROLE_TEAMLEAD', 'ROLE_SUPER_ADMIN', 'ROLE_USER'], $user->getRoles());
self::assertEquals(['ROLE_TEAMLEAD', 'ROLE_SUPER_ADMIN', 'ROLE_USER'], $user->getRoles());
}
public function testSavePermissionIsSecured(): void
@ -191,7 +191,7 @@ class PermissionControllerTest extends ControllerBaseTest
$em = $this->getEntityManager();
$rolePermissions = $em->getRepository(RolePermission::class)->findAll();
$this->assertEquals(0, \count($rolePermissions));
self::assertEquals(0, \count($rolePermissions));
$roles = $em->getRepository(Role::class)->findAll();
$id = null;
@ -212,7 +212,7 @@ class PermissionControllerTest extends ControllerBaseTest
self::assertArrayHasKey('token', $result);
$rolePermissions = $em->getRepository(RolePermission::class)->findAll();
$this->assertCount(1, $rolePermissions);
self::assertCount(1, $rolePermissions);
$permission = $rolePermissions[0];
self::assertInstanceOf(RolePermission::class, $permission);
self::assertEquals('view_user', $permission->getPermission());
@ -232,7 +232,7 @@ class PermissionControllerTest extends ControllerBaseTest
self::assertArrayHasKey('token', $result);
$rolePermissions = $em->getRepository(RolePermission::class)->findAll();
$this->assertEquals(1, \count($rolePermissions));
self::assertEquals(1, \count($rolePermissions));
$permission = $rolePermissions[0];
self::assertInstanceOf(RolePermission::class, $permission);
self::assertEquals('view_user', $permission->getPermission());

View file

@ -16,7 +16,7 @@ use App\Tests\Plugin\Fixtures\TestPlugin\TestPlugin;
/**
* @group integration
*/
class PluginControllerTest extends ControllerBaseTest
class PluginControllerTest extends AbstractControllerBaseTestCase
{
public function testIsSecure(): void
{

View file

@ -22,7 +22,7 @@ use Symfony\Component\PasswordHasher\Hasher\PasswordHasherFactoryInterface;
/**
* @group integration
*/
class ProfileControllerTest extends ControllerBaseTest
class ProfileControllerTest extends AbstractControllerBaseTestCase
{
public function testIsSecure(): void
{
@ -40,16 +40,16 @@ class ProfileControllerTest extends ControllerBaseTest
{
$client = $this->getClientForAuthenticatedUser(User::ROLE_USER);
$this->request($client, '/profile/' . UserFixtures::USERNAME_USER);
$this->assertTrue($client->getResponse()->isSuccessful());
self::assertTrue($client->getResponse()->isSuccessful());
$this->assertHasProfileBox($client, 'John Doe');
$this->assertHasAboutMeBox($client, UserFixtures::USERNAME_USER);
$content = $client->getResponse()->getContent();
$year = (new \DateTime())->format('Y');
$this->assertStringContainsString('<h3 class="card-title">' . $year, $content);
$this->assertStringContainsString('new Chart(', $content);
$this->assertStringContainsString('<canvas id="userProfileChart' . $year . '"', $content);
self::assertStringContainsString('<h3 class="card-title">' . $year, $content);
self::assertStringContainsString('new Chart(', $content);
self::assertStringContainsString('<canvas id="userProfileChart' . $year . '"', $content);
}
public function testIndexAction(): void
@ -70,13 +70,13 @@ class ProfileControllerTest extends ControllerBaseTest
}
$this->request($client, '/profile/' . UserFixtures::USERNAME_USER);
$this->assertTrue($client->getResponse()->isSuccessful());
self::assertTrue($client->getResponse()->isSuccessful());
$content = $client->getResponse()->getContent();
foreach ($dates as $start) {
$year = $start->format('Y');
$this->assertStringContainsString('<h3 class="card-title">' . $year, $content);
$this->assertStringContainsString('<canvas id="userProfileChart' . $year . '"', $content);
self::assertStringContainsString('<h3 class="card-title">' . $year, $content);
self::assertStringContainsString('<canvas id="userProfileChart' . $year . '"', $content);
}
$this->assertHasProfileBox($client, 'John Doe');
@ -86,19 +86,19 @@ class ProfileControllerTest extends ControllerBaseTest
protected function assertHasProfileBox(HttpKernelBrowser $client, string $username): void
{
$profileBox = $client->getCrawler()->filter('div.box-user-profile');
$this->assertEquals(1, $profileBox->count());
self::assertEquals(1, $profileBox->count());
$profileAvatar = $profileBox->filter('span.avatar');
$this->assertEquals(1, $profileAvatar->count());
self::assertEquals(1, $profileAvatar->count());
}
protected function assertHasAboutMeBox(HttpKernelBrowser $client, string $username): void
{
$content = $client->getResponse()->getContent();
$this->assertStringContainsString('<div class="datagrid-content">' . $username . '</div>', $content);
self::assertStringContainsString('<div class="datagrid-content">' . $username . '</div>', $content);
}
public function getTabTestData(): array
public static function getTabTestData(): array
{
return [
[User::ROLE_USER, UserFixtures::USERNAME_USER],
@ -113,14 +113,14 @@ class ProfileControllerTest extends ControllerBaseTest
{
$client = $this->getClientForAuthenticatedUser($role);
$this->request($client, '/profile/' . $username . '/edit');
$this->assertTrue($client->getResponse()->isSuccessful());
self::assertTrue($client->getResponse()->isSuccessful());
}
public function testIndexActionWithDifferentUsername(): void
{
$client = $this->getClientForAuthenticatedUser();
$this->request($client, '/profile/' . UserFixtures::USERNAME_TEAMLEAD);
$this->assertFalse($client->getResponse()->isSuccessful());
self::assertFalse($client->getResponse()->isSuccessful());
}
public function testEditAction(): void
@ -131,11 +131,11 @@ class ProfileControllerTest extends ControllerBaseTest
/** @var User $user */
$user = $this->getUserByRole(User::ROLE_USER);
$this->assertEquals(UserFixtures::USERNAME_USER, $user->getUserIdentifier());
$this->assertEquals('John Doe', $user->getAlias());
$this->assertEquals('Developer', $user->getTitle());
$this->assertEquals('john_user@example.com', $user->getEmail());
$this->assertTrue($user->isEnabled());
self::assertEquals(UserFixtures::USERNAME_USER, $user->getUserIdentifier());
self::assertEquals('John Doe', $user->getAlias());
self::assertEquals('Developer', $user->getTitle());
self::assertEquals('john_user@example.com', $user->getEmail());
self::assertTrue($user->isEnabled());
$form = $client->getCrawler()->filter('form[name=user_edit]')->form();
$client->submit($form, [
@ -148,17 +148,17 @@ class ProfileControllerTest extends ControllerBaseTest
$this->assertIsRedirect($client, $this->createUrl('/profile/' . urlencode(UserFixtures::USERNAME_USER) . '/edit'));
$client->followRedirect();
$this->assertTrue($client->getResponse()->isSuccessful());
self::assertTrue($client->getResponse()->isSuccessful());
$this->assertHasFlashSuccess($client);
$user = $this->getUserByRole(User::ROLE_USER);
$this->assertEquals(UserFixtures::USERNAME_USER, $user->getUserIdentifier());
$this->assertEquals('Johnny', $user->getAlias());
$this->assertEquals('Code Monkey', $user->getTitle());
$this->assertEquals('updated@example.com', $user->getEmail());
$this->assertTrue($user->isEnabled());
self::assertEquals(UserFixtures::USERNAME_USER, $user->getUserIdentifier());
self::assertEquals('Johnny', $user->getAlias());
self::assertEquals('Code Monkey', $user->getTitle());
self::assertEquals('updated@example.com', $user->getEmail());
self::assertTrue($user->isEnabled());
}
public function testEditActionWithActiveFlag(): void
@ -178,17 +178,17 @@ class ProfileControllerTest extends ControllerBaseTest
$this->assertIsRedirect($client, $this->createUrl('/profile/' . urlencode(UserFixtures::USERNAME_USER) . '/edit'));
$client->followRedirect();
$this->assertTrue($client->getResponse()->isSuccessful());
self::assertTrue($client->getResponse()->isSuccessful());
$this->assertHasFlashSuccess($client);
$user = $this->getUserByRole(User::ROLE_USER);
$this->assertEquals(UserFixtures::USERNAME_USER, $user->getUserIdentifier());
$this->assertEquals('Johnny', $user->getAlias());
$this->assertEquals('Code Monkey', $user->getTitle());
$this->assertEquals('updated@example.com', $user->getEmail());
$this->assertFalse($user->isEnabled());
self::assertEquals(UserFixtures::USERNAME_USER, $user->getUserIdentifier());
self::assertEquals('Johnny', $user->getAlias());
self::assertEquals('Code Monkey', $user->getTitle());
self::assertEquals('updated@example.com', $user->getEmail());
self::assertFalse($user->isEnabled());
}
public function testPasswordAction(): void
@ -202,9 +202,9 @@ class ProfileControllerTest extends ControllerBaseTest
/** @var PasswordHasherFactoryInterface $passwordEncoder */
$passwordEncoder = self::getContainer()->get('security.password_hasher_factory');
$this->assertTrue($passwordEncoder->getPasswordHasher($user)->verify($user->getPassword(), UserFixtures::DEFAULT_PASSWORD));
$this->assertFalse($passwordEncoder->getPasswordHasher($user)->verify($user->getPassword(), 'test123'));
$this->assertEquals(UserFixtures::USERNAME_USER, $user->getUserIdentifier());
self::assertTrue($passwordEncoder->getPasswordHasher($user)->verify($user->getPassword(), UserFixtures::DEFAULT_PASSWORD));
self::assertFalse($passwordEncoder->getPasswordHasher($user)->verify($user->getPassword(), 'test123'));
self::assertEquals(UserFixtures::USERNAME_USER, $user->getUserIdentifier());
$form = $client->getCrawler()->filter('form[name=user_password]')->form();
$client->submit($form, [
@ -221,8 +221,8 @@ class ProfileControllerTest extends ControllerBaseTest
// are the old ones, so following the redirect would fail with "Unauthorized".
$user = $this->getUserByRole(User::ROLE_USER);
$this->assertFalse($passwordEncoder->getPasswordHasher($user)->verify($user->getPassword(), UserFixtures::DEFAULT_PASSWORD));
$this->assertTrue($passwordEncoder->getPasswordHasher($user)->verify($user->getPassword(), 'test1234'));
self::assertFalse($passwordEncoder->getPasswordHasher($user)->verify($user->getPassword(), UserFixtures::DEFAULT_PASSWORD));
self::assertTrue($passwordEncoder->getPasswordHasher($user)->verify($user->getPassword(), 'test1234'));
}
public function testPasswordActionFailsIfPasswordLengthToShort(): void
@ -256,9 +256,9 @@ class ProfileControllerTest extends ControllerBaseTest
/** @var PasswordHasherFactoryInterface $passwordEncoder */
$passwordEncoder = self::getContainer()->get('security.password_hasher_factory');
$this->assertTrue($passwordEncoder->getPasswordHasher($user)->verify($user->getApiToken(), UserFixtures::DEFAULT_API_TOKEN));
$this->assertFalse($passwordEncoder->getPasswordHasher($user)->verify($user->getApiToken(), 'test1234'));
$this->assertEquals(UserFixtures::USERNAME_USER, $user->getUserIdentifier());
self::assertTrue($passwordEncoder->getPasswordHasher($user)->verify($user->getApiToken(), UserFixtures::DEFAULT_API_TOKEN));
self::assertFalse($passwordEncoder->getPasswordHasher($user)->verify($user->getApiToken(), 'test1234'));
self::assertEquals(UserFixtures::USERNAME_USER, $user->getUserIdentifier());
$form = $client->getCrawler()->filter('form[name=user_api_password]')->form();
$client->submit($form, [
@ -272,14 +272,14 @@ class ProfileControllerTest extends ControllerBaseTest
$this->assertIsRedirect($client, $this->createUrl('/profile/' . urlencode(UserFixtures::USERNAME_USER) . '/api-token'));
$client->followRedirect();
$this->assertTrue($client->getResponse()->isSuccessful());
self::assertTrue($client->getResponse()->isSuccessful());
$this->assertHasFlashSuccess($client);
$user = $this->getUserByRole(User::ROLE_USER);
$this->assertFalse($passwordEncoder->getPasswordHasher($user)->verify($user->getApiToken(), UserFixtures::DEFAULT_API_TOKEN));
$this->assertTrue($passwordEncoder->getPasswordHasher($user)->verify($user->getApiToken(), 'test1234'));
self::assertFalse($passwordEncoder->getPasswordHasher($user)->verify($user->getApiToken(), UserFixtures::DEFAULT_API_TOKEN));
self::assertTrue($passwordEncoder->getPasswordHasher($user)->verify($user->getApiToken(), 'test1234'));
}
public function testApiTokenActionFailsIfPasswordLengthToShort(): void
@ -304,7 +304,7 @@ class ProfileControllerTest extends ControllerBaseTest
{
$client = $this->getClientForAuthenticatedUser(User::ROLE_TEAMLEAD);
$this->request($client, '/profile/' . UserFixtures::USERNAME_USER . '/roles');
$this->assertFalse($client->getResponse()->isSuccessful());
self::assertFalse($client->getResponse()->isSuccessful());
}
public function testRolesAction(): void
@ -315,7 +315,7 @@ class ProfileControllerTest extends ControllerBaseTest
/** @var User $user */
$user = $this->getUserByRole(User::ROLE_USER);
$this->assertEquals(['ROLE_USER'], $user->getRoles());
self::assertEquals(['ROLE_USER'], $user->getRoles());
$form = $client->getCrawler()->filter('form[name=user_roles]')->form();
$client->submit($form, [
@ -327,13 +327,13 @@ class ProfileControllerTest extends ControllerBaseTest
$this->assertIsRedirect($client, $this->createUrl('/profile/' . urlencode(UserFixtures::USERNAME_USER) . '/roles'));
$client->followRedirect();
$this->assertTrue($client->getResponse()->isSuccessful());
self::assertTrue($client->getResponse()->isSuccessful());
$this->assertHasFlashSuccess($client);
$user = $this->getUserByRole(User::ROLE_USER);
$this->assertEquals(['ROLE_TEAMLEAD', 'ROLE_SUPER_ADMIN', 'ROLE_USER'], $user->getRoles());
self::assertEquals(['ROLE_TEAMLEAD', 'ROLE_SUPER_ADMIN', 'ROLE_USER'], $user->getRoles());
}
public function testTeamsActionIsSecured(): void
@ -364,7 +364,7 @@ class ProfileControllerTest extends ControllerBaseTest
/** @var User $user */
$user = $this->getUserByRole(User::ROLE_USER);
$this->assertEquals([], $user->getTeams());
self::assertEquals([], $user->getTeams());
$form = $client->getCrawler()->filter('form[name=user_teams]')->form();
/** @var ChoiceFormField $team */
@ -375,16 +375,16 @@ class ProfileControllerTest extends ControllerBaseTest
$this->assertIsRedirect($client, $this->createUrl('/profile/' . urlencode(UserFixtures::USERNAME_USER) . '/teams'));
$client->followRedirect();
$this->assertTrue($client->getResponse()->isSuccessful());
self::assertTrue($client->getResponse()->isSuccessful());
$this->assertHasFlashSuccess($client);
$user = $this->getUserByRole(User::ROLE_USER);
$this->assertCount(1, $user->getTeams());
self::assertCount(1, $user->getTeams());
}
public function getPreferencesTestData(): array
public static function getPreferencesTestData(): array
{
return [
// assert that the user doesn't have the "hourly-rate_own_profile" permission
@ -411,9 +411,9 @@ class ProfileControllerTest extends ControllerBaseTest
/** @var User $user */
$user = $this->getUserByName($username);
$this->assertEquals($hourlyRateOriginal, $user->getPreferenceValue(UserPreference::HOURLY_RATE));
$this->assertNull($user->getPreferenceValue(UserPreference::INTERNAL_RATE));
$this->assertEquals('default', $user->getPreferenceValue(UserPreference::SKIN));
self::assertEquals($hourlyRateOriginal, $user->getPreferenceValue(UserPreference::HOURLY_RATE));
self::assertNull($user->getPreferenceValue(UserPreference::INTERNAL_RATE));
self::assertEquals('default', $user->getPreferenceValue(UserPreference::SKIN));
$data = [
UserPreference::TIMEZONE => ['value' => 'America/Creston'],
@ -439,23 +439,23 @@ class ProfileControllerTest extends ControllerBaseTest
$this->assertIsRedirect($client, $targetUrl);
$client->followRedirect();
$this->assertTrue($client->getResponse()->isSuccessful());
self::assertTrue($client->getResponse()->isSuccessful());
$this->assertHasFlashSuccess($client);
$user = $this->getUserByName($username);
$this->assertEquals($hourlyRate, $user->getPreferenceValue(UserPreference::HOURLY_RATE));
$this->assertEquals($expectedInternalRate, $user->getPreferenceValue(UserPreference::INTERNAL_RATE));
$this->assertEquals('America/Creston', $user->getPreferenceValue(UserPreference::TIMEZONE));
$this->assertEquals('America/Creston', $user->getTimezone());
$this->assertEquals('ar', $user->getPreferenceValue(UserPreference::LANGUAGE));
$this->assertEquals('ru', $user->getPreferenceValue(UserPreference::LOCALE));
$this->assertEquals('ru', $user->getLocale());
$this->assertEquals('ar', $user->getLanguage());
$this->assertEquals('dark', $user->getPreferenceValue(UserPreference::SKIN));
$this->assertEquals('sunday', $user->getPreferenceValue(UserPreference::FIRST_WEEKDAY));
$this->assertEquals('sunday', $user->getFirstDayOfWeek());
self::assertEquals($hourlyRate, $user->getPreferenceValue(UserPreference::HOURLY_RATE));
self::assertEquals($expectedInternalRate, $user->getPreferenceValue(UserPreference::INTERNAL_RATE));
self::assertEquals('America/Creston', $user->getPreferenceValue(UserPreference::TIMEZONE));
self::assertEquals('America/Creston', $user->getTimezone());
self::assertEquals('ar', $user->getPreferenceValue(UserPreference::LANGUAGE));
self::assertEquals('ru', $user->getPreferenceValue(UserPreference::LOCALE));
self::assertEquals('ru', $user->getLocale());
self::assertEquals('ar', $user->getLanguage());
self::assertEquals('dark', $user->getPreferenceValue(UserPreference::SKIN));
self::assertEquals('sunday', $user->getPreferenceValue(UserPreference::FIRST_WEEKDAY));
self::assertEquals('sunday', $user->getFirstDayOfWeek());
}
public function testIsTwoFactorSecure(): void
@ -471,17 +471,17 @@ class ProfileControllerTest extends ControllerBaseTest
self::assertFalse($user->hasTotpSecret());
$this->request($client, '/profile/' . UserFixtures::USERNAME_USER . '/2fa');
$this->assertTrue($client->getResponse()->isSuccessful());
self::assertTrue($client->getResponse()->isSuccessful());
$user = $this->getUserByName(UserFixtures::USERNAME_USER);
self::assertTrue($user->hasTotpSecret());
$formUrl = $this->createUrl('/profile/' . UserFixtures::USERNAME_USER . '/2fa');
$content = $client->getResponse()->getContent();
$this->assertNotFalse($content);
self::assertNotFalse($content);
$this->assertStringContainsString(' data-toggle="tooltip" title="Click to show code" alt="TOTP QR Code" style="max-width: 200px; max-height: 200px;" src="', $content);
$this->assertStringContainsString('<form name="user_two_factor" method="post" action="' . $formUrl . '" id="user_two_factor_form">', $content);
self::assertStringContainsString(' data-toggle="tooltip" title="Click to show code" alt="TOTP QR Code" style="max-width: 200px; max-height: 200px;" src="', $content);
self::assertStringContainsString('<form name="user_two_factor" method="post" action="' . $formUrl . '" id="user_two_factor_form">', $content);
}
public function testTwoFactorAsAdmin(): void
@ -494,14 +494,14 @@ class ProfileControllerTest extends ControllerBaseTest
$client = $this->getClientForAuthenticatedUser(User::ROLE_SUPER_ADMIN);
$this->request($client, '/profile/' . UserFixtures::USERNAME_USER . '/2fa');
$this->assertTrue($client->getResponse()->isSuccessful());
self::assertTrue($client->getResponse()->isSuccessful());
$content = $client->getResponse()->getContent();
$this->assertNotFalse($content);
self::assertNotFalse($content);
$formUrl = $this->createUrl('/profile/' . UserFixtures::USERNAME_USER . '/2fa');
$this->assertStringContainsString(' data-toggle="tooltip" title="Click to show code" alt="TOTP QR Code" style="max-width: 200px; max-height: 200px;" src="', $content);
$this->assertStringContainsString('<form name="user_two_factor" method="post" action="' . $formUrl . '" id="user_two_factor_form">', $content);
self::assertStringContainsString(' data-toggle="tooltip" title="Click to show code" alt="TOTP QR Code" style="max-width: 200px; max-height: 200px;" src="', $content);
self::assertStringContainsString('<form name="user_two_factor" method="post" action="' . $formUrl . '" id="user_two_factor_form">', $content);
}
public function testActivateTwoFactorWithEmptyToken(): void
@ -543,25 +543,25 @@ class ProfileControllerTest extends ControllerBaseTest
{
$client = $this->getClientForAuthenticatedUser(User::ROLE_TEAMLEAD);
$this->request($client, '/profile/' . UserFixtures::USERNAME_USER . '/contract');
$this->assertFalse($client->getResponse()->isSuccessful());
self::assertFalse($client->getResponse()->isSuccessful());
}
public function testContractAction(): void
{
$client = $this->getClientForAuthenticatedUser(User::ROLE_SUPER_ADMIN);
$this->request($client, '/profile/' . UserFixtures::USERNAME_USER . '/contract');
$this->assertTrue($client->getResponse()->isSuccessful());
self::assertTrue($client->getResponse()->isSuccessful());
$user = $this->getUserByRole(User::ROLE_USER);
$calculator = (new WorkingTimeModeDay())->getCalculator($user);
$this->assertEquals(0, $calculator->getWorkHoursForDay(new \DateTime('monday this week')));
$this->assertEquals(0, $calculator->getWorkHoursForDay(new \DateTime('tuesday this week')));
$this->assertEquals(0, $calculator->getWorkHoursForDay(new \DateTime('wednesday this week')));
$this->assertEquals(0, $calculator->getWorkHoursForDay(new \DateTime('thursday this week')));
$this->assertEquals(0, $calculator->getWorkHoursForDay(new \DateTime('friday this week')));
$this->assertEquals(0, $calculator->getWorkHoursForDay(new \DateTime('saturday this week')));
$this->assertEquals(0, $calculator->getWorkHoursForDay(new \DateTime('sunday this week')));
self::assertEquals(0, $calculator->getWorkHoursForDay(new \DateTime('monday this week')));
self::assertEquals(0, $calculator->getWorkHoursForDay(new \DateTime('tuesday this week')));
self::assertEquals(0, $calculator->getWorkHoursForDay(new \DateTime('wednesday this week')));
self::assertEquals(0, $calculator->getWorkHoursForDay(new \DateTime('thursday this week')));
self::assertEquals(0, $calculator->getWorkHoursForDay(new \DateTime('friday this week')));
self::assertEquals(0, $calculator->getWorkHoursForDay(new \DateTime('saturday this week')));
self::assertEquals(0, $calculator->getWorkHoursForDay(new \DateTime('sunday this week')));
$form = $client->getCrawler()->filter('form[name=user_contract]')->form();
@ -577,19 +577,19 @@ class ProfileControllerTest extends ControllerBaseTest
$this->assertIsRedirect($client, $this->createUrl('/profile/' . urlencode(UserFixtures::USERNAME_USER) . '/contract'));
$client->followRedirect();
$this->assertTrue($client->getResponse()->isSuccessful());
self::assertTrue($client->getResponse()->isSuccessful());
$this->assertHasFlashSuccess($client);
$user = $this->getUserByRole(User::ROLE_USER);
$calculator = (new WorkingTimeModeDay())->getCalculator($user);
$this->assertEquals(3600, $calculator->getWorkHoursForDay(new \DateTime('monday this week')));
$this->assertEquals(7200, $calculator->getWorkHoursForDay(new \DateTime('tuesday this week')));
$this->assertEquals(10800, $calculator->getWorkHoursForDay(new \DateTime('wednesday this week')));
$this->assertEquals(16200, $calculator->getWorkHoursForDay(new \DateTime('thursday this week')));
$this->assertEquals(18720, $calculator->getWorkHoursForDay(new \DateTime('friday this week')));
$this->assertEquals(25140, $calculator->getWorkHoursForDay(new \DateTime('saturday this week')));
$this->assertEquals(60, $calculator->getWorkHoursForDay(new \DateTime('sunday this week')));
self::assertEquals(3600, $calculator->getWorkHoursForDay(new \DateTime('monday this week')));
self::assertEquals(7200, $calculator->getWorkHoursForDay(new \DateTime('tuesday this week')));
self::assertEquals(10800, $calculator->getWorkHoursForDay(new \DateTime('wednesday this week')));
self::assertEquals(16200, $calculator->getWorkHoursForDay(new \DateTime('thursday this week')));
self::assertEquals(18720, $calculator->getWorkHoursForDay(new \DateTime('friday this week')));
self::assertEquals(25140, $calculator->getWorkHoursForDay(new \DateTime('saturday this week')));
self::assertEquals(60, $calculator->getWorkHoursForDay(new \DateTime('sunday this week')));
}
}

View file

@ -31,7 +31,7 @@ use Symfony\Component\HttpKernel\HttpKernelBrowser;
/**
* @group integration
*/
class ProjectControllerTest extends ControllerBaseTest
class ProjectControllerTest extends AbstractControllerBaseTestCase
{
public function testIsSecure(): void
{
@ -96,7 +96,7 @@ class ProjectControllerTest extends ControllerBaseTest
'page' => 1,
]);
$this->assertTrue($client->getResponse()->isSuccessful());
self::assertTrue($client->getResponse()->isSuccessful());
$this->assertHasDataTable($client);
$this->assertDataTableRowCount($client, 'datatable_project_admin', 5);
}
@ -411,12 +411,12 @@ class ProjectControllerTest extends ControllerBaseTest
$dispatcher = self::getContainer()->get('event_dispatcher');
$dispatcher->addSubscriber(new ProjectTestMetaFieldSubscriberMock());
$this->assertAccessIsGranted($client, '/admin/project/create');
$this->assertTrue($client->getResponse()->isSuccessful());
self::assertTrue($client->getResponse()->isSuccessful());
$form = $client->getCrawler()->filter('form[name=project_edit_form]')->form();
$this->assertTrue($form->has('project_edit_form[metaFields][metatestmock][value]'));
$this->assertTrue($form->has('project_edit_form[metaFields][foobar][value]'));
$this->assertFalse($form->has('project_edit_form[metaFields][0][value]'));
self::assertTrue($form->has('project_edit_form[metaFields][metatestmock][value]'));
self::assertTrue($form->has('project_edit_form[metaFields][foobar][value]'));
self::assertFalse($form->has('project_edit_form[metaFields][0][value]'));
}
public function testEditAction(): void
@ -424,7 +424,7 @@ class ProjectControllerTest extends ControllerBaseTest
$client = $this->getClientForAuthenticatedUser(User::ROLE_ADMIN);
$this->assertAccessIsGranted($client, '/admin/project/1/edit');
$form = $client->getCrawler()->filter('form[name=project_edit_form]')->form();
$this->assertEquals('Test', $form->get('project_edit_form[name]')->getValue());
self::assertEquals('Test', $form->get('project_edit_form[name]')->getValue());
$client->submit($form, [
'project_edit_form' => ['name' => 'Test 2']
]);
@ -432,7 +432,7 @@ class ProjectControllerTest extends ControllerBaseTest
$client->followRedirect();
$this->request($client, '/admin/project/1/edit');
$editForm = $client->getCrawler()->filter('form[name=project_edit_form]')->form();
$this->assertEquals('Test 2', $editForm->get('project_edit_form[name]')->getValue());
self::assertEquals('Test 2', $editForm->get('project_edit_form[name]')->getValue());
}
public function testTeamPermissionAction(): void
@ -477,12 +477,12 @@ class ProjectControllerTest extends ControllerBaseTest
$id = $projects[0]->getId();
$this->request($client, '/admin/project/' . $id . '/edit');
$this->assertTrue($client->getResponse()->isSuccessful());
self::assertTrue($client->getResponse()->isSuccessful());
$this->request($client, '/admin/project/' . $id . '/delete');
$this->assertTrue($client->getResponse()->isSuccessful());
self::assertTrue($client->getResponse()->isSuccessful());
$form = $client->getCrawler()->filter('form[name=form]')->form();
$this->assertStringEndsWith($this->createUrl('/admin/project/' . $id . '/delete'), $form->getUri());
self::assertStringEndsWith($this->createUrl('/admin/project/' . $id . '/delete'), $form->getUri());
$client->submit($form);
$client->followRedirect();
@ -490,7 +490,7 @@ class ProjectControllerTest extends ControllerBaseTest
$this->assertHasFlashSuccess($client);
$this->request($client, '/admin/project/' . $id . '/edit');
$this->assertFalse($client->getResponse()->isSuccessful());
self::assertFalse($client->getResponse()->isSuccessful());
}
public function testDeleteActionWithTimesheetEntries(): void
@ -504,18 +504,18 @@ class ProjectControllerTest extends ControllerBaseTest
$this->importFixture($fixture);
$timesheets = $em->getRepository(Timesheet::class)->findAll();
$this->assertEquals(10, \count($timesheets));
self::assertEquals(10, \count($timesheets));
/** @var Timesheet $entry */
foreach ($timesheets as $entry) {
$this->assertEquals(1, $entry->getActivity()->getId());
self::assertEquals(1, $entry->getActivity()->getId());
}
$this->request($client, '/admin/project/1/delete');
$this->assertTrue($client->getResponse()->isSuccessful());
self::assertTrue($client->getResponse()->isSuccessful());
$form = $client->getCrawler()->filter('form[name=form]')->form();
$this->assertStringEndsWith($this->createUrl('/admin/project/1/delete'), $form->getUri());
self::assertStringEndsWith($this->createUrl('/admin/project/1/delete'), $form->getUri());
$client->submit($form);
$this->assertIsRedirect($client, $this->createUrl('/admin/project/'));
@ -525,10 +525,10 @@ class ProjectControllerTest extends ControllerBaseTest
$em->clear();
$timesheets = $em->getRepository(Timesheet::class)->findAll();
$this->assertEquals(0, \count($timesheets));
self::assertEquals(0, \count($timesheets));
$this->request($client, '/admin/project/1/edit');
$this->assertFalse($client->getResponse()->isSuccessful());
self::assertFalse($client->getResponse()->isSuccessful());
}
public function testDeleteActionWithTimesheetEntriesAndReplacement(): void
@ -546,18 +546,18 @@ class ProjectControllerTest extends ControllerBaseTest
$id = $projects[0]->getId();
$timesheets = $em->getRepository(Timesheet::class)->findAll();
$this->assertEquals(10, \count($timesheets));
self::assertEquals(10, \count($timesheets));
/** @var Timesheet $entry */
foreach ($timesheets as $entry) {
$this->assertEquals(1, $entry->getProject()->getId());
self::assertEquals(1, $entry->getProject()->getId());
}
$this->request($client, '/admin/project/1/delete');
$this->assertTrue($client->getResponse()->isSuccessful());
self::assertTrue($client->getResponse()->isSuccessful());
$form = $client->getCrawler()->filter('form[name=form]')->form();
$this->assertStringEndsWith($this->createUrl('/admin/project/1/delete'), $form->getUri());
self::assertStringEndsWith($this->createUrl('/admin/project/1/delete'), $form->getUri());
$client->submit($form, [
'form' => [
'project' => $id
@ -570,15 +570,15 @@ class ProjectControllerTest extends ControllerBaseTest
$this->assertHasFlashSuccess($client);
$timesheets = $em->getRepository(Timesheet::class)->findAll();
$this->assertEquals(10, \count($timesheets));
self::assertEquals(10, \count($timesheets));
/** @var Timesheet $entry */
foreach ($timesheets as $entry) {
$this->assertEquals($id, $entry->getProject()->getId());
self::assertEquals($id, $entry->getProject()->getId());
}
$this->request($client, '/admin/project/1/edit');
$this->assertFalse($client->getResponse()->isSuccessful());
self::assertFalse($client->getResponse()->isSuccessful());
}
/**
@ -595,7 +595,7 @@ class ProjectControllerTest extends ControllerBaseTest
);
}
public function getValidationTestData()
public static function getValidationTestData()
{
return [
[

View file

@ -14,7 +14,7 @@ use App\Tests\DataFixtures\TimesheetFixtures;
/**
* @group integration
*/
class QuickEntryControllerTest extends ControllerBaseTest
class QuickEntryControllerTest extends AbstractControllerBaseTestCase
{
public function testIsSecure(): void
{
@ -25,7 +25,7 @@ class QuickEntryControllerTest extends ControllerBaseTest
{
$client = $this->getClientForAuthenticatedUser();
$this->request($client, '/quick_entry/');
$this->assertTrue($client->getResponse()->isSuccessful());
self::assertTrue($client->getResponse()->isSuccessful());
$node = $client->getCrawler()->filter('form[name=quick_entry_weekrange_form]');
self::assertEquals(1, $node->filter('div.btn-group.week-picker-btn-group')->count());
@ -65,7 +65,7 @@ class QuickEntryControllerTest extends ControllerBaseTest
$this->importFixture($fixture);
$this->request($client, '/quick_entry/');
$this->assertTrue($client->getResponse()->isSuccessful());
self::assertTrue($client->getResponse()->isSuccessful());
$node = $client->getCrawler()->filter('form[name=quick_entry_form]');
self::assertEquals(1, $node->filter('input.btn-primary[type=submit]')->count());

View file

@ -10,13 +10,13 @@
namespace App\Tests\Controller\Reporting;
use App\Entity\User;
use App\Tests\Controller\ControllerBaseTest;
use App\Tests\Controller\AbstractControllerBaseTestCase;
use App\Tests\DataFixtures\TimesheetFixtures;
/**
* @group integration
*/
abstract class AbstractUserPeriodControllerTest extends ControllerBaseTest
abstract class AbstractUserPeriodControllerTestCase extends AbstractControllerBaseTestCase
{
protected function importReportingFixture(string $role): void
{
@ -37,7 +37,7 @@ abstract class AbstractUserPeriodControllerTest extends ControllerBaseTest
$this->assertUrlIsSecured($this->getReportUrl());
}
public function getTestData(): array
public static function getTestData(): array
{
return [
[4, 'duration', 'Working hours total'],

View file

@ -10,16 +10,16 @@
namespace App\Tests\Controller\Reporting;
use App\Entity\User;
use App\Tests\Controller\ControllerBaseTest;
use App\Tests\Controller\AbstractControllerBaseTestCase;
use App\Tests\DataFixtures\TimesheetFixtures;
use Symfony\Component\HttpFoundation\BinaryFileResponse;
/**
* @group integration
*/
abstract class AbstractUsersPeriodControllerTest extends ControllerBaseTest
abstract class AbstractUsersPeriodControllerTestCase extends AbstractControllerBaseTestCase
{
protected function importReportingFixture(string $role)
protected function importReportingFixture(string $role): void
{
$fixture = new TimesheetFixtures();
$fixture->setAmount(50);
@ -40,7 +40,7 @@ abstract class AbstractUsersPeriodControllerTest extends ControllerBaseTest
$this->assertUrlIsSecured($this->getReportUrl());
}
public function getTestData(): array
public static function getTestData(): array
{
return [
['duration', 'Working hours total'],
@ -86,7 +86,7 @@ abstract class AbstractUsersPeriodControllerTest extends ControllerBaseTest
$this->importReportingFixture(User::ROLE_SUPER_ADMIN);
$this->request($client, \sprintf('%s?date=12999119191&sumType=%s', $this->getReportExportUrl(), $dataType));
$response = $client->getResponse();
$this->assertTrue($response->isSuccessful());
self::assertTrue($response->isSuccessful());
self::assertInstanceOf(BinaryFileResponse::class, $response);
self::assertEquals('application/vnd.openxmlformats-officedocument.spreadsheetml.sheet', $response->headers->get('Content-Type'));
self::assertStringContainsString('attachment; filename=kimai-export-users-', $response->headers->get('Content-Disposition'));

View file

@ -11,7 +11,7 @@ namespace App\Tests\Controller\Reporting;
use App\Entity\Project;
use App\Entity\User;
use App\Tests\Controller\ControllerBaseTest;
use App\Tests\Controller\AbstractControllerBaseTestCase;
use App\Tests\DataFixtures\ActivityFixtures;
use App\Tests\DataFixtures\CustomerFixtures;
use App\Tests\DataFixtures\ProjectFixtures;
@ -22,7 +22,7 @@ use Symfony\Component\HttpKernel\HttpKernelBrowser;
/**
* @group integration
*/
class CustomerMonthlyProjectsControllerTest extends ControllerBaseTest
class CustomerMonthlyProjectsControllerTest extends AbstractControllerBaseTestCase
{
public function testReportIsSecure(): void
{
@ -90,14 +90,14 @@ class CustomerMonthlyProjectsControllerTest extends ControllerBaseTest
$this->assertAccessIsGranted($client, '/reporting/customer/monthly_projects/export');
$response = $client->getResponse();
$this->assertTrue($response->isSuccessful());
self::assertTrue($response->isSuccessful());
self::assertInstanceOf(BinaryFileResponse::class, $response);
// temporary file!
$file = $response->getFile();
self::assertFileDoesNotExist($response->getFile());
$this->assertEquals('application/vnd.openxmlformats-officedocument.spreadsheetml.sheet', $response->headers->get('Content-Type'));
$this->assertStringContainsString('attachment; filename=kimai-export-users-', $response->headers->get('Content-Disposition'));
self::assertEquals('application/vnd.openxmlformats-officedocument.spreadsheetml.sheet', $response->headers->get('Content-Type'));
self::assertStringContainsString('attachment; filename=kimai-export-users-', $response->headers->get('Content-Disposition'));
}
}

View file

@ -11,7 +11,7 @@ namespace App\Tests\Controller\Reporting;
use App\Entity\Project;
use App\Entity\User;
use App\Tests\Controller\ControllerBaseTest;
use App\Tests\Controller\AbstractControllerBaseTestCase;
use App\Tests\DataFixtures\ActivityFixtures;
use App\Tests\DataFixtures\CustomerFixtures;
use App\Tests\DataFixtures\ProjectFixtures;
@ -21,7 +21,7 @@ use App\Timesheet\DateTimeFactory;
/**
* @group integration
*/
class ProjectDateRangeControllerTest extends ControllerBaseTest
class ProjectDateRangeControllerTest extends AbstractControllerBaseTestCase
{
public function testReportIsSecure(): void
{

View file

@ -10,7 +10,7 @@
namespace App\Tests\Controller\Reporting;
use App\Entity\User;
use App\Tests\Controller\ControllerBaseTest;
use App\Tests\Controller\AbstractControllerBaseTestCase;
use App\Tests\DataFixtures\ActivityFixtures;
use App\Tests\DataFixtures\CustomerFixtures;
use App\Tests\DataFixtures\ProjectFixtures;
@ -19,7 +19,7 @@ use App\Tests\DataFixtures\TimesheetFixtures;
/**
* @group integration
*/
class ProjectDetailsControllerTest extends ControllerBaseTest
class ProjectDetailsControllerTest extends AbstractControllerBaseTestCase
{
public function testReportIsSecure(): void
{

View file

@ -10,7 +10,7 @@
namespace App\Tests\Controller\Reporting;
use App\Entity\User;
use App\Tests\Controller\ControllerBaseTest;
use App\Tests\Controller\AbstractControllerBaseTestCase;
use App\Tests\DataFixtures\ActivityFixtures;
use App\Tests\DataFixtures\CustomerFixtures;
use App\Tests\DataFixtures\ProjectFixtures;
@ -19,7 +19,7 @@ use App\Tests\DataFixtures\TimesheetFixtures;
/**
* @group integration
*/
class ProjectInactiveControllerTest extends ControllerBaseTest
class ProjectInactiveControllerTest extends AbstractControllerBaseTestCase
{
public function testReportIsSecure(): void
{

View file

@ -10,7 +10,7 @@
namespace App\Tests\Controller\Reporting;
use App\Entity\User;
use App\Tests\Controller\ControllerBaseTest;
use App\Tests\Controller\AbstractControllerBaseTestCase;
use App\Tests\DataFixtures\ActivityFixtures;
use App\Tests\DataFixtures\CustomerFixtures;
use App\Tests\DataFixtures\ProjectFixtures;
@ -20,7 +20,7 @@ use Symfony\Component\HttpFoundation\BinaryFileResponse;
/**
* @group integration
*/
class ProjectViewControllerTest extends ControllerBaseTest
class ProjectViewControllerTest extends AbstractControllerBaseTestCase
{
public function testReportIsSecure(): void
{
@ -87,7 +87,7 @@ class ProjectViewControllerTest extends ControllerBaseTest
$this->assertAccessIsGranted($client, '/reporting/project_view/export');
$response = $client->getResponse();
$this->assertTrue($response->isSuccessful());
self::assertTrue($response->isSuccessful());
self::assertInstanceOf(BinaryFileResponse::class, $response);
self::assertNotNull($response->headers->get('Content-Type'));
self::assertEquals('application/vnd.openxmlformats-officedocument.spreadsheetml.sheet', $response->headers->get('Content-Type'));

View file

@ -12,7 +12,7 @@ namespace App\Tests\Controller\Reporting;
/**
* @group integration
*/
class ReportUsersMonthControllerTest extends AbstractUsersPeriodControllerTest
class ReportUsersMonthControllerTest extends AbstractUsersPeriodControllerTestCase
{
protected function getReportUrl(): string
{

View file

@ -12,7 +12,7 @@ namespace App\Tests\Controller\Reporting;
/**
* @group integration
*/
class ReportUsersWeekControllerTest extends AbstractUsersPeriodControllerTest
class ReportUsersWeekControllerTest extends AbstractUsersPeriodControllerTestCase
{
protected function getReportUrl(): string
{

View file

@ -12,7 +12,7 @@ namespace App\Tests\Controller\Reporting;
/**
* @group integration
*/
class ReportUsersYearControllerTest extends AbstractUsersPeriodControllerTest
class ReportUsersYearControllerTest extends AbstractUsersPeriodControllerTestCase
{
protected function getReportUrl(): string
{

View file

@ -12,7 +12,7 @@ namespace App\Tests\Controller\Reporting;
/**
* @group integration
*/
class UserMonthControllerTest extends AbstractUserPeriodControllerTest
class UserMonthControllerTest extends AbstractUserPeriodControllerTestCase
{
protected function getReportUrl(): string
{

View file

@ -12,7 +12,7 @@ namespace App\Tests\Controller\Reporting;
/**
* @group integration
*/
class UserWeekControllerTest extends AbstractUserPeriodControllerTest
class UserWeekControllerTest extends AbstractUserPeriodControllerTestCase
{
protected function getReportUrl(): string
{

View file

@ -12,7 +12,7 @@ namespace App\Tests\Controller\Reporting;
/**
* @group integration
*/
class UserYearControllerTest extends AbstractUserPeriodControllerTest
class UserYearControllerTest extends AbstractUserPeriodControllerTestCase
{
protected function getReportUrl(): string
{

View file

@ -14,7 +14,7 @@ use App\Entity\User;
/**
* @group integration
*/
class ReportingControllerTest extends ControllerBaseTest
class ReportingControllerTest extends AbstractControllerBaseTestCase
{
public function testIsSecure(): void
{
@ -26,7 +26,7 @@ class ReportingControllerTest extends ControllerBaseTest
$client = $this->getClientForAuthenticatedUser(User::ROLE_ADMIN);
$this->request($client, '/reporting/');
$nodes = $client->getCrawler()->filter('section.content div.row-cards a.card-link');
$this->assertCount(11, $nodes);
self::assertCount(11, $nodes);
}
public function testAllReports(): void
@ -34,7 +34,7 @@ class ReportingControllerTest extends ControllerBaseTest
$client = $this->getClientForAuthenticatedUser(User::ROLE_SUPER_ADMIN);
$this->request($client, '/reporting/');
$nodes = $client->getCrawler()->filter('section.content div.row-cards a.card-link');
$this->assertCount(11, $nodes);
self::assertCount(11, $nodes);
foreach ($nodes as $node) {
self::assertNotNull($node->attributes);
$link = $node->attributes->getNamedItem('href');
@ -52,6 +52,6 @@ class ReportingControllerTest extends ControllerBaseTest
$client = $this->getClientForAuthenticatedUser(User::ROLE_USER);
$this->request($client, '/reporting/');
$nodes = $client->getCrawler()->filter('section.content div.row-cards a.card-link');
$this->assertCount(3, $nodes);
self::assertCount(3, $nodes);
}
}

View file

@ -9,12 +9,12 @@
namespace App\Tests\Controller\Security;
use App\Tests\Controller\ControllerBaseTest;
use App\Tests\Controller\AbstractControllerBaseTestCase;
/**
* @group integration
*/
class PasswordResetControllerTest extends ControllerBaseTest
class PasswordResetControllerTest extends AbstractControllerBaseTestCase
{
private function testResetActionWithDeactivatedFeature(string $route, string $method = 'GET'): void
{
@ -47,16 +47,16 @@ class PasswordResetControllerTest extends ControllerBaseTest
$this->request($client, '/resetting/request');
$response = $client->getResponse();
$this->assertTrue($response->isSuccessful());
self::assertTrue($response->isSuccessful());
$content = $response->getContent();
$this->assertNotFalse($content);
$this->assertStringContainsString('<title>Kimai Time Tracking</title>', $content);
$this->assertStringContainsString('Reset your password', $content);
$this->assertStringContainsString('<form class="card-body security-password-reset" action="/en/resetting/send-email" method="post" autocomplete="off">', $content);
$this->assertStringContainsString('<input autocomplete="username" type="text"', $content);
$this->assertStringContainsString('id="username" name="username" required="required"', $content);
$this->assertStringContainsString('Reset your password', $content);
self::assertNotFalse($content);
self::assertStringContainsString('<title>Kimai Time Tracking</title>', $content);
self::assertStringContainsString('Reset your password', $content);
self::assertStringContainsString('<form class="card-body security-password-reset" action="/en/resetting/send-email" method="post" autocomplete="off">', $content);
self::assertStringContainsString('<input autocomplete="username" type="text"', $content);
self::assertStringContainsString('id="username" name="username" required="required"', $content);
self::assertStringContainsString('Reset your password', $content);
$form = $client->getCrawler()->filter('form')->form();
$client->submit($form, [
@ -65,12 +65,12 @@ class PasswordResetControllerTest extends ControllerBaseTest
$this->assertIsRedirect($client, $this->createUrl('/resetting/check-email'));
$client->followRedirect();
$this->assertTrue($client->getResponse()->isSuccessful());
self::assertTrue($client->getResponse()->isSuccessful());
// TODO test the actual email and provided login link
$user = $this->loadUserFromDatabase('john_user');
$this->assertTrue($user->requiresPasswordReset());
self::assertTrue($user->requiresPasswordReset());
}
public function testRequestAsLoggedInUserRedirects(): void
@ -93,11 +93,11 @@ class PasswordResetControllerTest extends ControllerBaseTest
$this->request($client, '/resetting/send-email', 'POST');
$this->assertIsRedirect($client, $this->createUrl('/resetting/check-email'));
$client->followRedirect();
$this->assertTrue($client->getResponse()->isSuccessful());
self::assertTrue($client->getResponse()->isSuccessful());
$content = $client->getResponse()->getContent();
$this->assertNotFalse($content);
$this->assertStringContainsString('An email has been sent with a link to reset your password.', $content);
$this->assertStringContainsString('Note: You can only request a new password once every 1:00 hours.', $content);
self::assertNotFalse($content);
self::assertStringContainsString('An email has been sent with a link to reset your password.', $content);
self::assertStringContainsString('Note: You can only request a new password once every 1:00 hours.', $content);
}
public function testResetWithEmptyUsername(): void
@ -106,11 +106,11 @@ class PasswordResetControllerTest extends ControllerBaseTest
$this->request($client, '/resetting/send-email', 'POST', ['username' => '']);
$this->assertIsRedirect($client, $this->createUrl('/resetting/check-email'));
$client->followRedirect();
$this->assertTrue($client->getResponse()->isSuccessful());
self::assertTrue($client->getResponse()->isSuccessful());
$content = $client->getResponse()->getContent();
$this->assertNotFalse($content);
$this->assertStringContainsString('An email has been sent with a link to reset your password.', $content);
$this->assertStringContainsString('Note: You can only request a new password once every 1:00 hours.', $content);
self::assertNotFalse($content);
self::assertStringContainsString('An email has been sent with a link to reset your password.', $content);
self::assertStringContainsString('Note: You can only request a new password once every 1:00 hours.', $content);
}
public function testResetWithUnknownUsername(): void
@ -119,11 +119,11 @@ class PasswordResetControllerTest extends ControllerBaseTest
$this->request($client, '/resetting/send-email', 'POST', ['username' => 'foobar']);
$this->assertIsRedirect($client, $this->createUrl('/resetting/check-email'));
$client->followRedirect();
$this->assertTrue($client->getResponse()->isSuccessful());
self::assertTrue($client->getResponse()->isSuccessful());
$content = $client->getResponse()->getContent();
$this->assertNotFalse($content);
$this->assertStringContainsString('An email has been sent with a link to reset your password.', $content);
$this->assertStringContainsString('Note: You can only request a new password once every 1:00 hours.', $content);
self::assertNotFalse($content);
self::assertStringContainsString('An email has been sent with a link to reset your password.', $content);
self::assertStringContainsString('Note: You can only request a new password once every 1:00 hours.', $content);
}
public function testResetWithKnownUsername(): void
@ -131,10 +131,10 @@ class PasswordResetControllerTest extends ControllerBaseTest
$client = self::createClient();
$user = $this->loadUserFromDatabase('john_user');
$this->assertFalse($user->requiresPasswordReset());
self::assertFalse($user->requiresPasswordReset());
$this->request($client, '/resetting/request');
$this->assertTrue($client->getResponse()->isSuccessful());
self::assertTrue($client->getResponse()->isSuccessful());
$form = $client->getCrawler()->filter('form')->form();
$client->submit($form, [
'username' => 'john_user',
@ -142,15 +142,15 @@ class PasswordResetControllerTest extends ControllerBaseTest
$this->assertIsRedirect($client, $this->createUrl('/resetting/check-email'));
$client->followRedirect();
$this->assertTrue($client->getResponse()->isSuccessful());
self::assertTrue($client->getResponse()->isSuccessful());
$content = $client->getResponse()->getContent();
$this->assertNotFalse($content);
$this->assertStringContainsString('An email has been sent with a link to reset your password.', $content);
$this->assertStringContainsString('Note: You can only request a new password once every 1:00 hours.', $content);
self::assertNotFalse($content);
self::assertStringContainsString('An email has been sent with a link to reset your password.', $content);
self::assertStringContainsString('Note: You can only request a new password once every 1:00 hours.', $content);
// TODO test the actual email and provided login link
$user = $this->loadUserFromDatabase('john_user');
$this->assertTrue($user->requiresPasswordReset());
self::assertTrue($user->requiresPasswordReset());
}
}

View file

@ -15,7 +15,7 @@ use App\Controller\Security\SecurityController;
use App\DataFixtures\UserFixtures;
use App\Entity\User;
use App\Tests\Configuration\TestConfigLoader;
use App\Tests\Controller\ControllerBaseTest;
use App\Tests\Controller\AbstractControllerBaseTestCase;
use Symfony\Component\Security\Csrf\CsrfTokenManagerInterface;
/**
@ -24,7 +24,7 @@ use Symfony\Component\Security\Csrf\CsrfTokenManagerInterface;
*
* @group integration
*/
class SecurityControllerTest extends ControllerBaseTest
class SecurityControllerTest extends AbstractControllerBaseTestCase
{
public function testRootUrlIsRedirectedToLogin(): void
{
@ -42,17 +42,17 @@ class SecurityControllerTest extends ControllerBaseTest
$this->request($client, '/login');
$response = $client->getResponse();
$this->assertTrue($client->getResponse()->isSuccessful());
self::assertTrue($client->getResponse()->isSuccessful());
$content = $response->getContent();
$this->assertStringContainsString('<title>Kimai Time Tracking</title>', $content);
$this->assertStringContainsString('<form action="/en/login_check" method="post"', $content);
$this->assertStringContainsString('<input autocomplete="username" type="text" id="username" name="_username"', $content);
$this->assertStringContainsString('<input autocomplete="new-password" id="password" name="_password" type="password"', $content);
$this->assertStringContainsString('">Log in</button>', $content);
$this->assertStringContainsString('<input type="hidden" name="_csrf_token" value="', $content);
$this->assertStringNotContainsString('<a href="/en/register/"', $content);
$this->assertStringNotContainsString('Register a new account', $content);
self::assertStringContainsString('<title>Kimai Time Tracking</title>', $content);
self::assertStringContainsString('<form action="/en/login_check" method="post"', $content);
self::assertStringContainsString('<input autocomplete="username" type="text" id="username" name="_username"', $content);
self::assertStringContainsString('<input autocomplete="new-password" id="password" name="_password" type="password"', $content);
self::assertStringContainsString('">Log in</button>', $content);
self::assertStringContainsString('<input type="hidden" name="_csrf_token" value="', $content);
self::assertStringNotContainsString('<a href="/en/register/"', $content);
self::assertStringNotContainsString('Register a new account', $content);
}
public function testLoginPositive(): void
@ -60,7 +60,7 @@ class SecurityControllerTest extends ControllerBaseTest
$client = self::createClient();
$this->request($client, '/login');
$this->assertTrue($client->getResponse()->isSuccessful());
self::assertTrue($client->getResponse()->isSuccessful());
$form = $client->getCrawler()->filter('body form')->form();
$client->submit($form, [
@ -77,7 +77,7 @@ class SecurityControllerTest extends ControllerBaseTest
$this->assertIsRedirect($client, '/timesheet/'); // redirect to configured start page
$client->followRedirect();
$this->assertTrue($client->getResponse()->isSuccessful());
self::assertTrue($client->getResponse()->isSuccessful());
}
public function testLoginAlreadyLoggedIn(): void
@ -92,7 +92,7 @@ class SecurityControllerTest extends ControllerBaseTest
$this->assertIsRedirect($client, '/timesheet/'); // redirect to configured start page
$client->followRedirect();
$this->assertTrue($client->getResponse()->isSuccessful());
self::assertTrue($client->getResponse()->isSuccessful());
}
public function testLoginNegative(): void
@ -100,7 +100,7 @@ class SecurityControllerTest extends ControllerBaseTest
$client = self::createClient();
$this->request($client, '/login');
$this->assertTrue($client->getResponse()->isSuccessful());
self::assertTrue($client->getResponse()->isSuccessful());
$form = $client->getCrawler()->filter('body form')->form();
$client->submit($form, [
@ -111,7 +111,7 @@ class SecurityControllerTest extends ControllerBaseTest
$this->assertIsRedirect($client); // redirect to root URL
$client->followRedirect();
$this->assertTrue($client->getResponse()->isSuccessful());
self::assertTrue($client->getResponse()->isSuccessful());
self::assertStringContainsString('<div class="alert alert-important alert-danger">Invalid credentials.</div>', $client->getResponse()->getContent());
}

View file

@ -10,13 +10,13 @@
namespace App\Tests\Controller\Security;
use App\Entity\User;
use App\Tests\Controller\ControllerBaseTest;
use App\Tests\Controller\AbstractControllerBaseTestCase;
use Symfony\Bundle\FrameworkBundle\KernelBrowser;
/**
* @group integration
*/
class SelfRegistrationControllerTest extends ControllerBaseTest
class SelfRegistrationControllerTest extends AbstractControllerBaseTestCase
{
private function assertRegisterActionWithDeactivatedFeature(string $route): void
{
@ -53,22 +53,22 @@ class SelfRegistrationControllerTest extends ControllerBaseTest
$this->request($client, '/register/');
$response = $client->getResponse();
$this->assertTrue($response->isSuccessful());
self::assertTrue($response->isSuccessful());
$content = $response->getContent();
$this->assertStringContainsString('<title>Kimai Time Tracking</title>', $content);
$this->assertStringContainsString('Register a new account', $content);
$this->assertStringContainsString('<form name="user_registration_form" method="post" action="/en/register/"', $content);
$this->assertStringContainsString('<input type="email"', $content);
$this->assertStringContainsString('id="user_registration_form_email" name="user_registration_form[email]" required="required"', $content);
$this->assertStringContainsString('<input type="text"', $content);
$this->assertStringContainsString('id="user_registration_form_username" name="user_registration_form[username]" required="required" maxlength="64" pattern="', $content);
$this->assertStringContainsString('<input type="password"', $content);
$this->assertStringContainsString('id="user_registration_form_plainPassword_first" name="user_registration_form[plainPassword][first]" required="required"', $content);
$this->assertStringContainsString('id="user_registration_form_plainPassword_second" name="user_registration_form[plainPassword][second]" required="required"', $content);
$this->assertStringContainsString('<input type="hidden"', $content);
$this->assertStringContainsString('id="user_registration_form__token" name="user_registration_form[_token]"', $content);
$this->assertStringContainsString('>Register</button>', $content);
self::assertStringContainsString('<title>Kimai Time Tracking</title>', $content);
self::assertStringContainsString('Register a new account', $content);
self::assertStringContainsString('<form name="user_registration_form" method="post" action="/en/register/"', $content);
self::assertStringContainsString('<input type="email"', $content);
self::assertStringContainsString('id="user_registration_form_email" name="user_registration_form[email]" required="required"', $content);
self::assertStringContainsString('<input type="text"', $content);
self::assertStringContainsString('id="user_registration_form_username" name="user_registration_form[username]" required="required" maxlength="64" pattern="', $content);
self::assertStringContainsString('<input type="password"', $content);
self::assertStringContainsString('id="user_registration_form_plainPassword_first" name="user_registration_form[plainPassword][first]" required="required"', $content);
self::assertStringContainsString('id="user_registration_form_plainPassword_second" name="user_registration_form[plainPassword][second]" required="required"', $content);
self::assertStringContainsString('<input type="hidden"', $content);
self::assertStringContainsString('id="user_registration_form__token" name="user_registration_form[_token]"', $content);
self::assertStringContainsString('>Register</button>', $content);
}
private function createUser(KernelBrowser $client, string $username, string $email, string $password): User
@ -77,7 +77,7 @@ class SelfRegistrationControllerTest extends ControllerBaseTest
$this->request($client, '/register/');
$response = $client->getResponse();
$this->assertTrue($response->isSuccessful());
self::assertTrue($response->isSuccessful());
$form = $client->getCrawler()->filter('form[name=user_registration_form]')->form();
$client->submit($form, [
@ -93,7 +93,7 @@ class SelfRegistrationControllerTest extends ControllerBaseTest
$this->assertIsRedirect($client, $this->createUrl('/register/check-email'));
$client->followRedirect();
$this->assertTrue($client->getResponse()->isSuccessful());
self::assertTrue($client->getResponse()->isSuccessful());
return $this->loadUserFromDatabase($username);
}
@ -106,7 +106,7 @@ class SelfRegistrationControllerTest extends ControllerBaseTest
$this->assertIsRedirect($client, $this->createUrl('/register/'));
$client->followRedirect();
$this->assertTrue($client->getResponse()->isSuccessful());
self::assertTrue($client->getResponse()->isSuccessful());
}
public function testRegisterAccount(): void
@ -115,9 +115,9 @@ class SelfRegistrationControllerTest extends ControllerBaseTest
$this->createUser($client, 'example', 'register@example.com', 'test1234');
$content = $client->getResponse()->getContent();
$this->assertStringContainsString('<title>Kimai Time Tracking</title>', $content);
$this->assertStringContainsString('An e-mail has been sent to register@example.com. It contains a link you must click to activate your account.', $content);
$this->assertStringContainsString('<a href="/en/login">', $content);
self::assertStringContainsString('<title>Kimai Time Tracking</title>', $content);
self::assertStringContainsString('An e-mail has been sent to register@example.com. It contains a link you must click to activate your account.', $content);
self::assertStringContainsString('<a href="/en/login">', $content);
}
public function testConfirmWithInvalidToken(): void
@ -128,7 +128,7 @@ class SelfRegistrationControllerTest extends ControllerBaseTest
$this->assertIsRedirect($client, $this->createUrl('/login'));
$client->followRedirect();
$this->assertTrue($client->getResponse()->isSuccessful());
self::assertTrue($client->getResponse()->isSuccessful());
}
public function testConfirmAccount(): void
@ -143,9 +143,9 @@ class SelfRegistrationControllerTest extends ControllerBaseTest
$this->request($client, '/register/confirm/' . $token);
$this->assertIsRedirect($client, $this->createUrl('/register/confirmed'));
$client->followRedirect();
$this->assertTrue($client->getResponse()->isSuccessful());
self::assertTrue($client->getResponse()->isSuccessful());
$content = $client->getResponse()->getContent();
$this->assertStringContainsString('Congratulations example, your account is now activated.', $content);
self::assertStringContainsString('Congratulations example, your account is now activated.', $content);
$user = $this->loadUserFromDatabase('example');
self::assertTrue($user->isEnabled());
@ -160,7 +160,7 @@ class SelfRegistrationControllerTest extends ControllerBaseTest
// AccessDeniedException redirects to login
$this->assertIsRedirect($client, $this->createUrl('/login'));
$client->followRedirect();
$this->assertTrue($client->getResponse()->isSuccessful());
self::assertTrue($client->getResponse()->isSuccessful());
}
/**
@ -174,7 +174,7 @@ class SelfRegistrationControllerTest extends ControllerBaseTest
$this->assertHasValidationError($client, '/register/', 'form[name=user_registration_form]', $formData, $validationFields);
}
public function getValidationTestData(): array // @phpstan-ignore missingType.iterableValue
public static function getValidationTestData(): array // @phpstan-ignore missingType.iterableValue
{
return [
[

View file

@ -15,7 +15,7 @@ use App\Entity\User;
/**
* @group integration
*/
class SystemConfigurationControllerTest extends ControllerBaseTest
class SystemConfigurationControllerTest extends AbstractControllerBaseTestCase
{
public function testIsSecure(): void
{
@ -41,17 +41,17 @@ class SystemConfigurationControllerTest extends ControllerBaseTest
$expectedCount = \count($expectedForms) + 1; // the menu is another card
$result = $client->getCrawler()->filter('section.content div.card');
$this->assertEquals($expectedCount, \count($result));
self::assertEquals($expectedCount, \count($result));
$result = $client->getCrawler()->filter('section.content div.card form');
$this->assertEquals(\count($expectedForms), \count($result));
self::assertEquals(\count($expectedForms), \count($result));
foreach ($expectedForms as $formConfig) {
$result = $client->getCrawler()->filter($formConfig[0]);
$this->assertEquals(1, \count($result));
self::assertEquals(1, \count($result));
$form = $result->form();
$this->assertStringEndsWith($formConfig[1], $form->getUri());
$this->assertEquals('POST', $form->getMethod());
self::assertStringEndsWith($formConfig[1], $form->getUri());
self::assertEquals('POST', $form->getMethod());
}
}
@ -61,19 +61,19 @@ class SystemConfigurationControllerTest extends ControllerBaseTest
$this->assertAccessIsGranted($client, '/admin/system-config/edit/timesheet');
$result = $client->getCrawler()->filter('section.content div.card');
$this->assertEquals(1, \count($result));
self::assertEquals(1, \count($result));
$result = $client->getCrawler()->filter('section.content div.card form');
$this->assertEquals(1, \count($result));
self::assertEquals(1, \count($result));
$result = $client->getCrawler()->filter('form[name=system_configuration_form_timesheet]');
$this->assertEquals(1, \count($result));
self::assertEquals(1, \count($result));
$form = $result->form();
$this->assertEquals('POST', $form->getMethod());
self::assertEquals('POST', $form->getMethod());
}
/**
* @return array<array<string>>
* @return array<array<non-empty-string>>
*/
public function getTestDataForms(): array
{
@ -100,10 +100,10 @@ class SystemConfigurationControllerTest extends ControllerBaseTest
$this->assertAccessIsGranted($client, '/admin/system-config/');
$configService = $this->getSystemConfiguration();
$this->assertEquals('default', $configService->find('timesheet.mode'));
$this->assertTrue($configService->find('timesheet.rules.allow_future_times'));
$this->assertTrue($configService->find('timesheet.rules.allow_zero_duration'));
$this->assertEquals(1, $configService->find('timesheet.active_entries.hard_limit'));
self::assertEquals('default', $configService->find('timesheet.mode'));
self::assertTrue($configService->find('timesheet.rules.allow_future_times'));
self::assertTrue($configService->find('timesheet.rules.allow_zero_duration'));
self::assertEquals(1, $configService->find('timesheet.active_entries.hard_limit'));
$form = $client->getCrawler()->filter('form[name=system_configuration_form_timesheet]')->form();
$client->submit($form, [
@ -122,14 +122,14 @@ class SystemConfigurationControllerTest extends ControllerBaseTest
$this->assertIsRedirect($client, $this->createUrl('/admin/system-config/'));
$client->followRedirect();
$this->assertTrue($client->getResponse()->isSuccessful());
self::assertTrue($client->getResponse()->isSuccessful());
$this->assertHasFlashSaveSuccess($client);
$configService = $this->getSystemConfiguration();
$this->assertEquals('punch', $configService->find('timesheet.mode'));
$this->assertFalse($configService->find('timesheet.rules.allow_future_times'));
$this->assertFalse($configService->find('timesheet.rules.allow_overlapping_records'));
$this->assertEquals(99, $configService->find('timesheet.active_entries.hard_limit'));
self::assertEquals('punch', $configService->find('timesheet.mode'));
self::assertFalse($configService->find('timesheet.rules.allow_future_times'));
self::assertFalse($configService->find('timesheet.rules.allow_overlapping_records'));
self::assertEquals(99, $configService->find('timesheet.active_entries.hard_limit'));
}
public function testUpdateLockdownPeriodConfig(): void
@ -138,10 +138,10 @@ class SystemConfigurationControllerTest extends ControllerBaseTest
$this->assertAccessIsGranted($client, '/admin/system-config/');
$configService = $this->getSystemConfiguration();
$this->assertNull($configService->find('timesheet.rules.lockdown_period_start'));
$this->assertNull($configService->find('timesheet.rules.lockdown_period_end'));
$this->assertNull($configService->find('timesheet.rules.lockdown_period_timezone'));
$this->assertNull($configService->find('timesheet.rules.lockdown_grace_period'));
self::assertNull($configService->find('timesheet.rules.lockdown_period_start'));
self::assertNull($configService->find('timesheet.rules.lockdown_period_end'));
self::assertNull($configService->find('timesheet.rules.lockdown_period_timezone'));
self::assertNull($configService->find('timesheet.rules.lockdown_grace_period'));
$form = $client->getCrawler()->filter('form[name=system_configuration_form_lockdown_period]')->form();
$client->submit($form, [
@ -157,14 +157,14 @@ class SystemConfigurationControllerTest extends ControllerBaseTest
$this->assertIsRedirect($client, $this->createUrl('/admin/system-config/'));
$client->followRedirect();
$this->assertTrue($client->getResponse()->isSuccessful());
self::assertTrue($client->getResponse()->isSuccessful());
$this->assertHasFlashSaveSuccess($client);
$configService = $this->getSystemConfiguration();
$this->assertEquals('first day of last month 01:23:45', $configService->find('timesheet.rules.lockdown_period_start'));
$this->assertEquals('last day of last month 23:01:45', $configService->find('timesheet.rules.lockdown_period_end'));
$this->assertEquals('Africa/Bangui', $configService->find('timesheet.rules.lockdown_period_timezone'));
$this->assertEquals('+ 12 hours', $configService->find('timesheet.rules.lockdown_grace_period'));
self::assertEquals('first day of last month 01:23:45', $configService->find('timesheet.rules.lockdown_period_start'));
self::assertEquals('last day of last month 23:01:45', $configService->find('timesheet.rules.lockdown_period_end'));
self::assertEquals('Africa/Bangui', $configService->find('timesheet.rules.lockdown_period_timezone'));
self::assertEquals('+ 12 hours', $configService->find('timesheet.rules.lockdown_grace_period'));
}
public function testUpdateTimesheetConfigValidation(): void
@ -199,9 +199,9 @@ class SystemConfigurationControllerTest extends ControllerBaseTest
$this->assertAccessIsGranted($client, '/admin/system-config/');
$configService = $this->getSystemConfiguration();
$this->assertNull($configService->find('defaults.customer.timezone'));
$this->assertEquals('DE', $configService->find('defaults.customer.country'));
$this->assertEquals('EUR', $configService->find('defaults.customer.currency'));
self::assertNull($configService->find('defaults.customer.timezone'));
self::assertEquals('DE', $configService->find('defaults.customer.country'));
self::assertEquals('EUR', $configService->find('defaults.customer.currency'));
$form = $client->getCrawler()->filter('form[name=system_configuration_form_customer]')->form();
$client->submit($form, [
@ -216,13 +216,13 @@ class SystemConfigurationControllerTest extends ControllerBaseTest
$this->assertIsRedirect($client, $this->createUrl('/admin/system-config/'));
$client->followRedirect();
$this->assertTrue($client->getResponse()->isSuccessful());
self::assertTrue($client->getResponse()->isSuccessful());
$this->assertHasFlashSaveSuccess($client);
$configService = $this->getSystemConfiguration();
$this->assertEquals('Atlantic/Canary', $configService->find('defaults.customer.timezone'));
$this->assertEquals('BB', $configService->find('defaults.customer.country'));
$this->assertEquals('GBP', $configService->find('defaults.customer.currency'));
self::assertEquals('Atlantic/Canary', $configService->find('defaults.customer.timezone'));
self::assertEquals('BB', $configService->find('defaults.customer.country'));
self::assertEquals('GBP', $configService->find('defaults.customer.currency'));
}
public function testUpdateCustomerConfigWithSingleParam(): void
@ -244,7 +244,7 @@ class SystemConfigurationControllerTest extends ControllerBaseTest
$this->assertIsRedirect($client, $this->createUrl('/admin/system-config/edit/customer'));
$client->followRedirect();
$this->assertTrue($client->getResponse()->isSuccessful());
self::assertTrue($client->getResponse()->isSuccessful());
$this->assertHasFlashSaveSuccess($client);
}
@ -254,9 +254,9 @@ class SystemConfigurationControllerTest extends ControllerBaseTest
$this->assertAccessIsGranted($client, '/admin/system-config/edit/user');
$configService = $this->getSystemConfiguration();
$this->assertNull($configService->find('defaults.user.timezone'));
$this->assertEquals('default', $configService->find('defaults.user.theme'));
$this->assertEquals('en', $configService->find('defaults.user.language'));
self::assertNull($configService->find('defaults.user.timezone'));
self::assertEquals('default', $configService->find('defaults.user.theme'));
self::assertEquals('en', $configService->find('defaults.user.language'));
$form = $client->getCrawler()->filter('form[name=system_configuration_form_user]')->form();
$client->submit($form, [
@ -271,13 +271,13 @@ class SystemConfigurationControllerTest extends ControllerBaseTest
$this->assertIsRedirect($client, $this->createUrl('/admin/system-config/edit/user'));
$client->followRedirect();
$this->assertTrue($client->getResponse()->isSuccessful());
self::assertTrue($client->getResponse()->isSuccessful());
$this->assertHasFlashSaveSuccess($client);
$configService = $this->getSystemConfiguration();
$this->assertEquals('Pacific/Tahiti', $configService->find('defaults.user.timezone'));
$this->assertEquals('dark', $configService->find('defaults.user.theme'));
$this->assertEquals('ru', $configService->find('defaults.user.language'));
self::assertEquals('Pacific/Tahiti', $configService->find('defaults.user.timezone'));
self::assertEquals('dark', $configService->find('defaults.user.theme'));
self::assertEquals('ru', $configService->find('defaults.user.language'));
}
public function testUpdateCustomerConfigValidation(): void
@ -309,7 +309,7 @@ class SystemConfigurationControllerTest extends ControllerBaseTest
$this->assertAccessIsGranted($client, '/admin/system-config/');
$configService = $this->getSystemConfiguration();
$this->assertFalse($configService->find('timesheet.markdown_content'));
self::assertFalse($configService->find('timesheet.markdown_content'));
$form = $client->getCrawler()->filter('form[name=system_configuration_form_theme]')->form();
$client->submit($form, [
@ -322,11 +322,11 @@ class SystemConfigurationControllerTest extends ControllerBaseTest
$this->assertIsRedirect($client, $this->createUrl('/admin/system-config/'));
$client->followRedirect();
$this->assertTrue($client->getResponse()->isSuccessful());
self::assertTrue($client->getResponse()->isSuccessful());
$this->assertHasFlashSaveSuccess($client);
$configService = $this->getSystemConfiguration();
$this->assertTrue($configService->find('timesheet.markdown_content'));
self::assertTrue($configService->find('timesheet.markdown_content'));
}
public function testUpdateThemeConfigValidation(): void
@ -355,12 +355,12 @@ class SystemConfigurationControllerTest extends ControllerBaseTest
$this->assertAccessIsGranted($client, '/admin/system-config/');
$configService = $this->getSystemConfiguration();
$this->assertTrue($configService->find('calendar.week_numbers'));
$this->assertTrue($configService->find('calendar.weekends'));
$this->assertEquals('08:00', $configService->find('calendar.businessHours.begin'));
$this->assertEquals('20:00', $configService->find('calendar.businessHours.end'));
$this->assertEquals('00:00', $configService->find('calendar.visibleHours.begin'));
$this->assertEquals('23:59', $configService->find('calendar.visibleHours.end'));
self::assertTrue($configService->find('calendar.week_numbers'));
self::assertTrue($configService->find('calendar.weekends'));
self::assertEquals('08:00', $configService->find('calendar.businessHours.begin'));
self::assertEquals('20:00', $configService->find('calendar.businessHours.end'));
self::assertEquals('00:00', $configService->find('calendar.visibleHours.begin'));
self::assertEquals('23:59', $configService->find('calendar.visibleHours.end'));
$form = $client->getCrawler()->filter('form[name=system_configuration_form_calendar]')->form();
$client->submit($form, [
@ -378,16 +378,16 @@ class SystemConfigurationControllerTest extends ControllerBaseTest
$this->assertIsRedirect($client, $this->createUrl('/admin/system-config/'));
$client->followRedirect();
$this->assertTrue($client->getResponse()->isSuccessful());
self::assertTrue($client->getResponse()->isSuccessful());
$this->assertHasFlashSaveSuccess($client);
$configService = $this->getSystemConfiguration();
$this->assertFalse($configService->find('calendar.week_numbers'));
$this->assertFalse($configService->find('calendar.weekends'));
$this->assertEquals('10:00', $configService->find('calendar.businessHours.begin'));
$this->assertEquals('16:00', $configService->find('calendar.businessHours.end'));
$this->assertEquals('05:17', $configService->find('calendar.visibleHours.begin'));
$this->assertEquals('21:43', $configService->find('calendar.visibleHours.end'));
self::assertFalse($configService->find('calendar.week_numbers'));
self::assertFalse($configService->find('calendar.weekends'));
self::assertEquals('10:00', $configService->find('calendar.businessHours.begin'));
self::assertEquals('16:00', $configService->find('calendar.businessHours.end'));
self::assertEquals('05:17', $configService->find('calendar.visibleHours.begin'));
self::assertEquals('21:43', $configService->find('calendar.visibleHours.end'));
}
public function testUpdateCalendarConfigValidation(): void

View file

@ -16,7 +16,7 @@ use App\Tests\DataFixtures\TagFixtures;
/**
* @group integration
*/
class TagControllerTest extends ControllerBaseTest
class TagControllerTest extends AbstractControllerBaseTestCase
{
/**
* @return Tag[]
@ -53,14 +53,14 @@ class TagControllerTest extends ControllerBaseTest
$this->importTags();
$this->request($client, '/admin/tags/');
$this->assertTrue($client->getResponse()->isSuccessful());
self::assertTrue($client->getResponse()->isSuccessful());
$form = $client->getCrawler()->filter('form.searchform')->form();
$client->submit($form, [
'searchTerm' => 'Support',
]);
$this->assertTrue($client->getResponse()->isSuccessful());
self::assertTrue($client->getResponse()->isSuccessful());
$this->assertHasDataTable($client);
$this->assertDataTableRowCount($client, 'datatable_admin_tags', 2);
}
@ -83,7 +83,7 @@ class TagControllerTest extends ControllerBaseTest
$this->request($client, '/admin/tags/' . $id . '/edit');
$editForm = $client->getCrawler()->filter('form[name=tag_edit_form]')->form();
$this->assertEquals('A tAG Name!', $editForm->get('tag_edit_form[name]')->getValue());
self::assertEquals('A tAG Name!', $editForm->get('tag_edit_form[name]')->getValue());
}
public function testEditAction(): void
@ -102,7 +102,7 @@ class TagControllerTest extends ControllerBaseTest
$this->assertHasDataTable($client);
$this->request($client, '/admin/tags/' . $id . '/edit');
$editForm = $client->getCrawler()->filter('form[name=tag_edit_form]')->form();
$this->assertEquals('Test 2 updated', $editForm->get('tag_edit_form[name]')->getValue());
self::assertEquals('Test 2 updated', $editForm->get('tag_edit_form[name]')->getValue());
}
public function testMultiDeleteAction(): void

View file

@ -17,7 +17,7 @@ use Symfony\Component\HttpKernel\HttpKernelBrowser;
/**
* @group integration
*/
class TeamControllerTest extends ControllerBaseTest
class TeamControllerTest extends AbstractControllerBaseTestCase
{
public function testIsSecure(): void
{
@ -62,7 +62,7 @@ class TeamControllerTest extends ControllerBaseTest
'searchTerm' => 'foo',
]);
$this->assertTrue($client->getResponse()->isSuccessful());
self::assertTrue($client->getResponse()->isSuccessful());
$this->assertHasDataTable($client);
$this->assertDataTableRowCount($client, 'datatable_admin_teams', 5);
}
@ -73,7 +73,7 @@ class TeamControllerTest extends ControllerBaseTest
$this->assertAccessIsGranted($client, '/admin/teams/create');
$form = $client->getCrawler()->filter('form[name=team_edit_form]')->form();
$this->assertEquals('', $form->get('team_edit_form[name]')->getValue());
self::assertEquals('', $form->get('team_edit_form[name]')->getValue());
$values = $form->getPhpValues();
$values['team_edit_form']['name'] = 'Test Team' . uniqid();
@ -91,10 +91,10 @@ class TeamControllerTest extends ControllerBaseTest
protected function assertHasCustomerAndProjectPermissionBoxes(HttpKernelBrowser $client): void
{
$content = $client->getResponse()->getContent();
$this->assertStringContainsString('Grant access to customers', $content);
$this->assertStringContainsString('Grant access to projects', $content);
$this->assertEquals(1, $client->getCrawler()->filter('form[name=team_customer_form]')->count());
$this->assertEquals(1, $client->getCrawler()->filter('form[name=team_project_form]')->count());
self::assertStringContainsString('Grant access to customers', $content);
self::assertStringContainsString('Grant access to projects', $content);
self::assertEquals(1, $client->getCrawler()->filter('form[name=team_customer_form]')->count());
self::assertEquals(1, $client->getCrawler()->filter('form[name=team_project_form]')->count());
}
public function testEditAction(): void
@ -116,7 +116,7 @@ class TeamControllerTest extends ControllerBaseTest
$this->assertIsRedirect($client, $this->createUrl('/admin/teams/1/edit'));
$client->followRedirect();
$editForm = $client->getCrawler()->filter('form[name=team_edit_form]')->form();
$this->assertEquals('Test Team 2', $editForm->get('team_edit_form[name]')->getValue());
self::assertEquals('Test Team 2', $editForm->get('team_edit_form[name]')->getValue());
}
public function testEditMemberAction(): void
@ -137,7 +137,7 @@ class TeamControllerTest extends ControllerBaseTest
$this->assertIsRedirect($client, $this->createUrl('/admin/teams/1/edit'));
$client->followRedirect();
$editForm = $client->getCrawler()->filter('form[name=team_edit_form]')->form();
$this->assertEquals('Test Team 2', $editForm->get('team_edit_form[name]')->getValue());
self::assertEquals('Test Team 2', $editForm->get('team_edit_form[name]')->getValue());
}
public function testDuplicateAction(): void
@ -153,6 +153,6 @@ class TeamControllerTest extends ControllerBaseTest
$this->requestPure($client, $location);
$editForm = $client->getCrawler()->filter('form[name=team_edit_form]')->form();
$this->assertEquals('Test team (1)', $editForm->get('team_edit_form[name]')->getValue());
self::assertEquals('Test team (1)', $editForm->get('team_edit_form[name]')->getValue());
}
}

View file

@ -25,7 +25,7 @@ use Symfony\Component\EventDispatcher\EventDispatcher;
/**
* @group integration
*/
class TimesheetControllerTest extends ControllerBaseTest
class TimesheetControllerTest extends AbstractControllerBaseTestCase
{
public function testIsSecure(): void
{
@ -36,7 +36,7 @@ class TimesheetControllerTest extends ControllerBaseTest
{
$client = $this->getClientForAuthenticatedUser();
$this->request($client, '/timesheet/');
$this->assertTrue($client->getResponse()->isSuccessful());
self::assertTrue($client->getResponse()->isSuccessful());
// there are no records by default in the test database
$this->assertHasNoEntriesWithFilter($client);
@ -68,7 +68,7 @@ class TimesheetControllerTest extends ControllerBaseTest
$this->importFixture($fixture);
$this->request($client, '/timesheet/');
$this->assertTrue($client->getResponse()->isSuccessful());
self::assertTrue($client->getResponse()->isSuccessful());
$dateRange = $this->formatDateRange($start, new \DateTime('last day of this month'));
@ -83,7 +83,7 @@ class TimesheetControllerTest extends ControllerBaseTest
'tags' => 'foo',
]);
$this->assertTrue($client->getResponse()->isSuccessful());
self::assertTrue($client->getResponse()->isSuccessful());
$this->assertHasDataTable($client);
$this->assertDataTableRowCount($client, 'datatable_timesheet', 7);
@ -122,7 +122,7 @@ class TimesheetControllerTest extends ControllerBaseTest
$this->importFixture($fixture);
$this->request($client, '/timesheet/');
$this->assertTrue($client->getResponse()->isSuccessful());
self::assertTrue($client->getResponse()->isSuccessful());
$form = $client->getCrawler()->filter('form.searchform')->form();
$client->submit($form, [
@ -130,7 +130,7 @@ class TimesheetControllerTest extends ControllerBaseTest
'tags' => [$id],
]);
$this->assertTrue($client->getResponse()->isSuccessful());
self::assertTrue($client->getResponse()->isSuccessful());
$this->assertHasDataTable($client);
$this->assertDataTableRowCount($client, 'datatable_timesheet', 5);
}
@ -159,7 +159,7 @@ class TimesheetControllerTest extends ControllerBaseTest
$this->importFixture($fixture);
$this->request($client, '/timesheet/');
$this->assertTrue($client->getResponse()->isSuccessful());
self::assertTrue($client->getResponse()->isSuccessful());
$dateRange = $this->formatDateRange(new \DateTime('-10 days'), new \DateTime());
@ -171,15 +171,15 @@ class TimesheetControllerTest extends ControllerBaseTest
'customers' => [],
]);
$this->assertTrue($client->getResponse()->isSuccessful());
self::assertTrue($client->getResponse()->isSuccessful());
$node = $client->getCrawler()->filter('body');
/** @var \DOMElement $body */
$body = $node->getNode(0);
$this->assertEquals('invoice_print', $body->getAttribute('class'));
self::assertEquals('invoice_print', $body->getAttribute('class'));
$result = $node->filter('section.invoice table.table tbody tr');
$this->assertEquals(5, \count($result));
self::assertEquals(5, \count($result));
}
public function testExporterNotFoundAction(): void
@ -193,7 +193,7 @@ class TimesheetControllerTest extends ControllerBaseTest
{
$client = $this->getClientForAuthenticatedUser();
$this->request($client, '/timesheet/create');
$this->assertTrue($client->getResponse()->isSuccessful());
self::assertTrue($client->getResponse()->isSuccessful());
$form = $client->getCrawler()->filter('form[name=timesheet_edit_form]')->form();
$client->submit($form, [
@ -211,18 +211,18 @@ class TimesheetControllerTest extends ControllerBaseTest
$this->assertIsRedirect($client, $this->createUrl('/timesheet/'));
$client->followRedirect();
$this->assertTrue($client->getResponse()->isSuccessful());
self::assertTrue($client->getResponse()->isSuccessful());
$this->assertHasFlashSuccess($client);
$em = $this->getEntityManager();
/** @var Timesheet $timesheet */
$timesheet = $em->getRepository(Timesheet::class)->findAll()[0];
$this->assertInstanceOf(\DateTime::class, $timesheet->getBegin());
$this->assertNull($timesheet->getEnd());
$this->assertEquals('Testing is fun!', $timesheet->getDescription());
$this->assertEquals(0, $timesheet->getRate());
$this->assertNull($timesheet->getHourlyRate());
$this->assertNull($timesheet->getFixedRate());
self::assertInstanceOf(\DateTime::class, $timesheet->getBegin());
self::assertNull($timesheet->getEnd());
self::assertEquals('Testing is fun!', $timesheet->getDescription());
self::assertEquals(0, $timesheet->getRate());
self::assertNull($timesheet->getHourlyRate());
self::assertNull($timesheet->getFixedRate());
}
/**
@ -232,7 +232,7 @@ class TimesheetControllerTest extends ControllerBaseTest
{
$client = $this->getClientForAuthenticatedUser();
$this->request($client, '/timesheet/create');
$this->assertTrue($client->getResponse()->isSuccessful());
self::assertTrue($client->getResponse()->isSuccessful());
$form = $client->getCrawler()->filter('form[name=timesheet_edit_form]')->form();
$client->submit($form, [
@ -249,20 +249,20 @@ class TimesheetControllerTest extends ControllerBaseTest
$this->assertIsRedirect($client, $this->createUrl('/timesheet/'));
$client->followRedirect();
$this->assertTrue($client->getResponse()->isSuccessful());
self::assertTrue($client->getResponse()->isSuccessful());
$this->assertHasFlashSuccess($client);
$em = $this->getEntityManager();
/** @var Timesheet $timesheet */
$timesheet = $em->getRepository(Timesheet::class)->findAll()[0];
$this->assertInstanceOf(\DateTime::class, $timesheet->getBegin());
$this->assertInstanceOf(\DateTime::class, $timesheet->getEnd());
$this->assertEquals($expectedDuration, $timesheet->getDuration());
$this->assertEquals($expectedEnd, $timesheet->getEnd()->format('Y-m-d H:i:s'));
$this->assertEquals('Testing is fun!', $timesheet->getDescription());
self::assertInstanceOf(\DateTime::class, $timesheet->getBegin());
self::assertInstanceOf(\DateTime::class, $timesheet->getEnd());
self::assertEquals($expectedDuration, $timesheet->getDuration());
self::assertEquals($expectedEnd, $timesheet->getEnd()->format('Y-m-d H:i:s'));
self::assertEquals('Testing is fun!', $timesheet->getDescription());
}
public function getTestDataForDurationValues(): \Generator
public static function getTestDataForDurationValues(): \Generator
{
// duration is ignored, because end is set and the duration might come from a rounding rule (by default seconds are rounded down with 1)
yield ['12/31/2018', '12:00 AM', '02:10 AM', '01:00', 7800, '2018-12-31 02:10:00'];
@ -291,26 +291,26 @@ class TimesheetControllerTest extends ControllerBaseTest
$dispatcher = self::getContainer()->get('event_dispatcher');
$dispatcher->addSubscriber(new TimesheetTestMetaFieldSubscriberMock());
$this->request($client, '/timesheet/create');
$this->assertTrue($client->getResponse()->isSuccessful());
self::assertTrue($client->getResponse()->isSuccessful());
$form = $client->getCrawler()->filter('form[name=timesheet_edit_form]')->form();
$this->assertTrue($form->has('timesheet_edit_form[metaFields][metatestmock][value]'));
$this->assertTrue($form->has('timesheet_edit_form[metaFields][foobar][value]'));
$this->assertFalse($form->has('timesheet_edit_form[metaFields][0][value]'));
self::assertTrue($form->has('timesheet_edit_form[metaFields][metatestmock][value]'));
self::assertTrue($form->has('timesheet_edit_form[metaFields][foobar][value]'));
self::assertFalse($form->has('timesheet_edit_form[metaFields][0][value]'));
}
public function testCreateActionDoesNotShowRateFieldsForUser(): void
{
$client = $this->getClientForAuthenticatedUser();
$this->request($client, '/timesheet/create');
$this->assertTrue($client->getResponse()->isSuccessful());
self::assertTrue($client->getResponse()->isSuccessful());
$form = $client->getCrawler()->filter('form[name=timesheet_edit_form]')->form();
$this->assertFalse($form->has('timesheet_edit_form[hourlyRate]'));
$this->assertFalse($form->has('timesheet_edit_form[fixedRate]'));
self::assertFalse($form->has('timesheet_edit_form[hourlyRate]'));
self::assertFalse($form->has('timesheet_edit_form[fixedRate]'));
}
public function getTrackingModeTestData(): array
public static function getTrackingModeTestData(): array
{
return [
['duration_fixed_begin', User::ROLE_USER, false, false],
@ -330,18 +330,18 @@ class TimesheetControllerTest extends ControllerBaseTest
$client = $this->getClientForAuthenticatedUser($user);
$this->setSystemConfiguration('timesheet.mode', $trackingMode);
$this->request($client, '/timesheet/create');
$this->assertTrue($client->getResponse()->isSuccessful());
self::assertTrue($client->getResponse()->isSuccessful());
$form = $client->getCrawler()->filter('form[name=timesheet_edit_form]')->form();
$this->assertEquals($showBeginTime, $form->has('timesheet_edit_form[begin_time]'));
$this->assertEquals($showEndTime, $form->has('timesheet_edit_form[end_time]'));
self::assertEquals($showBeginTime, $form->has('timesheet_edit_form[begin_time]'));
self::assertEquals($showEndTime, $form->has('timesheet_edit_form[end_time]'));
}
public function testCreateActionWithFromAndToValues(): void
{
$client = $this->getClientForAuthenticatedUser(User::ROLE_ADMIN);
$this->request($client, '/timesheet/create?from=2018-08-02T20%3A00%3A00&to=2018-08-02T20%3A30%3A00');
$this->assertTrue($client->getResponse()->isSuccessful());
self::assertTrue($client->getResponse()->isSuccessful());
$form = $client->getCrawler()->filter('form[name=timesheet_edit_form]')->form();
$client->submit($form, [
@ -354,28 +354,28 @@ class TimesheetControllerTest extends ControllerBaseTest
$this->assertIsRedirect($client, $this->createUrl('/timesheet/'));
$client->followRedirect();
$this->assertTrue($client->getResponse()->isSuccessful());
self::assertTrue($client->getResponse()->isSuccessful());
$this->assertHasFlashSuccess($client);
$em = $this->getEntityManager();
/** @var Timesheet $timesheet */
$timesheet = $em->getRepository(Timesheet::class)->findAll()[0];
$this->assertInstanceOf(\DateTime::class, $timesheet->getBegin());
$this->assertInstanceOf(\DateTime::class, $timesheet->getEnd());
$this->assertEquals(50, $timesheet->getRate());
self::assertInstanceOf(\DateTime::class, $timesheet->getBegin());
self::assertInstanceOf(\DateTime::class, $timesheet->getEnd());
self::assertEquals(50, $timesheet->getRate());
$expected = new \DateTime('2018-08-02T20:00:00');
$this->assertEquals($expected->format(\DateTimeInterface::ATOM), $timesheet->getBegin()->format(\DateTimeInterface::ATOM));
self::assertEquals($expected->format(\DateTimeInterface::ATOM), $timesheet->getBegin()->format(\DateTimeInterface::ATOM));
$expected = new \DateTime('2018-08-02T20:30:00');
$this->assertEquals($expected->format(\DateTimeInterface::ATOM), $timesheet->getEnd()->format(\DateTimeInterface::ATOM));
self::assertEquals($expected->format(\DateTimeInterface::ATOM), $timesheet->getEnd()->format(\DateTimeInterface::ATOM));
}
public function testCreateActionWithFromAndToValuesTwice(): void
{
$client = $this->getClientForAuthenticatedUser(User::ROLE_ADMIN);
$this->request($client, '/timesheet/create?from=2018-08-02T20%3A00%3A00&to=2018-08-02T20%3A30%3A00');
$this->assertTrue($client->getResponse()->isSuccessful());
self::assertTrue($client->getResponse()->isSuccessful());
$form = $client->getCrawler()->filter('form[name=timesheet_edit_form]')->form();
$client->submit($form, [
@ -388,25 +388,25 @@ class TimesheetControllerTest extends ControllerBaseTest
$this->assertIsRedirect($client, $this->createUrl('/timesheet/'));
$client->followRedirect();
$this->assertTrue($client->getResponse()->isSuccessful());
self::assertTrue($client->getResponse()->isSuccessful());
$this->assertHasFlashSuccess($client);
$em = $this->getEntityManager();
/** @var Timesheet $timesheet */
$timesheet = $em->getRepository(Timesheet::class)->findAll()[0];
$this->assertInstanceOf(\DateTime::class, $timesheet->getBegin());
$this->assertInstanceOf(\DateTime::class, $timesheet->getEnd());
$this->assertEquals(50, $timesheet->getRate());
self::assertInstanceOf(\DateTime::class, $timesheet->getBegin());
self::assertInstanceOf(\DateTime::class, $timesheet->getEnd());
self::assertEquals(50, $timesheet->getRate());
$expected = new \DateTime('2018-08-02T20:00:00');
$this->assertEquals($expected->format(\DateTimeInterface::ATOM), $timesheet->getBegin()->format(\DateTimeInterface::ATOM));
self::assertEquals($expected->format(\DateTimeInterface::ATOM), $timesheet->getBegin()->format(\DateTimeInterface::ATOM));
$expected = new \DateTime('2018-08-02T20:30:00');
$this->assertEquals($expected->format(\DateTimeInterface::ATOM), $timesheet->getEnd()->format(\DateTimeInterface::ATOM));
self::assertEquals($expected->format(\DateTimeInterface::ATOM), $timesheet->getEnd()->format(\DateTimeInterface::ATOM));
// create a second entry that is overlapping
$this->request($client, '/timesheet/create?from=2018-08-02T20%3A02%3A00&to=2018-08-02T20%3A20%3A00');
$this->assertTrue($client->getResponse()->isSuccessful());
self::assertTrue($client->getResponse()->isSuccessful());
$form = $client->getCrawler()->filter('form[name=timesheet_edit_form]')->form();
$client->submit($form, [
@ -418,7 +418,7 @@ class TimesheetControllerTest extends ControllerBaseTest
]);
$this->assertIsRedirect($client, $this->createUrl('/timesheet/'));
$client->followRedirect();
$this->assertTrue($client->getResponse()->isSuccessful());
self::assertTrue($client->getResponse()->isSuccessful());
$this->assertHasFlashSuccess($client);
}
@ -496,7 +496,7 @@ class TimesheetControllerTest extends ControllerBaseTest
$this->request($client, '/timesheet/' . $id . '/edit');
$response = $client->getResponse();
$this->assertTrue($response->isSuccessful());
self::assertTrue($response->isSuccessful());
$this->setSystemConfiguration('timesheet.rules.allow_overbooking_budget', false);
@ -545,7 +545,7 @@ class TimesheetControllerTest extends ControllerBaseTest
$this->request($client, '/timesheet/' . $id . '/edit');
$response = $client->getResponse();
$this->assertTrue($response->isSuccessful());
self::assertTrue($response->isSuccessful());
$this->setSystemConfiguration('timesheet.rules.allow_zero_duration', false);
@ -578,7 +578,7 @@ class TimesheetControllerTest extends ControllerBaseTest
$this->importFixture($fixture);
$this->request($client, '/timesheet/create?begin=2018-08-02&end=2018-08-02&tags=one,two,three');
$this->assertTrue($client->getResponse()->isSuccessful());
self::assertTrue($client->getResponse()->isSuccessful());
$form = $client->getCrawler()->filter('form[name=timesheet_edit_form]')->form();
$client->submit($form, [
@ -591,23 +591,23 @@ class TimesheetControllerTest extends ControllerBaseTest
$this->assertIsRedirect($client, $this->createUrl('/timesheet/'));
$client->followRedirect();
$this->assertTrue($client->getResponse()->isSuccessful());
self::assertTrue($client->getResponse()->isSuccessful());
$this->assertHasFlashSuccess($client);
$em = $this->getEntityManager();
/** @var Timesheet $timesheet */
$timesheet = $em->getRepository(Timesheet::class)->findAll()[0];
$this->assertInstanceOf(\DateTime::class, $timesheet->getBegin());
$this->assertInstanceOf(\DateTime::class, $timesheet->getEnd());
$this->assertEquals(800, $timesheet->getRate());
self::assertInstanceOf(\DateTime::class, $timesheet->getBegin());
self::assertInstanceOf(\DateTime::class, $timesheet->getEnd());
self::assertEquals(800, $timesheet->getRate());
$expected = new \DateTime('2018-08-02T10:00:00');
$this->assertEquals($expected->format(\DateTimeInterface::ATOM), $timesheet->getBegin()->format(\DateTimeInterface::ATOM));
self::assertEquals($expected->format(\DateTimeInterface::ATOM), $timesheet->getBegin()->format(\DateTimeInterface::ATOM));
$expected = new \DateTime('2018-08-02T18:00:00');
$this->assertEquals($expected->format(\DateTimeInterface::ATOM), $timesheet->getEnd()->format(\DateTimeInterface::ATOM));
self::assertEquals($expected->format(\DateTimeInterface::ATOM), $timesheet->getEnd()->format(\DateTimeInterface::ATOM));
$this->assertEquals(['two'], $timesheet->getTagsAsArray());
self::assertEquals(['two'], $timesheet->getTagsAsArray());
}
public function testCreateActionWithDescription(): void
@ -615,7 +615,7 @@ class TimesheetControllerTest extends ControllerBaseTest
$client = $this->getClientForAuthenticatedUser(User::ROLE_ADMIN);
$this->request($client, '/timesheet/create?description=Lorem%20Ipsum');
$this->assertTrue($client->getResponse()->isSuccessful());
self::assertTrue($client->getResponse()->isSuccessful());
$form = $client->getCrawler()->filter('form[name=timesheet_edit_form]')->form();
$client->submit($form, [
@ -628,13 +628,13 @@ class TimesheetControllerTest extends ControllerBaseTest
$this->assertIsRedirect($client, $this->createUrl('/timesheet/'));
$client->followRedirect();
$this->assertTrue($client->getResponse()->isSuccessful());
self::assertTrue($client->getResponse()->isSuccessful());
$this->assertHasFlashSuccess($client);
$em = $this->getEntityManager();
/** @var Timesheet $timesheet */
$timesheet = $em->getRepository(Timesheet::class)->findAll()[0];
$this->assertEquals('Lorem Ipsum', $timesheet->getDescription());
self::assertEquals('Lorem Ipsum', $timesheet->getDescription());
}
public function testCreateActionWithDescriptionHtmlInjection(): void
@ -642,7 +642,7 @@ class TimesheetControllerTest extends ControllerBaseTest
$client = $this->getClientForAuthenticatedUser(User::ROLE_ADMIN);
$this->request($client, '/timesheet/create?description=Some text"><bold>HelloWorld<%2Fbold>');
$this->assertTrue($client->getResponse()->isSuccessful());
self::assertTrue($client->getResponse()->isSuccessful());
$form = $client->getCrawler()->filter('form[name=timesheet_edit_form]')->form();
$client->submit($form, [
@ -655,13 +655,13 @@ class TimesheetControllerTest extends ControllerBaseTest
$this->assertIsRedirect($client, $this->createUrl('/timesheet/'));
$client->followRedirect();
$this->assertTrue($client->getResponse()->isSuccessful());
self::assertTrue($client->getResponse()->isSuccessful());
$this->assertHasFlashSuccess($client);
$em = $this->getEntityManager();
/** @var Timesheet $timesheet */
$timesheet = $em->getRepository(Timesheet::class)->findAll()[0];
$this->assertEquals('Some text"><bold>HelloWorld</bold>', $timesheet->getDescription());
self::assertEquals('Some text"><bold>HelloWorld</bold>', $timesheet->getDescription());
}
public function testEditAction(): void
@ -684,9 +684,9 @@ class TimesheetControllerTest extends ControllerBaseTest
$this->request($client, '/timesheet/' . $id . '/edit');
$response = $client->getResponse();
$this->assertTrue($response->isSuccessful());
self::assertTrue($response->isSuccessful());
$this->assertStringContainsString(
self::assertStringContainsString(
'href="https://www.kimai.org/documentation/timesheet.html"',
$response->getContent(),
'Could not find link to documentation'
@ -702,13 +702,13 @@ class TimesheetControllerTest extends ControllerBaseTest
$this->assertIsRedirect($client, $this->createUrl('/timesheet/'));
$client->followRedirect();
$this->assertTrue($client->getResponse()->isSuccessful());
self::assertTrue($client->getResponse()->isSuccessful());
$this->assertHasFlashSaveSuccess($client);
$em = $this->getEntityManager();
/** @var Timesheet $timesheet */
$timesheet = $em->getRepository(Timesheet::class)->find($id);
$this->assertEquals('foo-bar', $timesheet->getDescription());
self::assertEquals('foo-bar', $timesheet->getDescription());
}
public function testMultiDeleteAction(): void
@ -784,7 +784,7 @@ class TimesheetControllerTest extends ControllerBaseTest
'entities' => implode(',', $ids)
]
]);
$this->assertTrue($client->getResponse()->isSuccessful());
self::assertTrue($client->getResponse()->isSuccessful());
$form = $client->getCrawler()->filter('form[name=timesheet_multi_update]')->form();
$client->submit($form, [
@ -834,25 +834,25 @@ class TimesheetControllerTest extends ControllerBaseTest
$newId = $ids[0]->getId();
$this->request($client, '/timesheet/' . $newId . '/duplicate');
$this->assertTrue($client->getResponse()->isSuccessful());
self::assertTrue($client->getResponse()->isSuccessful());
$form = $client->getCrawler()->filter('form[name=timesheet_edit_form]')->form();
$client->submit($form, $form->getPhpValues());
$this->assertIsRedirect($client, $this->createUrl('/timesheet/'));
$client->followRedirect();
$this->assertTrue($client->getResponse()->isSuccessful());
self::assertTrue($client->getResponse()->isSuccessful());
$this->assertHasFlashSuccess($client);
$em = $this->getEntityManager();
/** @var Timesheet $timesheet */
$timesheet = $em->getRepository(Timesheet::class)->find($newId++);
$this->assertInstanceOf(\DateTime::class, $timesheet->getBegin());
$this->assertEquals('Europe/London', $timesheet->getBegin()->getTimezone()->getName());
$this->assertEquals('Testing is fun!', $timesheet->getDescription());
$this->assertEquals(2016, $timesheet->getRate());
$this->assertEquals(127, $timesheet->getHourlyRate());
$this->assertEquals(2016, $timesheet->getFixedRate());
$this->assertEquals(2016, $timesheet->getRate());
self::assertInstanceOf(\DateTime::class, $timesheet->getBegin());
self::assertEquals('Europe/London', $timesheet->getBegin()->getTimezone()->getName());
self::assertEquals('Testing is fun!', $timesheet->getDescription());
self::assertEquals(2016, $timesheet->getRate());
self::assertEquals(127, $timesheet->getHourlyRate());
self::assertEquals(2016, $timesheet->getFixedRate());
self::assertEquals(2016, $timesheet->getRate());
}
}

View file

@ -21,7 +21,7 @@ use App\Timesheet\Util;
/**
* @group integration
*/
class TimesheetTeamControllerTest extends ControllerBaseTest
class TimesheetTeamControllerTest extends AbstractControllerBaseTestCase
{
public function testIsSecure(): void
{
@ -37,7 +37,7 @@ class TimesheetTeamControllerTest extends ControllerBaseTest
{
$client = $this->getClientForAuthenticatedUser(User::ROLE_TEAMLEAD);
$this->assertAccessIsGranted($client, '/team/timesheet/');
$this->assertTrue($client->getResponse()->isSuccessful());
self::assertTrue($client->getResponse()->isSuccessful());
// there are no records by default in the test database
$this->assertHasNoEntriesWithFilter($client);
@ -67,7 +67,7 @@ class TimesheetTeamControllerTest extends ControllerBaseTest
$this->importFixture($fixture);
$this->request($client, '/team/timesheet/');
$this->assertTrue($client->getResponse()->isSuccessful());
self::assertTrue($client->getResponse()->isSuccessful());
$dateRange = $this->formatDateRange($start, new \DateTime('last day of this month'));
@ -80,7 +80,7 @@ class TimesheetTeamControllerTest extends ControllerBaseTest
'customers' => [],
]);
$this->assertTrue($client->getResponse()->isSuccessful());
self::assertTrue($client->getResponse()->isSuccessful());
$this->assertHasDataTable($client);
$this->assertDataTableRowCount($client, 'datatable_timesheet_admin', 13);
@ -112,14 +112,14 @@ class TimesheetTeamControllerTest extends ControllerBaseTest
$this->importFixture($fixture);
$this->request($client, '/team/timesheet/');
$this->assertTrue($client->getResponse()->isSuccessful());
self::assertTrue($client->getResponse()->isSuccessful());
$form = $client->getCrawler()->filter('form.searchform')->form();
$client->submit($form, [
'searchTerm' => 'location:homeoffice foobar',
]);
$this->assertTrue($client->getResponse()->isSuccessful());
self::assertTrue($client->getResponse()->isSuccessful());
$this->assertHasDataTable($client);
$this->assertDataTableRowCount($client, 'datatable_timesheet_admin', 5);
}
@ -140,7 +140,7 @@ class TimesheetTeamControllerTest extends ControllerBaseTest
$this->importFixture($fixture);
$this->request($client, '/team/timesheet/');
$this->assertTrue($client->getResponse()->isSuccessful());
self::assertTrue($client->getResponse()->isSuccessful());
$dateRange = $this->formatDateRange(new \DateTime('-10 days'), new \DateTime());
@ -152,15 +152,15 @@ class TimesheetTeamControllerTest extends ControllerBaseTest
'customers' => [],
]);
$this->assertTrue($client->getResponse()->isSuccessful());
self::assertTrue($client->getResponse()->isSuccessful());
$node = $client->getCrawler()->filter('body');
/** @var \DOMElement $body */
$body = $node->getNode(0);
$this->assertEquals('invoice_print', $body->getAttribute('class'));
self::assertEquals('invoice_print', $body->getAttribute('class'));
$result = $node->filter('section.invoice table.table tbody tr');
$this->assertEquals(10, \count($result));
self::assertEquals(10, \count($result));
}
public function testExporterNotFoundAction(): void
@ -174,7 +174,7 @@ class TimesheetTeamControllerTest extends ControllerBaseTest
{
$client = $this->getClientForAuthenticatedUser(User::ROLE_ADMIN);
$this->request($client, '/team/timesheet/create');
$this->assertTrue($client->getResponse()->isSuccessful());
self::assertTrue($client->getResponse()->isSuccessful());
$form = $client->getCrawler()->filter('form[name=timesheet_admin_edit_form]')->form();
$client->submit($form, [
@ -187,18 +187,18 @@ class TimesheetTeamControllerTest extends ControllerBaseTest
$this->assertIsRedirect($client, $this->createUrl('/team/timesheet/'));
$client->followRedirect();
$this->assertTrue($client->getResponse()->isSuccessful());
self::assertTrue($client->getResponse()->isSuccessful());
$this->assertHasFlashSuccess($client);
$em = $this->getEntityManager();
/** @var Timesheet $timesheet */
$timesheet = $em->getRepository(Timesheet::class)->findAll()[0];
$this->assertInstanceOf(\DateTime::class, $timesheet->getBegin());
$this->assertNull($timesheet->getEnd());
$this->assertEquals('Testing is fun!', $timesheet->getDescription());
$this->assertEquals(0, $timesheet->getRate());
$this->assertNull($timesheet->getHourlyRate());
$this->assertNull($timesheet->getFixedRate());
self::assertInstanceOf(\DateTime::class, $timesheet->getBegin());
self::assertNull($timesheet->getEnd());
self::assertEquals('Testing is fun!', $timesheet->getDescription());
self::assertEquals(0, $timesheet->getRate());
self::assertNull($timesheet->getHourlyRate());
self::assertNull($timesheet->getFixedRate());
}
public function testCreateForMultipleUsersAction(): void
@ -210,7 +210,7 @@ class TimesheetTeamControllerTest extends ControllerBaseTest
$this->importFixture($fixture);
$this->request($client, '/team/timesheet/create_mu');
$this->assertTrue($client->getResponse()->isSuccessful());
self::assertTrue($client->getResponse()->isSuccessful());
$form = $client->getCrawler()->filter('form[name=timesheet_multi_user_edit_form]')->form();
$client->submit($form, [
@ -225,21 +225,21 @@ class TimesheetTeamControllerTest extends ControllerBaseTest
$this->assertIsRedirect($client, $this->createUrl('/team/timesheet/'));
$client->followRedirect();
$this->assertTrue($client->getResponse()->isSuccessful());
self::assertTrue($client->getResponse()->isSuccessful());
$this->assertHasFlashSuccess($client);
$em = $this->getEntityManager();
/** @var Timesheet[] $timesheets */
$timesheets = $em->getRepository(Timesheet::class)->findAll();
$this->assertCount(2, $timesheets);
self::assertCount(2, $timesheets);
foreach ($timesheets as $timesheet) {
$this->assertInstanceOf(\DateTime::class, $timesheet->getBegin());
$this->assertNull($timesheet->getEnd());
$this->assertEquals('Testing is more fun!', $timesheet->getDescription());
$this->assertEquals(0, $timesheet->getRate());
$this->assertNull($timesheet->getHourlyRate());
$this->assertNull($timesheet->getFixedRate());
$this->assertEquals(['test', '1234', 'foo-bar'], $timesheet->getTagsAsArray());
self::assertInstanceOf(\DateTime::class, $timesheet->getBegin());
self::assertNull($timesheet->getEnd());
self::assertEquals('Testing is more fun!', $timesheet->getDescription());
self::assertEquals(0, $timesheet->getRate());
self::assertNull($timesheet->getHourlyRate());
self::assertNull($timesheet->getFixedRate());
self::assertEquals(['test', '1234', 'foo-bar'], $timesheet->getTagsAsArray());
}
}
@ -290,9 +290,9 @@ class TimesheetTeamControllerTest extends ControllerBaseTest
$this->request($client, '/team/timesheet/' . $id . '/edit');
$response = $client->getResponse();
$this->assertTrue($response->isSuccessful());
self::assertTrue($response->isSuccessful());
$this->assertStringContainsString(
self::assertStringContainsString(
'href="https://www.kimai.org/documentation/timesheet.html"',
$response->getContent(),
'Could not find link to documentation'
@ -309,14 +309,14 @@ class TimesheetTeamControllerTest extends ControllerBaseTest
$this->assertIsRedirect($client, $this->createUrl('/team/timesheet/'));
$client->followRedirect();
$this->assertTrue($client->getResponse()->isSuccessful());
self::assertTrue($client->getResponse()->isSuccessful());
$this->assertHasFlashSaveSuccess($client);
$em = $this->getEntityManager();
/** @var Timesheet $timesheet */
$timesheet = $em->getRepository(Timesheet::class)->find($id);
$this->assertEquals('foo-bar', $timesheet->getDescription());
$this->assertEquals($teamlead->getId(), $timesheet->getUser()->getId());
self::assertEquals('foo-bar', $timesheet->getDescription());
self::assertEquals($teamlead->getId(), $timesheet->getUser()->getId());
}
public function testMultiDeleteAction(): void
@ -392,7 +392,7 @@ class TimesheetTeamControllerTest extends ControllerBaseTest
'entities' => implode(',', $ids)
]
]);
$this->assertTrue($client->getResponse()->isSuccessful());
self::assertTrue($client->getResponse()->isSuccessful());
$newUser = $this->getUserByRole(User::ROLE_USER);
$form = $client->getCrawler()->filter('form[name=timesheet_multi_update]')->form();
@ -446,25 +446,25 @@ class TimesheetTeamControllerTest extends ControllerBaseTest
$newId = $ids[0]->getId();
$this->request($client, '/team/timesheet/' . $newId . '/duplicate');
$this->assertTrue($client->getResponse()->isSuccessful());
self::assertTrue($client->getResponse()->isSuccessful());
$form = $client->getCrawler()->filter('form[name=timesheet_admin_edit_form]')->form();
$client->submit($form, $form->getPhpValues());
$this->assertIsRedirect($client, $this->createUrl('/team/timesheet/'));
$client->followRedirect();
$this->assertTrue($client->getResponse()->isSuccessful());
self::assertTrue($client->getResponse()->isSuccessful());
$this->assertHasFlashSuccess($client);
$em = $this->getEntityManager();
/** @var Timesheet $timesheet */
$timesheet = $em->getRepository(Timesheet::class)->find($newId++);
$this->assertInstanceOf(\DateTime::class, $timesheet->getBegin());
$this->assertEquals('Europe/London', $timesheet->getBegin()->getTimezone()->getName());
$this->assertEquals('Testing is fun!', $timesheet->getDescription());
$this->assertEquals(2016, $timesheet->getRate());
$this->assertEquals(127, $timesheet->getHourlyRate());
$this->assertEquals(2016, $timesheet->getFixedRate());
$this->assertEquals(2016, $timesheet->getRate());
self::assertInstanceOf(\DateTime::class, $timesheet->getBegin());
self::assertEquals('Europe/London', $timesheet->getBegin()->getTimezone()->getName());
self::assertEquals('Testing is fun!', $timesheet->getDescription());
self::assertEquals(2016, $timesheet->getRate());
self::assertEquals(127, $timesheet->getHourlyRate());
self::assertEquals(2016, $timesheet->getFixedRate());
self::assertEquals(2016, $timesheet->getRate());
}
}

View file

@ -16,7 +16,7 @@ use App\Tests\DataFixtures\TimesheetFixtures;
/**
* @group integration
*/
class UserControllerTest extends ControllerBaseTest
class UserControllerTest extends AbstractControllerBaseTestCase
{
public function testIsSecure(): void
{
@ -48,7 +48,7 @@ class UserControllerTest extends ControllerBaseTest
$client = $this->getClientForAuthenticatedUser(User::ROLE_SUPER_ADMIN);
$this->request($client, '/admin/user/');
$this->assertTrue($client->getResponse()->isSuccessful());
self::assertTrue($client->getResponse()->isSuccessful());
$form = $client->getCrawler()->filter('form.searchform')->form();
$client->submit($form, [
@ -59,7 +59,7 @@ class UserControllerTest extends ControllerBaseTest
'page' => 1,
]);
$this->assertTrue($client->getResponse()->isSuccessful());
self::assertTrue($client->getResponse()->isSuccessful());
$this->assertHasDataTable($client);
$this->assertDataTableRowCount($client, 'datatable_user_admin', 1);
}
@ -81,7 +81,7 @@ class UserControllerTest extends ControllerBaseTest
$client = $this->getClientForAuthenticatedUser(User::ROLE_SUPER_ADMIN);
$this->request($client, '/admin/user/');
$this->assertTrue($client->getResponse()->isSuccessful());
self::assertTrue($client->getResponse()->isSuccessful());
$form = $client->getCrawler()->filter('form.searchform')->form();
$form->getFormNode()->setAttribute('action', $this->createUrl('/admin/user/export'));
@ -116,7 +116,7 @@ class UserControllerTest extends ControllerBaseTest
$this->requestPure($client, $location);
$form = $client->getCrawler()->filter('form[name=user_edit]')->form();
$this->assertEquals($username, $form->get('user_edit[alias]')->getValue());
self::assertEquals($username, $form->get('user_edit[alias]')->getValue());
}
public function testDeleteAction(): void
@ -124,10 +124,10 @@ class UserControllerTest extends ControllerBaseTest
$client = $this->getClientForAuthenticatedUser(User::ROLE_SUPER_ADMIN);
$this->request($client, '/admin/user/4/delete');
$this->assertTrue($client->getResponse()->isSuccessful());
self::assertTrue($client->getResponse()->isSuccessful());
$form = $client->getCrawler()->filter('form[name=form]')->form();
$this->assertStringEndsWith($this->createUrl('/admin/user/4/delete'), $form->getUri());
self::assertStringEndsWith($this->createUrl('/admin/user/4/delete'), $form->getUri());
$client->submit($form);
$client->followRedirect();
@ -135,7 +135,7 @@ class UserControllerTest extends ControllerBaseTest
$this->assertHasFlashSuccess($client);
$this->request($client, '/admin/user/4/edit');
$this->assertFalse($client->getResponse()->isSuccessful());
self::assertFalse($client->getResponse()->isSuccessful());
}
public function testDeleteActionWithTimesheetEntries(): void
@ -151,13 +151,13 @@ class UserControllerTest extends ControllerBaseTest
$this->importFixture($fixture);
$timesheets = $em->getRepository(Timesheet::class)->findAll();
$this->assertEquals(10, \count($timesheets));
self::assertEquals(10, \count($timesheets));
$this->request($client, '/admin/user/' . $user->getId() . '/delete');
$this->assertTrue($client->getResponse()->isSuccessful());
self::assertTrue($client->getResponse()->isSuccessful());
$form = $client->getCrawler()->filter('form[name=form]')->form();
$this->assertStringEndsWith($this->createUrl('/admin/user/' . $user->getId() . '/delete'), $form->getUri());
self::assertStringEndsWith($this->createUrl('/admin/user/' . $user->getId() . '/delete'), $form->getUri());
$client->submit($form);
$this->assertIsRedirect($client, $this->createUrl('/admin/user/'));
@ -166,10 +166,10 @@ class UserControllerTest extends ControllerBaseTest
$em->clear();
$timesheets = $em->getRepository(Timesheet::class)->count([]);
$this->assertEquals(0, $timesheets);
self::assertEquals(0, $timesheets);
$this->request($client, '/admin/user/' . $user->getId() . '/edit');
$this->assertFalse($client->getResponse()->isSuccessful());
self::assertFalse($client->getResponse()->isSuccessful());
}
public function testDeleteActionWithUserReplacementAndTimesheetEntries(): void
@ -188,16 +188,16 @@ class UserControllerTest extends ControllerBaseTest
$this->importFixture($fixture);
$timesheets = $em->getRepository(Timesheet::class)->findAll();
$this->assertEquals(10, \count($timesheets));
self::assertEquals(10, \count($timesheets));
foreach ($timesheets as $timesheet) {
$this->assertEquals($user->getId(), $timesheet->getUser()->getId());
self::assertEquals($user->getId(), $timesheet->getUser()->getId());
}
$this->request($client, '/admin/user/' . $user->getId() . '/delete');
$this->assertTrue($client->getResponse()->isSuccessful());
self::assertTrue($client->getResponse()->isSuccessful());
$form = $client->getCrawler()->filter('form[name=form]')->form();
$this->assertStringEndsWith($this->createUrl('/admin/user/' . $user->getId() . '/delete'), $form->getUri());
self::assertStringEndsWith($this->createUrl('/admin/user/' . $user->getId() . '/delete'), $form->getUri());
$client->submit($form, [
'form' => [
'user' => $userNew->getId()
@ -210,13 +210,13 @@ class UserControllerTest extends ControllerBaseTest
$em->clear();
$timesheets = $em->getRepository(Timesheet::class)->findAll();
$this->assertEquals(10, \count($timesheets));
self::assertEquals(10, \count($timesheets));
foreach ($timesheets as $timesheet) {
$this->assertEquals($userNew->getId(), $timesheet->getUser()->getId());
self::assertEquals($userNew->getId(), $timesheet->getUser()->getId());
}
$this->request($client, '/admin/user/' . $user->getId() . '/edit');
$this->assertFalse($client->getResponse()->isSuccessful());
self::assertFalse($client->getResponse()->isSuccessful());
}
/**
@ -233,7 +233,7 @@ class UserControllerTest extends ControllerBaseTest
);
}
public function getValidationTestData()
public static function getValidationTestData()
{
return [
[

View file

@ -14,7 +14,7 @@ use App\Entity\User;
/**
* @group integration
*/
class WidgetControllerTest extends ControllerBaseTest
class WidgetControllerTest extends AbstractControllerBaseTestCase
{
public function testIsSecure(): void
{

View file

@ -14,7 +14,7 @@ use App\Entity\User;
/**
* @group integration
*/
class WizardControllerTest extends ControllerBaseTest
class WizardControllerTest extends AbstractControllerBaseTestCase
{
public function testUnknownWizard(): void
{

View file

@ -149,19 +149,19 @@ class AppExtensionTest extends TestCase
],
];
$this->assertTrue($container->hasParameter('kimai.config'));
self::assertTrue($container->hasParameter('kimai.config'));
/** @var array<string, mixed> $config */
$config = $container->getParameter('kimai.config');
foreach (SystemConfigurationFactory::flatten($kimaiLdap) as $key => $value) {
$this->assertArrayHasKey($key, $config);
$this->assertEquals($value, $config[$key]);
self::assertArrayHasKey($key, $config);
self::assertEquals($value, $config[$key]);
}
foreach ($expected as $key => $value) {
$this->assertTrue($container->hasParameter($key), 'Could not find config: ' . $key);
$this->assertEquals($value, $container->getParameter($key), 'Invalid config: ' . $key);
self::assertTrue($container->hasParameter($key), 'Could not find config: ' . $key);
self::assertEquals($value, $container->getParameter($key), 'Invalid config: ' . $key);
}
}
@ -185,17 +185,17 @@ class AppExtensionTest extends TestCase
$config = $container->getParameter('kimai.config');
$this->assertIsArray($config);
$this->assertArrayHasKey('ldap.user.baseDn', $config);
$this->assertArrayHasKey('ldap.user.filter', $config);
$this->assertArrayHasKey('ldap.user.usernameAttribute', $config);
$this->assertArrayHasKey('ldap.connection.baseDn', $config);
$this->assertArrayHasKey('ldap.connection.accountFilterFormat', $config);
$this->assertEquals('123123123', $config['ldap.user.baseDn']);
$this->assertEquals('(..........)', $config['ldap.user.filter']);
$this->assertEquals('xxx', $config['ldap.user.usernameAttribute']);
$this->assertEquals('lkhiuzhkj', $config['ldap.connection.baseDn']);
$this->assertEquals('(uid=%s)', $config['ldap.connection.accountFilterFormat']);
self::assertIsArray($config);
self::assertArrayHasKey('ldap.user.baseDn', $config);
self::assertArrayHasKey('ldap.user.filter', $config);
self::assertArrayHasKey('ldap.user.usernameAttribute', $config);
self::assertArrayHasKey('ldap.connection.baseDn', $config);
self::assertArrayHasKey('ldap.connection.accountFilterFormat', $config);
self::assertEquals('123123123', $config['ldap.user.baseDn']);
self::assertEquals('(..........)', $config['ldap.user.filter']);
self::assertEquals('xxx', $config['ldap.user.usernameAttribute']);
self::assertEquals('lkhiuzhkj', $config['ldap.connection.baseDn']);
self::assertEquals('(uid=%s)', $config['ldap.connection.accountFilterFormat']);
}
public function testLdapFallbackValue(): void
@ -215,12 +215,12 @@ class AppExtensionTest extends TestCase
$config = $container->getParameter('kimai.config');
$this->assertIsArray($config);
$this->assertEquals('123123123', $config['ldap.user.baseDn']);
$this->assertEquals('xxx', $config['ldap.user.usernameAttribute']);
$this->assertEquals('123123123', $config['ldap.connection.baseDn']);
$this->assertEquals('(&(xxx=%s))', $config['ldap.connection.accountFilterFormat']);
$this->assertEquals('', $config['ldap.user.filter']);
self::assertIsArray($config);
self::assertEquals('123123123', $config['ldap.user.baseDn']);
self::assertEquals('xxx', $config['ldap.user.usernameAttribute']);
self::assertEquals('123123123', $config['ldap.connection.baseDn']);
self::assertEquals('(&(xxx=%s))', $config['ldap.connection.accountFilterFormat']);
self::assertEquals('', $config['ldap.user.filter']);
}
public function testLdapMoreFallbackValue(): void
@ -241,13 +241,13 @@ class AppExtensionTest extends TestCase
$this->extension->load($minConfig, $container = $this->getContainer());
$config = $container->getParameter('kimai.config');
$this->assertIsArray($config);
self::assertIsArray($config);
$this->assertEquals('123123123', $config['ldap.user.baseDn']);
$this->assertEquals('zzzz', $config['ldap.user.usernameAttribute']);
$this->assertEquals('7658765', $config['ldap.connection.baseDn']);
$this->assertEquals('(&(&(objectClass=inetOrgPerson))(zzzz=%s))', $config['ldap.connection.accountFilterFormat']);
$this->assertEquals('(&(objectClass=inetOrgPerson))', $config['ldap.user.filter']);
self::assertEquals('123123123', $config['ldap.user.baseDn']);
self::assertEquals('zzzz', $config['ldap.user.usernameAttribute']);
self::assertEquals('7658765', $config['ldap.connection.baseDn']);
self::assertEquals('(&(&(objectClass=inetOrgPerson))(zzzz=%s))', $config['ldap.connection.accountFilterFormat']);
self::assertEquals('(&(objectClass=inetOrgPerson))', $config['ldap.user.filter']);
}
public function testWithBundleConfiguration(): void

View file

@ -22,6 +22,6 @@ class TimesheetSubscriberTest extends TestCase
{
$sut = new TimesheetSubscriber([]);
$events = $sut->getSubscribedEvents();
$this->assertTrue(\in_array(Events::onFlush, $events));
self::assertTrue(\in_array(Events::onFlush, $events));
}
}

View file

@ -27,10 +27,10 @@ class UTCDateTimeImmutableTypeTest extends TestCase
Type::overrideType(Types::DATETIME_MUTABLE, UTCDateTimeImmutableType::class);
$type = Type::getType(Types::DATETIME_MUTABLE);
$this->assertInstanceOf(UTCDateTimeImmutableType::class, $type);
self::assertInstanceOf(UTCDateTimeImmutableType::class, $type);
$utc = $type::getUtc();
$this->assertSame($utc, $type::getUtc());
$this->assertEquals('UTC', $type::getUtc()->getName());
self::assertSame($utc, $type::getUtc());
self::assertEquals('UTC', $type::getUtc()->getName());
}
/**
@ -43,13 +43,13 @@ class UTCDateTimeImmutableTypeTest extends TestCase
$type = Type::getType(Types::DATETIME_MUTABLE);
$result = $type->convertToDatabaseValue(null, $platform);
$this->assertNull($result);
self::assertNull($result);
$berlinTz = new \DateTimeZone('Europe/Berlin');
$date = new \DateTimeImmutable('2019-01-17 13:30:00');
$date = $date->setTimezone($berlinTz);
$this->assertEquals('Europe/Berlin', $date->getTimezone()->getName());
self::assertEquals('Europe/Berlin', $date->getTimezone()->getName());
$expected = clone $date;
$expected = $expected->setTimezone($type::getUtc());
@ -58,7 +58,7 @@ class UTCDateTimeImmutableTypeTest extends TestCase
/** @var \DateTime $result */
$result = $type->convertToDatabaseValue($date, $platform);
$this->assertEquals($bla, $result);
self::assertEquals($bla, $result);
}
/**
@ -71,14 +71,14 @@ class UTCDateTimeImmutableTypeTest extends TestCase
$type = Type::getType(Types::DATETIME_MUTABLE);
$result = $type->convertToPHPValue(null, $platform);
$this->assertNull($result);
self::assertNull($result);
$result = $type->convertToPHPValue('2019-01-17 13:30:00', $platform);
$this->assertInstanceOf(\DateTimeImmutable::class, $result);
$this->assertEquals('UTC', $result->getTimezone()->getName());
self::assertInstanceOf(\DateTimeImmutable::class, $result);
self::assertEquals('UTC', $result->getTimezone()->getName());
$result = $result->format($platform->getDateTimeFormatString());
$this->assertEquals('2019-01-17 13:30:00', $result);
self::assertEquals('2019-01-17 13:30:00', $result);
}
/**
@ -98,7 +98,7 @@ class UTCDateTimeImmutableTypeTest extends TestCase
/**
* @return \Doctrine\DBAL\Platforms\MySQLPlatform[][]
*/
public function getPlatforms(): array
public static function getPlatforms(): array
{
return [
[new MySQLPlatform()],

View file

@ -27,10 +27,10 @@ class UTCDateTimeTypeTest extends TestCase
Type::overrideType(Types::DATETIME_MUTABLE, UTCDateTimeType::class);
$type = Type::getType(Types::DATETIME_MUTABLE);
$this->assertInstanceOf(UTCDateTimeType::class, $type);
self::assertInstanceOf(UTCDateTimeType::class, $type);
$utc = $type::getUtc();
$this->assertSame($utc, $type::getUtc());
$this->assertEquals('UTC', $type::getUtc()->getName());
self::assertSame($utc, $type::getUtc());
self::assertEquals('UTC', $type::getUtc()->getName());
}
/**
@ -43,13 +43,13 @@ class UTCDateTimeTypeTest extends TestCase
$type = Type::getType(Types::DATETIME_MUTABLE);
$result = $type->convertToDatabaseValue(null, $platform);
$this->assertNull($result);
self::assertNull($result);
$berlinTz = new \DateTimeZone('Europe/Berlin');
$date = new \DateTime('2019-01-17 13:30:00');
$date->setTimezone($berlinTz);
$this->assertEquals('Europe/Berlin', $date->getTimezone()->getName());
self::assertEquals('Europe/Berlin', $date->getTimezone()->getName());
$expected = clone $date;
$expected->setTimezone($type::getUtc());
@ -58,7 +58,7 @@ class UTCDateTimeTypeTest extends TestCase
/** @var \DateTime $result */
$result = $type->convertToDatabaseValue($date, $platform);
$this->assertEquals($bla, $result);
self::assertEquals($bla, $result);
}
/**
@ -71,14 +71,14 @@ class UTCDateTimeTypeTest extends TestCase
$type = Type::getType(Types::DATETIME_MUTABLE);
$result = $type->convertToPHPValue(null, $platform);
$this->assertNull($result);
self::assertNull($result);
$result = $type->convertToPHPValue('2019-01-17 13:30:00', $platform);
$this->assertInstanceOf(\DateTime::class, $result);
$this->assertEquals('UTC', $result->getTimezone()->getName());
self::assertInstanceOf(\DateTime::class, $result);
self::assertEquals('UTC', $result->getTimezone()->getName());
$result = $result->format($platform->getDateTimeFormatString());
$this->assertEquals('2019-01-17 13:30:00', $result);
self::assertEquals('2019-01-17 13:30:00', $result);
}
/**
@ -98,7 +98,7 @@ class UTCDateTimeTypeTest extends TestCase
/**
* @return \Doctrine\DBAL\Platforms\MySQLPlatform[][]
*/
public function getPlatforms(): array
public static function getPlatforms(): array
{
return [
[new MySQLPlatform()],

View file

@ -13,7 +13,7 @@ use App\Entity\CommentInterface;
use App\Entity\User;
use PHPUnit\Framework\TestCase;
abstract class AbstractCommentEntityTest extends TestCase
abstract class AbstractCommentEntityTestCase extends TestCase
{
abstract protected function getEntity(): CommentInterface;

View file

@ -12,31 +12,31 @@ namespace App\Tests\Entity;
use App\Entity\EntityWithBudget;
use PHPUnit\Framework\TestCase;
abstract class AbstractEntityTest extends TestCase
abstract class AbstractEntityTestCase extends TestCase
{
public function assertBudget(EntityWithBudget $entityWithBudget): void
{
$this->assertEquals(0.0, $entityWithBudget->getBudget());
$this->assertEquals(0, $entityWithBudget->getTimeBudget());
$this->assertNull($entityWithBudget->getBudgetType());
$this->assertFalse($entityWithBudget->isMonthlyBudget());
self::assertEquals(0.0, $entityWithBudget->getBudget());
self::assertEquals(0, $entityWithBudget->getTimeBudget());
self::assertNull($entityWithBudget->getBudgetType());
self::assertFalse($entityWithBudget->isMonthlyBudget());
self::assertFalse($entityWithBudget->hasBudget());
self::assertFalse($entityWithBudget->hasTimeBudget());
$entityWithBudget->setBudget(12345.67);
$this->assertEquals(12345.67, $entityWithBudget->getBudget());
self::assertEquals(12345.67, $entityWithBudget->getBudget());
self::assertTrue($entityWithBudget->hasBudget());
self::assertFalse($entityWithBudget->hasTimeBudget());
$entityWithBudget->setTimeBudget(937321);
$this->assertEquals(937321, $entityWithBudget->getTimeBudget());
self::assertEquals(937321, $entityWithBudget->getTimeBudget());
self::assertTrue($entityWithBudget->hasTimeBudget());
$entityWithBudget->setBudgetType('month');
$this->assertTrue($entityWithBudget->isMonthlyBudget());
self::assertTrue($entityWithBudget->isMonthlyBudget());
$entityWithBudget->setBudgetType(null);
$this->assertFalse($entityWithBudget->isMonthlyBudget());
self::assertFalse($entityWithBudget->isMonthlyBudget());
try {
$entityWithBudget->setBudgetType('foo');

View file

@ -17,7 +17,7 @@ use Symfony\Component\Validator\Constraints\Length;
use Symfony\Component\Validator\Constraints\NotBlank;
use Symfony\Component\Validator\Constraints\NotNull;
abstract class AbstractMetaEntityTest extends TestCase
abstract class AbstractMetaEntityTestCase extends TestCase
{
abstract protected function getEntity(): EntityWithMetaFields;

View file

@ -15,31 +15,31 @@ use App\Entity\User;
/**
* @covers \App\Entity\AccessToken
*/
class AccessTokenTest extends AbstractEntityTest
class AccessTokenTest extends AbstractEntityTestCase
{
public function testDefaultValues(): void
{
$user = new User();
$sut = new AccessToken($user, 'foo');
$this->assertNull($sut->getId());
$this->assertNull($sut->getName());
$this->assertNull($sut->getExpiresAt());
$this->assertNull($sut->getLastUsage());
$this->assertSame('foo', $sut->getToken());
$this->assertSame($user, $sut->getUser());
$this->assertTrue($sut->isValid());
self::assertNull($sut->getId());
self::assertNull($sut->getName());
self::assertNull($sut->getExpiresAt());
self::assertNull($sut->getLastUsage());
self::assertSame('foo', $sut->getToken());
self::assertSame($user, $sut->getUser());
self::assertTrue($sut->isValid());
$sut->setName('bar');
$this->assertSame('bar', $sut->getName());
self::assertSame('bar', $sut->getName());
$dateTime = new \DateTimeImmutable('-1 year');
$sut->setLastUsage($dateTime);
$this->assertSame($dateTime, $sut->getLastUsage());
self::assertSame($dateTime, $sut->getLastUsage());
$dateTime = new \DateTimeImmutable('-1 month');
$sut->setExpiresAt($dateTime);
$this->assertSame($dateTime, $sut->getExpiresAt());
self::assertSame($dateTime, $sut->getExpiresAt());
}
public function testIsValid(): void
@ -47,6 +47,6 @@ class AccessTokenTest extends AbstractEntityTest
$user = new User();
$sut = new AccessToken($user, 'foo');
$sut->setExpiresAt(new \DateTimeImmutable('-1 day'));
$this->assertFalse($sut->isValid());
self::assertFalse($sut->isValid());
}
}

View file

@ -18,7 +18,7 @@ use App\Entity\Timesheet;
/**
* @covers \App\Entity\ActivityMeta
*/
class ActivityMetaTest extends AbstractMetaEntityTest
class ActivityMetaTest extends AbstractMetaEntityTestCase
{
protected function getEntity(): EntityWithMetaFields
{

View file

@ -21,25 +21,25 @@ use Doctrine\Common\Collections\Collection;
/**
* @covers \App\Entity\Activity
*/
class ActivityTest extends AbstractEntityTest
class ActivityTest extends AbstractEntityTestCase
{
public function testDefaultValues(): void
{
$sut = new Activity();
$this->assertNull($sut->getId());
$this->assertNull($sut->getProject());
$this->assertNull($sut->getName());
$this->assertNull($sut->getComment());
$this->assertNull($sut->getInvoiceText());
$this->assertTrue($sut->isVisible());
$this->assertTrue($sut->isBillable());
$this->assertTrue($sut->isGlobal());
$this->assertNull($sut->getColor());
self::assertNull($sut->getId());
self::assertNull($sut->getProject());
self::assertNull($sut->getName());
self::assertNull($sut->getComment());
self::assertNull($sut->getInvoiceText());
self::assertTrue($sut->isVisible());
self::assertTrue($sut->isBillable());
self::assertTrue($sut->isGlobal());
self::assertNull($sut->getColor());
self::assertFalse($sut->hasColor());
$this->assertInstanceOf(Collection::class, $sut->getMetaFields());
$this->assertEquals(0, $sut->getMetaFields()->count());
$this->assertNull($sut->getMetaField('foo'));
$this->assertInstanceOf(Collection::class, $sut->getTeams());
self::assertInstanceOf(Collection::class, $sut->getMetaFields());
self::assertEquals(0, $sut->getMetaFields()->count());
self::assertNull($sut->getMetaField('foo'));
self::assertInstanceOf(Collection::class, $sut->getTeams());
}
public function testBudgets(): void
@ -50,36 +50,36 @@ class ActivityTest extends AbstractEntityTest
public function testSetterAndGetter(): void
{
$sut = new Activity();
$this->assertInstanceOf(Activity::class, $sut->setName('foo-bar'));
$this->assertEquals('foo-bar', $sut->getName());
$this->assertEquals('foo-bar', (string) $sut);
self::assertInstanceOf(Activity::class, $sut->setName('foo-bar'));
self::assertEquals('foo-bar', $sut->getName());
self::assertEquals('foo-bar', (string) $sut);
$this->assertInstanceOf(Activity::class, $sut->setVisible(false));
$this->assertFalse($sut->isVisible());
self::assertInstanceOf(Activity::class, $sut->setVisible(false));
self::assertFalse($sut->isVisible());
$sut->setVisible(false);
self::assertFalse($sut->isVisible());
$sut->setVisible(true);
self::assertTrue($sut->isVisible());
$this->assertInstanceOf(Activity::class, $sut->setComment('hello world'));
$this->assertEquals('hello world', $sut->getComment());
self::assertInstanceOf(Activity::class, $sut->setComment('hello world'));
self::assertEquals('hello world', $sut->getComment());
$sut->setInvoiceText('very long invoice text comment 12324');
self::assertEquals('very long invoice text comment 12324', $sut->getInvoiceText());
self::assertFalse($sut->hasColor());
$sut->setColor('#fffccc');
$this->assertEquals('#fffccc', $sut->getColor());
self::assertEquals('#fffccc', $sut->getColor());
self::assertTrue($sut->hasColor());
$sut->setColor(Constants::DEFAULT_COLOR);
$this->assertNull($sut->getColor());
self::assertNull($sut->getColor());
self::assertFalse($sut->hasColor());
$this->assertTrue($sut->isGlobal());
$this->assertInstanceOf(Activity::class, $sut->setProject(new Project()));
$this->assertFalse($sut->isGlobal());
self::assertTrue($sut->isGlobal());
self::assertInstanceOf(Activity::class, $sut->setProject(new Project()));
self::assertFalse($sut->isGlobal());
}
public function testMetaFields(): void
@ -87,7 +87,7 @@ class ActivityTest extends AbstractEntityTest
$sut = new Activity();
$meta = new ActivityMeta();
$meta->setName('foo')->setValue('bar2')->setType('test');
$this->assertInstanceOf(Activity::class, $sut->setMetaField($meta));
self::assertInstanceOf(Activity::class, $sut->setMetaField($meta));
self::assertEquals(1, $sut->getMetaFields()->count());
$result = $sut->getMetaField('foo');
self::assertSame($result, $meta);
@ -96,7 +96,7 @@ class ActivityTest extends AbstractEntityTest
$meta2 = new ActivityMeta();
$meta2->setName('foo')->setValue('bar')->setType('test2');
$this->assertInstanceOf(Activity::class, $sut->setMetaField($meta2));
self::assertInstanceOf(Activity::class, $sut->setMetaField($meta2));
self::assertEquals(1, $sut->getMetaFields()->count());
self::assertCount(0, $sut->getVisibleMetaFields());

View file

@ -21,32 +21,32 @@ class BookmarkTest extends TestCase
public function testDefaultValues(): void
{
$sut = new Bookmark();
$this->assertNull($sut->getId());
$this->assertNull($sut->getName());
$this->assertIsArray($sut->getContent());
$this->assertEquals([], $sut->getContent());
$this->assertNull($sut->getType());
$this->assertNull($sut->getUser());
self::assertNull($sut->getId());
self::assertNull($sut->getName());
self::assertIsArray($sut->getContent());
self::assertEquals([], $sut->getContent());
self::assertNull($sut->getType());
self::assertNull($sut->getUser());
}
public function testSetterAndGetter(): void
{
$sut = new Bookmark();
$sut->setName('foo-bar');
$this->assertEquals('foo-bar', $sut->getName());
self::assertEquals('foo-bar', $sut->getName());
$sut->setContent(['test' => 'foo-bar', 'hello' => 'world']);
$this->assertEquals(['test' => 'foo-bar', 'hello' => 'world'], $sut->getContent());
self::assertEquals(['test' => 'foo-bar', 'hello' => 'world'], $sut->getContent());
$sut->setType('sdsdsd');
$this->assertEquals('sdsdsd', $sut->getType());
self::assertEquals('sdsdsd', $sut->getType());
$user = new User();
$sut->setUser($user);
$this->assertEquals($user, $sut->getUser());
self::assertEquals($user, $sut->getUser());
$sut2 = clone $sut;
$this->assertEquals('sdsdsd', $sut2->getType());
$this->assertEquals('foo-bar', $sut2->getName());
self::assertEquals('sdsdsd', $sut2->getType());
self::assertEquals('foo-bar', $sut2->getName());
}
}

View file

@ -20,17 +20,17 @@ class ConfigurationTest extends TestCase
public function testDefaultValues(): void
{
$sut = new Configuration();
$this->assertNull($sut->getId());
$this->assertNull($sut->getName());
$this->assertNull($sut->getValue());
self::assertNull($sut->getId());
self::assertNull($sut->getName());
self::assertNull($sut->getValue());
}
public function testSetterAndGetter(): void
{
$sut = new Configuration();
$this->assertInstanceOf(Configuration::class, $sut->setName('foo-bar'));
$this->assertEquals('foo-bar', $sut->getName());
$this->assertInstanceOf(Configuration::class, $sut->setValue('hello world'));
$this->assertEquals('hello world', $sut->getValue());
self::assertInstanceOf(Configuration::class, $sut->setName('foo-bar'));
self::assertEquals('foo-bar', $sut->getName());
self::assertInstanceOf(Configuration::class, $sut->setValue('hello world'));
self::assertEquals('hello world', $sut->getValue());
}
}

View file

@ -16,7 +16,7 @@ use App\Entity\CustomerComment;
* @covers \App\Entity\CustomerComment
* @covers \App\Entity\CommentTableTypeTrait
*/
class CustomerCommentTest extends AbstractCommentEntityTest
class CustomerCommentTest extends AbstractCommentEntityTestCase
{
protected function getEntity(): CustomerComment
{

View file

@ -18,7 +18,7 @@ use App\Entity\MetaTableTypeInterface;
/**
* @covers \App\Entity\CustomerMeta
*/
class CustomerMetaTest extends AbstractMetaEntityTest
class CustomerMetaTest extends AbstractMetaEntityTestCase
{
protected function getEntity(): EntityWithMetaFields
{

Some files were not shown because too many files have changed in this diff Show more