Release 2.11 (#4580)
This commit is contained in:
@@ -36,15 +36,11 @@ class TimesheetControllerTest extends APIControllerBaseTest
|
||||
*/
|
||||
protected function importFixtureForUser(string $role, int $amount = 10): array
|
||||
{
|
||||
$fixture = new TimesheetFixtures();
|
||||
$fixture
|
||||
->setFixedRate(true)
|
||||
->setHourlyRate(true)
|
||||
->setAmount($amount)
|
||||
->setUser($this->getUserByRole($role))
|
||||
->setAllowEmptyDescriptions(false)
|
||||
->setStartDate((new \DateTime('first day of this month'))->setTime(0, 0, 1))
|
||||
;
|
||||
$fixture = new TimesheetFixtures($this->getUserByRole($role), $amount);
|
||||
$fixture->setFixedRate(true);
|
||||
$fixture->setHourlyRate(true);
|
||||
$fixture->setAllowEmptyDescriptions(false);
|
||||
$fixture->setStartDate((new \DateTime('first day of this month'))->setTime(0, 0, 1));
|
||||
|
||||
return $this->importFixture($fixture);
|
||||
}
|
||||
@@ -91,14 +87,10 @@ class TimesheetControllerTest extends APIControllerBaseTest
|
||||
$client = $this->getClientForAuthenticatedUser(User::ROLE_TEAMLEAD);
|
||||
$this->importFixtureForUser(User::ROLE_USER);
|
||||
|
||||
$fixture = new TimesheetFixtures();
|
||||
$fixture
|
||||
->setFixedRate(true)
|
||||
->setHourlyRate(true)
|
||||
->setAmount(7)
|
||||
->setUser($this->getUserByRole(User::ROLE_ADMIN))
|
||||
->setStartDate(new \DateTime('-10 days'))
|
||||
;
|
||||
$fixture = new TimesheetFixtures($this->getUserByRole(User::ROLE_ADMIN), 7);
|
||||
$fixture->setFixedRate(true);
|
||||
$fixture->setHourlyRate(true);
|
||||
$fixture->setStartDate(new \DateTime('-10 days'));
|
||||
$this->importFixture($fixture);
|
||||
|
||||
$query = ['user' => 2];
|
||||
@@ -131,14 +123,10 @@ class TimesheetControllerTest extends APIControllerBaseTest
|
||||
$client = $this->getClientForAuthenticatedUser(User::ROLE_TEAMLEAD);
|
||||
$this->importFixtureForUser(User::ROLE_USER);
|
||||
|
||||
$fixture = new TimesheetFixtures();
|
||||
$fixture
|
||||
->setFixedRate(true)
|
||||
->setHourlyRate(true)
|
||||
->setAmount(7)
|
||||
->setUser($this->getUserByRole(User::ROLE_ADMIN))
|
||||
->setStartDate(new \DateTime('-10 days'))
|
||||
;
|
||||
$fixture = new TimesheetFixtures($this->getUserByRole(User::ROLE_ADMIN), 7);
|
||||
$fixture->setFixedRate(true);
|
||||
$fixture->setHourlyRate(true);
|
||||
$fixture->setStartDate(new \DateTime('-10 days'));
|
||||
$this->importFixture($fixture);
|
||||
|
||||
$query = ['user' => 'all'];
|
||||
@@ -262,14 +250,10 @@ class TimesheetControllerTest extends APIControllerBaseTest
|
||||
$client = $this->getClientForAuthenticatedUser(User::ROLE_USER);
|
||||
$this->importFixtureForUser(User::ROLE_USER);
|
||||
|
||||
$fixture = new TimesheetFixtures();
|
||||
$fixture
|
||||
->setExported(true)
|
||||
->setAmount(7)
|
||||
->setUser($this->getUserByRole(User::ROLE_USER))
|
||||
->setStartDate(new \DateTime('first day of this month'))
|
||||
->setAllowEmptyDescriptions(false)
|
||||
;
|
||||
$fixture = new TimesheetFixtures($this->getUserByRole(User::ROLE_USER), 7);
|
||||
$fixture->setExported(true);
|
||||
$fixture->setStartDate(new \DateTime('first day of this month'));
|
||||
$fixture->setAllowEmptyDescriptions(false);
|
||||
$this->importFixture($fixture);
|
||||
|
||||
$begin = new \DateTime('first day of this month');
|
||||
@@ -864,15 +848,11 @@ class TimesheetControllerTest extends APIControllerBaseTest
|
||||
|
||||
$start = new \DateTime('-10 days');
|
||||
|
||||
$fixture = new TimesheetFixtures();
|
||||
$fixture
|
||||
->setFixedRate(true)
|
||||
->setHourlyRate(true)
|
||||
->setAmount(0)
|
||||
->setUser($this->getUserByRole(User::ROLE_USER))
|
||||
->setStartDate($start)
|
||||
->setAmountRunning(3)
|
||||
;
|
||||
$fixture = new TimesheetFixtures($this->getUserByRole(User::ROLE_USER));
|
||||
$fixture->setFixedRate(true);
|
||||
$fixture->setHourlyRate(true);
|
||||
$fixture->setStartDate($start);
|
||||
$fixture->setAmountRunning(3);
|
||||
$this->importFixture($fixture);
|
||||
|
||||
$this->request($client, '/api/timesheets/active');
|
||||
@@ -989,7 +969,6 @@ class TimesheetControllerTest extends APIControllerBaseTest
|
||||
->setUser($this->getUserByRole(User::ROLE_USER))
|
||||
->setStartDate(new \DateTime('-10 days'))
|
||||
->setAllowEmptyDescriptions(false)
|
||||
->setUseTags(true)
|
||||
->setTags(['Test', 'Administration']);
|
||||
$this->importFixture($fixture);
|
||||
|
||||
|
||||
@@ -10,6 +10,7 @@
|
||||
namespace App\Tests\Controller;
|
||||
|
||||
use App\Entity\Activity;
|
||||
use App\Entity\Tag;
|
||||
use App\Entity\Timesheet;
|
||||
use App\Entity\TimesheetMeta;
|
||||
use App\Entity\User;
|
||||
@@ -49,11 +50,17 @@ class TimesheetControllerTest extends ControllerBaseTest
|
||||
$client = $this->getClientForAuthenticatedUser(User::ROLE_USER);
|
||||
$start = new \DateTime('first day of this month');
|
||||
|
||||
$fixture = new TagFixtures();
|
||||
$fixture->importAmount(TagRepository::MAX_AMOUNT_SELECT);
|
||||
$fixture->addTagNameToCreate('bar');
|
||||
$this->importFixture($fixture);
|
||||
|
||||
$fixture = new TimesheetFixtures();
|
||||
$fixture->setAmount(5);
|
||||
$fixture->setAmountRunning(2);
|
||||
$fixture->setUser($this->getUserByRole(User::ROLE_USER));
|
||||
$fixture->setStartDate($start);
|
||||
$fixture->setTags(['foo']);
|
||||
$this->importFixture($fixture);
|
||||
|
||||
$this->request($client, '/timesheet/');
|
||||
@@ -69,6 +76,7 @@ class TimesheetControllerTest extends ControllerBaseTest
|
||||
'customers' => [1],
|
||||
'projects' => [1],
|
||||
'activities' => [1],
|
||||
'tags' => 'foo',
|
||||
]);
|
||||
|
||||
$this->assertTrue($client->getResponse()->isSuccessful());
|
||||
@@ -85,20 +93,27 @@ class TimesheetControllerTest extends ControllerBaseTest
|
||||
$client = $this->getClientForAuthenticatedUser(User::ROLE_USER);
|
||||
$start = new \DateTime('first day of this month');
|
||||
|
||||
$fixture = new TagFixtures();
|
||||
$fixture->addTagNameToCreate('bar');
|
||||
$fixture->addTagNameToCreate('foo');
|
||||
/** @var array<Tag> $tags */
|
||||
$tags = $this->importFixture($fixture);
|
||||
$id = $tags[1]->getId();
|
||||
|
||||
$fixture = new TimesheetFixtures();
|
||||
$fixture->setAmount(5);
|
||||
$fixture->setUser($this->getUserByRole(User::ROLE_USER));
|
||||
$fixture->setStartDate($start);
|
||||
$fixture->setCallback(function (Timesheet $timesheet) {
|
||||
$fixture->setCallback(function (Timesheet $timesheet) use ($tags) {
|
||||
$timesheet->setDescription('I am a foobar with tralalalala some more content');
|
||||
$timesheet->setMetaField((new TimesheetMeta())->setName('location')->setValue('homeoffice'));
|
||||
$timesheet->setMetaField((new TimesheetMeta())->setName('feature')->setValue('timetracking'));
|
||||
$timesheet->addTag($tags[1]);
|
||||
});
|
||||
$this->importFixture($fixture);
|
||||
$fixture = new TimesheetFixtures();
|
||||
$fixture->setAmount(5);
|
||||
|
||||
$fixture = new TimesheetFixtures($this->getUserByRole(User::ROLE_USER), 5);
|
||||
$fixture->setAmountRunning(5);
|
||||
$fixture->setUser($this->getUserByRole(User::ROLE_USER));
|
||||
$fixture->setStartDate($start);
|
||||
$this->importFixture($fixture);
|
||||
|
||||
@@ -108,6 +123,7 @@ class TimesheetControllerTest extends ControllerBaseTest
|
||||
$form = $client->getCrawler()->filter('form.searchform')->form();
|
||||
$client->submit($form, [
|
||||
'searchTerm' => 'location:homeoffice foobar',
|
||||
'tags' => [$id],
|
||||
]);
|
||||
|
||||
$this->assertTrue($client->getResponse()->isSuccessful());
|
||||
@@ -516,6 +532,7 @@ class TimesheetControllerTest extends ControllerBaseTest
|
||||
|
||||
$fixture = new TagFixtures();
|
||||
$fixture->importAmount(TagRepository::MAX_AMOUNT_SELECT);
|
||||
$fixture->addTagNameToCreate('two');
|
||||
$this->importFixture($fixture);
|
||||
|
||||
$this->request($client, '/timesheet/create?begin=2018-08-02&end=2018-08-02&tags=one,two,three');
|
||||
@@ -548,7 +565,7 @@ class TimesheetControllerTest extends ControllerBaseTest
|
||||
$expected = new \DateTime('2018-08-02T18:00:00');
|
||||
$this->assertEquals($expected->format(\DateTimeInterface::ATOM), $timesheet->getEnd()->format(\DateTimeInterface::ATOM));
|
||||
|
||||
$this->assertEquals(['one', 'two', 'three'], $timesheet->getTagsAsArray());
|
||||
$this->assertEquals(['two'], $timesheet->getTagsAsArray());
|
||||
}
|
||||
|
||||
public function testCreateActionWithDescription(): void
|
||||
|
||||
@@ -20,23 +20,15 @@ final class TagFixtures implements TestFixture
|
||||
/**
|
||||
* @var string[]
|
||||
*/
|
||||
private $tagArray = [];
|
||||
/**
|
||||
* @var callable
|
||||
*/
|
||||
private $callback;
|
||||
private array $tagArray = [];
|
||||
private ?\Closure $callback = null;
|
||||
|
||||
/**
|
||||
* Will be called prior to persisting the object.
|
||||
*
|
||||
* @param callable $callback
|
||||
* @return TagFixtures
|
||||
*/
|
||||
public function setCallback(callable $callback): TagFixtures
|
||||
public function setCallback(\Closure $callback): void
|
||||
{
|
||||
$this->callback = $callback;
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -47,15 +39,17 @@ final class TagFixtures implements TestFixture
|
||||
return $this->tagArray;
|
||||
}
|
||||
|
||||
public function addTagNameToCreate(string $name): void
|
||||
{
|
||||
$this->tagArray[] = $name;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string[] $tagArray
|
||||
* @return TagFixtures
|
||||
*/
|
||||
public function setTagArray(array $tagArray): TagFixtures
|
||||
public function setTagArray(array $tagArray): void
|
||||
{
|
||||
$this->tagArray = $tagArray;
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
public function importAmount(int $amount): void
|
||||
@@ -68,7 +62,6 @@ final class TagFixtures implements TestFixture
|
||||
}
|
||||
|
||||
/**
|
||||
* @param ObjectManager $manager
|
||||
* @return Tag[]
|
||||
*/
|
||||
public function load(ObjectManager $manager): array
|
||||
|
||||
@@ -24,71 +24,32 @@ use Faker\Factory;
|
||||
*/
|
||||
final class TimesheetFixtures implements TestFixture
|
||||
{
|
||||
/**
|
||||
* @var User
|
||||
*/
|
||||
private $user;
|
||||
/**
|
||||
* @var int
|
||||
*/
|
||||
private $amount = 0;
|
||||
/**
|
||||
* @var int
|
||||
*/
|
||||
private $running = 0;
|
||||
private int $running = 0;
|
||||
/**
|
||||
* @var Activity[]
|
||||
*/
|
||||
private $activities = [];
|
||||
private array $activities = [];
|
||||
/**
|
||||
* @var Project[]
|
||||
*/
|
||||
private $projects = [];
|
||||
/**
|
||||
* @var \DateTime
|
||||
*/
|
||||
private $startDate;
|
||||
/**
|
||||
* @var \DateTime
|
||||
*/
|
||||
private $fixedStartDate;
|
||||
/**
|
||||
* @var bool
|
||||
*/
|
||||
private $fixedRate = false;
|
||||
private array $projects = [];
|
||||
private ?\DateTime $startDate = null;
|
||||
private ?\DateTime $fixedStartDate = null;
|
||||
private bool $fixedRate = false;
|
||||
/**
|
||||
* @var callable
|
||||
*/
|
||||
private $callback;
|
||||
private bool $hourlyRate = false;
|
||||
private bool $allowEmptyDescriptions = true;
|
||||
private bool $exported = false;
|
||||
/**
|
||||
* @var bool
|
||||
* @var array<string|Tag>
|
||||
*/
|
||||
private $hourlyRate = false;
|
||||
/**
|
||||
* @var bool
|
||||
*/
|
||||
private $allowEmptyDescriptions = true;
|
||||
/**
|
||||
* @var bool
|
||||
*/
|
||||
private $exported = false;
|
||||
/**
|
||||
* @var bool
|
||||
*/
|
||||
private $useTags = false;
|
||||
/**
|
||||
* @var array
|
||||
*/
|
||||
private $tags = [];
|
||||
private array $tags = [];
|
||||
|
||||
public function __construct(?User $user = null, ?int $amount = null)
|
||||
public function __construct(private ?User $user = null, private int $amount = 0)
|
||||
{
|
||||
if ($user !== null) {
|
||||
$this->setUser($user);
|
||||
}
|
||||
if ($amount !== null) {
|
||||
$this->setAmount($amount);
|
||||
}
|
||||
}
|
||||
|
||||
public function setAllowEmptyDescriptions(bool $allowEmptyDescriptions): TimesheetFixtures
|
||||
@@ -183,13 +144,6 @@ final class TimesheetFixtures implements TestFixture
|
||||
return $this;
|
||||
}
|
||||
|
||||
public function setUseTags(bool $useTags): TimesheetFixtures
|
||||
{
|
||||
$this->useTags = $useTags;
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string[] $tags
|
||||
* @return TimesheetFixtures
|
||||
@@ -234,14 +188,19 @@ final class TimesheetFixtures implements TestFixture
|
||||
|
||||
$faker = Factory::create();
|
||||
|
||||
$users = [$this->user];
|
||||
if ($this->user === null) {
|
||||
$users = [];
|
||||
|
||||
if ($this->user !== null) {
|
||||
$users[] = $this->user;
|
||||
} else {
|
||||
$users = $this->getAllUsers($manager);
|
||||
}
|
||||
|
||||
$tags = $this->getTagObjectList();
|
||||
foreach ($tags as $tag) {
|
||||
$manager->persist($tag);
|
||||
if ($tag->getId() === null) {
|
||||
$manager->persist($tag);
|
||||
}
|
||||
}
|
||||
$manager->flush();
|
||||
|
||||
@@ -310,21 +269,25 @@ final class TimesheetFixtures implements TestFixture
|
||||
return $created;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return array<Tag>
|
||||
*/
|
||||
private function getTagObjectList(): array
|
||||
{
|
||||
if (true === $this->useTags) {
|
||||
$all = [];
|
||||
foreach ($this->tags as $tagName) {
|
||||
$tagObject = new Tag();
|
||||
$tagObject->setName($tagName);
|
||||
|
||||
$all[] = $tagObject;
|
||||
$all = [];
|
||||
foreach ($this->tags as $tagName) {
|
||||
if ($tagName instanceof Tag) {
|
||||
$all[] = $tagName;
|
||||
continue;
|
||||
}
|
||||
|
||||
return $all;
|
||||
$tagObject = new Tag();
|
||||
$tagObject->setName($tagName);
|
||||
|
||||
$all[] = $tagObject;
|
||||
}
|
||||
|
||||
return [];
|
||||
return $all;
|
||||
}
|
||||
|
||||
private function getDateTime(int $i): \DateTime
|
||||
@@ -433,9 +396,7 @@ final class TimesheetFixtures implements TestFixture
|
||||
$entry->setHourlyRate($hourlyRate);
|
||||
}
|
||||
|
||||
if (null !== $this->exported) {
|
||||
$entry->setExported($this->exported);
|
||||
}
|
||||
$entry->setExported($this->exported);
|
||||
|
||||
if ($setEndDate) {
|
||||
$entry->setEnd($end);
|
||||
|
||||
@@ -3207,11 +3207,6 @@ parameters:
|
||||
count: 1
|
||||
path: DataFixtures/TimesheetFixtures.php
|
||||
|
||||
-
|
||||
message: "#^Method App\\\\Tests\\\\DataFixtures\\\\TimesheetFixtures\\:\\:getTagObjectList\\(\\) return type has no value type specified in iterable type array\\.$#"
|
||||
count: 1
|
||||
path: DataFixtures/TimesheetFixtures.php
|
||||
|
||||
-
|
||||
message: "#^Parameter \\#1 \\$value of function count expects array\\|Countable, array\\|null given\\.$#"
|
||||
count: 1
|
||||
@@ -3222,11 +3217,6 @@ parameters:
|
||||
count: 1
|
||||
path: DataFixtures/TimesheetFixtures.php
|
||||
|
||||
-
|
||||
message: "#^Property App\\\\Tests\\\\DataFixtures\\\\TimesheetFixtures\\:\\:\\$tags type has no value type specified in iterable type array\\.$#"
|
||||
count: 1
|
||||
path: DataFixtures/TimesheetFixtures.php
|
||||
|
||||
-
|
||||
message: "#^Cannot access offset 'foo\\-bundle\\.bar' on array\\|bool\\|float\\|int\\|string\\|null\\.$#"
|
||||
count: 1
|
||||
|
||||
Reference in New Issue
Block a user