Upgrade tests to PhpUnit 10 (#5252)

This commit is contained in:
Kevin Papst
2024-12-22 01:25:30 +01:00
committed by GitHub
parent 9bd37fb695
commit c7f0508707
377 changed files with 3308 additions and 3409 deletions

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
{