improved test fixtures
This commit is contained in:
@@ -32,8 +32,6 @@ class LoadFixtures extends AppBundleLoadFixtures
|
|||||||
{
|
{
|
||||||
const AMOUNT_ACTIVITIES = 10; // maximum activites per project
|
const AMOUNT_ACTIVITIES = 10; // maximum activites per project
|
||||||
const AMOUNT_TIMESHEET = 1000; // timesheet entries total
|
const AMOUNT_TIMESHEET = 1000; // timesheet entries total
|
||||||
const AMOUNT_PROJECTS = 20; // projects entries total
|
|
||||||
const AMOUNT_CUSTOMER = 10; // customer entries total
|
|
||||||
const RATE_MIN = 10; // minimum rate for one hour
|
const RATE_MIN = 10; // minimum rate for one hour
|
||||||
const RATE_MAX = 80; // maximum rate for one hour
|
const RATE_MAX = 80; // maximum rate for one hour
|
||||||
|
|
||||||
@@ -115,10 +113,35 @@ class LoadFixtures extends AppBundleLoadFixtures
|
|||||||
$allActivity = $this->getAllActivities($manager);
|
$allActivity = $this->getAllActivities($manager);
|
||||||
|
|
||||||
for ($i = 0; $i <= self::AMOUNT_TIMESHEET; $i++) {
|
for ($i = 0; $i <= self::AMOUNT_TIMESHEET; $i++) {
|
||||||
|
$entry = $this->createTimesheetEntry(
|
||||||
|
$allUser[rand(1, $amountUser)],
|
||||||
|
$allActivity[array_rand($allActivity)],
|
||||||
|
round($i / 2),
|
||||||
|
true
|
||||||
|
);
|
||||||
|
|
||||||
$startDay = round($i / 2);
|
$manager->persist($entry);
|
||||||
|
}
|
||||||
|
|
||||||
|
// leave one running time entry for each user
|
||||||
|
for ($i = 1; $i <= $amountUser; $i++) {
|
||||||
|
$entry = $this->createTimesheetEntry(
|
||||||
|
$allUser[$i],
|
||||||
|
$allActivity[array_rand($allActivity)]
|
||||||
|
);
|
||||||
|
|
||||||
|
$manager->persist($entry);
|
||||||
|
}
|
||||||
|
|
||||||
|
$manager->flush();
|
||||||
|
}
|
||||||
|
|
||||||
|
private function createTimesheetEntry(User $user, Activity $activity, $startDay = 0, $setEndDate = false)
|
||||||
|
{
|
||||||
$start = new \DateTime();
|
$start = new \DateTime();
|
||||||
|
if ($startDay > 0) {
|
||||||
$start = $start->modify('- ' . (rand(1, $startDay)) . ' days');
|
$start = $start->modify('- ' . (rand(1, $startDay)) . ' days');
|
||||||
|
}
|
||||||
$start = $start->modify('- ' . (rand(1, 86400)) . ' seconds');
|
$start = $start->modify('- ' . (rand(1, 86400)) . ' seconds');
|
||||||
|
|
||||||
$end = clone $start;
|
$end = clone $start;
|
||||||
@@ -129,21 +152,18 @@ class LoadFixtures extends AppBundleLoadFixtures
|
|||||||
$rate = rand(self::RATE_MIN, self::RATE_MAX);
|
$rate = rand(self::RATE_MIN, self::RATE_MAX);
|
||||||
|
|
||||||
$entry = new Timesheet();
|
$entry = new Timesheet();
|
||||||
$entry->setActivity($allActivity[array_rand($allActivity)]);
|
$entry->setActivity($activity);
|
||||||
$entry->setDescription($this->getRandomPhrase());
|
$entry->setDescription($this->getRandomPhrase());
|
||||||
$entry->setUser($allUser[rand(1, $amountUser)]);
|
$entry->setUser($user);
|
||||||
$entry->setRate(round(($duration / 3600) * $rate));
|
$entry->setRate(round(($duration / 3600) * $rate));
|
||||||
$entry->setBegin($start);
|
$entry->setBegin($start);
|
||||||
|
|
||||||
// leave one running time entry
|
if ($setEndDate) {
|
||||||
if ($i < self::AMOUNT_TIMESHEET) {
|
|
||||||
$entry->setEnd($end);
|
$entry->setEnd($end);
|
||||||
$entry->setDuration($duration);
|
$entry->setDuration($duration);
|
||||||
}
|
}
|
||||||
|
|
||||||
$manager->persist($entry);
|
return $entry;
|
||||||
}
|
|
||||||
$manager->flush();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private function loadCustomers(ObjectManager $manager)
|
private function loadCustomers(ObjectManager $manager)
|
||||||
@@ -151,10 +171,12 @@ class LoadFixtures extends AppBundleLoadFixtures
|
|||||||
$allTimezones = \DateTimeZone::listIdentifiers();
|
$allTimezones = \DateTimeZone::listIdentifiers();
|
||||||
$amountTimezone = count($allTimezones);
|
$amountTimezone = count($allTimezones);
|
||||||
|
|
||||||
for ($i = 0; $i <= self::AMOUNT_CUSTOMER; $i++) {
|
$allCustomer = $this->getCustomers();
|
||||||
|
$amountCustomer = count($allCustomer);
|
||||||
|
|
||||||
|
for ($i = 0; $i < $amountCustomer; $i++) {
|
||||||
$entry = new Customer();
|
$entry = new Customer();
|
||||||
$entry->setName($this->getRandomCustomer());
|
$entry->setName($allCustomer[$i]);
|
||||||
$entry->setCity($this->getRandomLocation());
|
$entry->setCity($this->getRandomLocation());
|
||||||
$entry->setComment($this->getRandomPhrase());
|
$entry->setComment($this->getRandomPhrase());
|
||||||
$entry->setVisible($i % 3 != 0);
|
$entry->setVisible($i % 3 != 0);
|
||||||
@@ -170,14 +192,14 @@ class LoadFixtures extends AppBundleLoadFixtures
|
|||||||
$allCustomer = $this->getAllCustomers($manager);
|
$allCustomer = $this->getAllCustomers($manager);
|
||||||
$amountCustomer = count($allCustomer);
|
$amountCustomer = count($allCustomer);
|
||||||
|
|
||||||
for ($i = 0; $i <= self::AMOUNT_PROJECTS; $i++) {
|
for ($i = 0; $i < $amountCustomer * 2; $i++) {
|
||||||
|
|
||||||
$entry = new Project();
|
$entry = new Project();
|
||||||
$entry->setName($this->getRandomProject());
|
$entry->setName($this->getRandomProject());
|
||||||
$entry->setCurrency($this->getRandomCurrency());
|
$entry->setCurrency($this->getRandomCurrency());
|
||||||
$entry->setBudget(rand(1000, 100000));
|
$entry->setBudget(rand(1000, 100000));
|
||||||
$entry->setComment($this->getRandomPhrase());
|
$entry->setComment($this->getRandomPhrase());
|
||||||
$entry->setCustomer($allCustomer[rand(1, $amountCustomer)]);
|
$entry->setCustomer($allCustomer[($i % $amountCustomer) + 1]);
|
||||||
$entry->setVisible($i % 3 != 0);
|
$entry->setVisible($i % 3 != 0);
|
||||||
|
|
||||||
$manager->persist($entry);
|
$manager->persist($entry);
|
||||||
@@ -223,6 +245,11 @@ class LoadFixtures extends AppBundleLoadFixtures
|
|||||||
'Support',
|
'Support',
|
||||||
'Refactoring',
|
'Refactoring',
|
||||||
'Interview',
|
'Interview',
|
||||||
|
'Administration',
|
||||||
|
'DevOps',
|
||||||
|
'Management',
|
||||||
|
'Setup',
|
||||||
|
'Planning',
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -248,6 +275,9 @@ class LoadFixtures extends AppBundleLoadFixtures
|
|||||||
'API Development',
|
'API Development',
|
||||||
'Hosting & Server',
|
'Hosting & Server',
|
||||||
'Customer Relations',
|
'Customer Relations',
|
||||||
|
'Infrastructure',
|
||||||
|
'Software Upgrade',
|
||||||
|
'Office Managemenr',
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user