Skip to content

Commit

Permalink
chore: Introduce fixtures for members/meetings
Browse files Browse the repository at this point in the history
  • Loading branch information
rinkp authored Dec 13, 2024
1 parent 163015e commit 47b72e5
Show file tree
Hide file tree
Showing 5 changed files with 153 additions and 3 deletions.
1 change: 1 addition & 0 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -63,6 +63,7 @@ migration-down: replenish migration-list

seed: replenish
@docker compose exec -T web ./web application:fixtures:load
@docker compose exec web ./web report:generate:full

exec:
docker compose exec -it web $(cmd)
Expand Down
5 changes: 3 additions & 2 deletions module/Application/src/Command/LoadFixturesCommand.php
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@
class LoadFixturesCommand extends Command
{
private const array DATABASE_FIXTURES = [
// './module/Database/test/Seeder',
'./module/Database/test/Seeder',
'./module/User/test/Seeder',
];

Expand Down Expand Up @@ -72,7 +72,8 @@ protected function execute(
$reportConnection->executeStatement('SET session_replication_role = \'replica\'');
$reportExecutor->execute($reportLoader->getFixtures());
$reportConnection->executeStatement('SET session_replication_role = \'origin\'');
} catch (Throwable) {
} catch (Throwable $e) {
$output->writeln('<comment>' . $e->getMessage() . '</comment>');
}

$output->writeln('<info>Loaded fixtures!</info>');
Expand Down
29 changes: 29 additions & 0 deletions module/Database/test/Seeder/MeetingFixture.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
<?php

declare(strict_types=1);

namespace DatabaseTest\Seeder;

use Application\Model\Enums\MeetingTypes;
use Database\Model\Meeting;
use DateTime;
use Doctrine\Common\DataFixtures\AbstractFixture;
use Doctrine\Persistence\ObjectManager;

class MeetingFixture extends AbstractFixture
{
public const REF_MEETING_BV1 = 'bv-1';

public function load(ObjectManager $manager): void
{
$meeting = new Meeting();
$meeting->setDate(new DateTime('2000-01-01'));
$meeting->setNumber(1);
$meeting->setType(MeetingTypes::BV);

$manager->persist($meeting);
$this->addReference(self::REF_MEETING_BV1, $meeting);

$manager->flush();
}
}
117 changes: 117 additions & 0 deletions module/Database/test/Seeder/MemberFixture.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,117 @@
<?php

declare(strict_types=1);

namespace DatabaseTest\Seeder;

use Application\Model\Enums\MembershipTypes;
use Application\Model\Enums\PostalRegions;
use Database\Model\Address;
use Database\Model\CheckoutSession;
use Database\Model\Enums\CheckoutSessionStates;
use Database\Model\Member;
use Database\Model\ProspectiveMember;
use DateTime;
use Doctrine\Common\DataFixtures\AbstractFixture;
use Doctrine\Persistence\ObjectManager;

class MemberFixture extends AbstractFixture
{
public const REF_MEMBER_STUDENT = 'student';
public const REF_MEMBER_EXTERNAL = 'external';
public const REF_MEMBER_GRADUATE = 'graduate';
public const REF_MEMBER_PROSPECTIVE = 'prospective';

public function load(ObjectManager $manager): void
{
$expiryDate = new DateTime();
$expiryDate->setDate((int) $expiryDate->format('Y') + 1, 7, 1);

/** Prospective member */
$pros = new ProspectiveMember();
$pros->setInitials('T.A.');
$pros->setFirstName('Tara');
$pros->setMiddleName('');
$pros->setLastName('Testdata');
$pros->setTueUsername('20190001');
$pros->setBirth(new DateTime('2001-01-01'));
$pros->setEmail('tara@gewisdb.local');
$pros->setPaid(15);
$pros->setChangedOn(new DateTime());
$prosAddress = new Address();
$prosAddress->setStreet('Teststraat');
$prosAddress->setNumber('123');
$prosAddress->setPostalCode('5600 AA');
$prosAddress->setCity('Eindhoven');
$prosAddress->setPhone('1');
$prosAddress->setCountry(PostalRegions::Netherlands);
$pros->setAddress($prosAddress);
$pros->setStudy('Other');

$manager->persist($pros);
$this->addReference(self::REF_MEMBER_PROSPECTIVE, $pros);

$checkoutSession = new CheckoutSession();
$checkoutSession->setCheckoutId('123');
$checkoutSession->setProspectiveMember($pros);
$checkoutSession->setCreated(new DateTime());
$checkoutSession->setExpiration(new DateTime());
$checkoutSession->setState(CheckoutSessionStates::Paid);
$manager->persist($checkoutSession);

/** Student */
$student = new Member();
$student->setInitials('T.');
$student->setFirstName('Timon');
$student->setMiddleName('de');
$student->setLastName('Teststudent');
$student->setEmail('timon@gewisdb.local');
$student->setBirth(new DateTime('2000-01-01'));
$student->setGeneration(2018);
$student->setType(MembershipTypes::Ordinary);
$student->setExpiration($expiryDate);
$student->setChangedOn(new DateTime());
$student->setTueUsername('20180001');
$student->setIsStudying(true);

$manager->persist($student);
$this->addReference(self::REF_MEMBER_STUDENT, $student);

/** External */
$external = new Member();
$external->setInitials('J.');
$external->setFirstName('Joe');
$external->setMiddleName('');
$external->setLastName('Bloggs');
$external->setEmail('joe@gewisdb.local');
$external->setBirth(new DateTime('1999-01-01'));
$external->setGeneration(2017);
$external->setType(MembershipTypes::External);
$external->setExpiration($expiryDate);
$external->setChangedOn(new DateTime());
$external->setIsStudying(false);

$manager->persist($external);
$this->addReference(self::REF_MEMBER_EXTERNAL, $external);

/** Graduate */
$graduate = new Member();
$graduate->setInitials('J.H.');
$graduate->setFirstName('Jack');
$graduate->setMiddleName('van');
$graduate->setLastName('Lint');
$graduate->setEmail('vanlint@gewisdb.local');
$graduate->setBirth(new DateTime('1932-09-01'));
$graduate->setGeneration(1989);
$graduate->setType(MembershipTypes::Graduate);
$graduate->setExpiration($expiryDate);
$graduate->setMembershipEndsOn(new DateTime());
$graduate->setChangedOn(new DateTime('1990-07-01'));
$graduate->setIsStudying(false);

$manager->persist($graduate);
$this->addReference(self::REF_MEMBER_GRADUATE, $graduate);

$manager->flush();
}
}
4 changes: 3 additions & 1 deletion module/User/test/Seeder/UserFixture.php
Original file line number Diff line number Diff line change
Expand Up @@ -10,14 +10,16 @@

class UserFixture extends AbstractFixture
{
public const REF_ADMIN_USER = 'admin-user';

public function load(ObjectManager $manager): void
{
$user = new User();
$user->setLogin('admin');
$user->setPassword('$2y$13$smUYvCkgowlfHOFrogwcPONGDFmcylKHmTOZQAks9cDvs15tPxR2a'); // == gewisdbgewis

$manager->persist($user);
$this->addReference('user-admin', $user);
$this->addReference(self::REF_ADMIN_USER, $user);

$manager->flush();
}
Expand Down

0 comments on commit 47b72e5

Please sign in to comment.