release 2.0 beta 2 (#3757)
* do not traverse into invoice template subdirectories (#3735) * fix security open api definition * fix currency can be null, removed fluent interface * merged release 1.30.3 * allow to pre-fill timesheet metafields via URL * fix api description * added test accounts with simpler names and password * upgrade to Symfony 6.2 * removed FrameworkExtraBundle (by Sensio) and replaced with new native SF annotations * fixed symfony 6.2 deprecations * fixed #3768
This commit is contained in:
@@ -92,7 +92,7 @@ final class InvoiceFixtures extends Fixture
|
||||
];
|
||||
}
|
||||
|
||||
protected function generatePaymentDetails(Generator $faker): string
|
||||
private function generatePaymentDetails(Generator $faker): string
|
||||
{
|
||||
return
|
||||
'Acme Bank' . PHP_EOL .
|
||||
@@ -101,7 +101,7 @@ final class InvoiceFixtures extends Fixture
|
||||
;
|
||||
}
|
||||
|
||||
protected function generateContact(Generator $faker): string
|
||||
private function generateContact(Generator $faker): string
|
||||
{
|
||||
return
|
||||
'Phone: ' . $faker->phoneNumber() . PHP_EOL .
|
||||
@@ -110,7 +110,7 @@ final class InvoiceFixtures extends Fixture
|
||||
;
|
||||
}
|
||||
|
||||
protected function generateAddress(Generator $faker): string
|
||||
private function generateAddress(Generator $faker): string
|
||||
{
|
||||
return
|
||||
$faker->streetAddress() . PHP_EOL .
|
||||
|
||||
@@ -40,7 +40,7 @@ final class TeamFixtures extends Fixture
|
||||
* @param ObjectManager $manager
|
||||
* @return array<int|string, User>
|
||||
*/
|
||||
protected function getAllUsers(ObjectManager $manager): array
|
||||
private function getAllUsers(ObjectManager $manager): array
|
||||
{
|
||||
$all = [];
|
||||
/** @var User[] $entries */
|
||||
@@ -56,7 +56,7 @@ final class TeamFixtures extends Fixture
|
||||
* @param ObjectManager $manager
|
||||
* @return array<int|string, Project>
|
||||
*/
|
||||
protected function getAllProjects(ObjectManager $manager): array
|
||||
private function getAllProjects(ObjectManager $manager): array
|
||||
{
|
||||
$all = [];
|
||||
|
||||
|
||||
@@ -117,6 +117,7 @@ final class TimesheetFixtures extends Fixture implements FixtureGroupInterface
|
||||
}
|
||||
|
||||
$allTags = $this->getAllTags($manager);
|
||||
/** @var array<Timesheet> $entries */
|
||||
$entries = $this->findRandom($manager, Timesheet::class, min($all, self::ADD_TAGS_MAX_ENTRIES));
|
||||
foreach ($entries as $temp) {
|
||||
$tagAmount = rand(0, self::MAX_TAG_PER_ENTRY);
|
||||
@@ -132,9 +133,17 @@ final class TimesheetFixtures extends Fixture implements FixtureGroupInterface
|
||||
$manager->clear();
|
||||
}
|
||||
|
||||
private function findRandom(ObjectManager $manager, string $class, int $amount)
|
||||
/**
|
||||
* @template T of object
|
||||
* @param ObjectManager $manager
|
||||
* @param class-string<T> $class
|
||||
* @param int $amount
|
||||
* @return array<int, T>
|
||||
*/
|
||||
private function findRandom(ObjectManager $manager, string $class, int $amount): array
|
||||
{
|
||||
$qb = $manager->getRepository($class)->createQueryBuilder('entity');
|
||||
/** @var array<int> $limits */
|
||||
$limits = $qb
|
||||
->select('MIN(entity.id)', 'MAX(entity.id)')
|
||||
->getQuery()
|
||||
@@ -150,18 +159,17 @@ final class TimesheetFixtures extends Fixture implements FixtureGroupInterface
|
||||
|
||||
$qb = $manager->getRepository($class)->createQueryBuilder('entity');
|
||||
|
||||
return $qb
|
||||
->where($qb->expr()->in('entity.id', $ids))
|
||||
->setMaxResults($amount)
|
||||
->getQuery()
|
||||
->getResult();
|
||||
/** @var array<int, T> $result */
|
||||
$result = $qb->where($qb->expr()->in('entity.id', $ids))->setMaxResults($amount)->getQuery()->getResult();
|
||||
|
||||
return $result;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param ObjectManager $manager
|
||||
* @return array<int|string, Tag>
|
||||
*/
|
||||
protected function getAllTags(ObjectManager $manager): array
|
||||
private function getAllTags(ObjectManager $manager): array
|
||||
{
|
||||
return $this->findRandom($manager, Tag::class, 50);
|
||||
}
|
||||
@@ -170,7 +178,7 @@ final class TimesheetFixtures extends Fixture implements FixtureGroupInterface
|
||||
* @param ObjectManager $manager
|
||||
* @return array<int|string, User>
|
||||
*/
|
||||
protected function getAllUsers(ObjectManager $manager): array
|
||||
private function getAllUsers(ObjectManager $manager): array
|
||||
{
|
||||
$all = [];
|
||||
/** @var User[] $entries */
|
||||
@@ -186,7 +194,7 @@ final class TimesheetFixtures extends Fixture implements FixtureGroupInterface
|
||||
* @param ObjectManager $manager
|
||||
* @return array<int|string, Project>
|
||||
*/
|
||||
protected function getAllProjects(ObjectManager $manager): array
|
||||
private function getAllProjects(ObjectManager $manager): array
|
||||
{
|
||||
return $this->findRandom($manager, Project::class, 50);
|
||||
}
|
||||
@@ -195,12 +203,12 @@ final class TimesheetFixtures extends Fixture implements FixtureGroupInterface
|
||||
* @param ObjectManager $manager
|
||||
* @return array<int|string, Activity>
|
||||
*/
|
||||
protected function getAllActivities(ObjectManager $manager): array
|
||||
private function getAllActivities(ObjectManager $manager): array
|
||||
{
|
||||
return $this->findRandom($manager, Activity::class, 50);
|
||||
}
|
||||
|
||||
private function createTimesheetEntry(User $user, Activity $activity, Project $project, ?string $description, bool $setEndDate)
|
||||
private function createTimesheetEntry(User $user, Activity $activity, Project $project, ?string $description, bool $setEndDate): Timesheet
|
||||
{
|
||||
$start = $this->getRandomFirstDay();
|
||||
$start = $start->modify('- ' . (rand(1, 86400)) . ' seconds');
|
||||
|
||||
@@ -59,10 +59,8 @@ final class UserFixtures extends Fixture implements FixtureGroupInterface
|
||||
|
||||
/**
|
||||
* Default users for all test cases
|
||||
*
|
||||
* @param ObjectManager $manager
|
||||
*/
|
||||
private function loadDefaultAccounts(ObjectManager $manager)
|
||||
private function loadDefaultAccounts(ObjectManager $manager): void
|
||||
{
|
||||
$allUsers = $this->getUserDefinition();
|
||||
foreach ($allUsers as $userData) {
|
||||
@@ -74,8 +72,8 @@ final class UserFixtures extends Fixture implements FixtureGroupInterface
|
||||
$user->setRoles([$userData[4]]);
|
||||
$user->setAvatar($userData[5]);
|
||||
$user->setEnabled($userData[6]);
|
||||
$user->setPassword($this->passwordHasher->hashPassword($user, self::DEFAULT_PASSWORD));
|
||||
$user->setApiToken($this->passwordHasher->hashPassword($user, self::DEFAULT_API_TOKEN));
|
||||
$user->setPassword($this->passwordHasher->hashPassword($user, $userData[8]));
|
||||
$user->setApiToken($this->passwordHasher->hashPassword($user, $userData[9]));
|
||||
$manager->persist($user);
|
||||
|
||||
$prefs = $this->getUserPreferences($user, $userData[7]);
|
||||
@@ -117,11 +115,9 @@ final class UserFixtures extends Fixture implements FixtureGroupInterface
|
||||
}
|
||||
|
||||
/**
|
||||
* Generate randomized test users, which don't have API access.
|
||||
*
|
||||
* @param ObjectManager $manager
|
||||
* Generate randomized test users, without API access.
|
||||
*/
|
||||
private function loadTestUsers(ObjectManager $manager)
|
||||
private function loadTestUsers(ObjectManager $manager): void
|
||||
{
|
||||
$faker = Factory::create();
|
||||
$existingName = [];
|
||||
@@ -161,10 +157,7 @@ final class UserFixtures extends Fixture implements FixtureGroupInterface
|
||||
$manager->clear();
|
||||
}
|
||||
|
||||
/**
|
||||
* @return array
|
||||
*/
|
||||
protected function getUserDefinition(): array
|
||||
private function getUserDefinition(): array
|
||||
{
|
||||
// alias = $userData[0]
|
||||
// title = $userData[1]
|
||||
@@ -174,6 +167,8 @@ final class UserFixtures extends Fixture implements FixtureGroupInterface
|
||||
// avatar = $userData[5]
|
||||
// enabled = $userData[6]
|
||||
// timezone = $userData[7]
|
||||
// password = $userData[8]
|
||||
// api = $userData[9]
|
||||
|
||||
return [
|
||||
[
|
||||
@@ -185,6 +180,20 @@ final class UserFixtures extends Fixture implements FixtureGroupInterface
|
||||
self::DEFAULT_AVATAR,
|
||||
true,
|
||||
'America/Vancouver',
|
||||
self::DEFAULT_PASSWORD,
|
||||
self::DEFAULT_API_TOKEN,
|
||||
],
|
||||
[
|
||||
'John Doe',
|
||||
'Developer',
|
||||
'user',
|
||||
'user@example.com',
|
||||
User::ROLE_USER,
|
||||
self::DEFAULT_AVATAR,
|
||||
true,
|
||||
'America/Vancouver',
|
||||
'password',
|
||||
'password',
|
||||
],
|
||||
// inactive user to test login
|
||||
[
|
||||
@@ -196,6 +205,8 @@ final class UserFixtures extends Fixture implements FixtureGroupInterface
|
||||
self::DEFAULT_AVATAR,
|
||||
false,
|
||||
'Australia/Sydney',
|
||||
self::DEFAULT_PASSWORD,
|
||||
self::DEFAULT_API_TOKEN,
|
||||
],
|
||||
[
|
||||
'Tony Maier',
|
||||
@@ -206,6 +217,20 @@ final class UserFixtures extends Fixture implements FixtureGroupInterface
|
||||
'https://en.gravatar.com/userimage/3533186/bf2163b1dd23f3107a028af0195624e9.jpeg',
|
||||
true,
|
||||
'Asia/Bangkok',
|
||||
self::DEFAULT_PASSWORD,
|
||||
self::DEFAULT_API_TOKEN,
|
||||
],
|
||||
[
|
||||
'Tony Maier',
|
||||
'Head of Sales',
|
||||
'teamlead',
|
||||
'teamlead@example.com',
|
||||
User::ROLE_TEAMLEAD,
|
||||
'https://en.gravatar.com/userimage/3533186/bf2163b1dd23f3107a028af0195624e9.jpeg',
|
||||
true,
|
||||
'Asia/Bangkok',
|
||||
'password',
|
||||
'password',
|
||||
],
|
||||
// no avatar to test default image macro
|
||||
[
|
||||
@@ -217,6 +242,20 @@ final class UserFixtures extends Fixture implements FixtureGroupInterface
|
||||
null,
|
||||
true,
|
||||
'Europe/London',
|
||||
self::DEFAULT_PASSWORD,
|
||||
self::DEFAULT_API_TOKEN,
|
||||
],
|
||||
[
|
||||
'Anna Smith',
|
||||
'Administrator',
|
||||
'administrator',
|
||||
'administrator@example.com',
|
||||
User::ROLE_ADMIN,
|
||||
null,
|
||||
true,
|
||||
'Europe/London',
|
||||
'password',
|
||||
'password',
|
||||
],
|
||||
// no alias to test twig username macro
|
||||
[
|
||||
@@ -228,7 +267,21 @@ final class UserFixtures extends Fixture implements FixtureGroupInterface
|
||||
'/touch-icon-192x192.png',
|
||||
true,
|
||||
'Europe/Berlin',
|
||||
]
|
||||
self::DEFAULT_PASSWORD,
|
||||
self::DEFAULT_API_TOKEN,
|
||||
],
|
||||
[
|
||||
null,
|
||||
'Super Administrator',
|
||||
'super_admin',
|
||||
'super_admin@example.com',
|
||||
User::ROLE_SUPER_ADMIN,
|
||||
'/touch-icon-192x192.png',
|
||||
true,
|
||||
'Europe/Berlin',
|
||||
'password',
|
||||
'password',
|
||||
],
|
||||
];
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user