feat: include accommodation bookings in db anonymization

This commit is contained in:
2026-09-08 15:41:28 +02:00
parent 8443dae5ad
commit cfe901b9c2
4 changed files with 142 additions and 12 deletions
+2 -1
View File
@@ -35,6 +35,7 @@ class DbAnonymizeCommandTest extends TestCase
'newsletterConsents' => 2,
'newsletterOptInRequests' => 3,
'bookingEditDrafts' => 4,
'accommodationBookings' => 5,
]);
$tester = new CommandTester($this->createCommand($anonymizer, 'dev'));
@@ -42,7 +43,7 @@ class DbAnonymizeCommandTest extends TestCase
self::assertSame(Command::SUCCESS, $tester->getStatusCode());
self::assertStringContainsString(
'Anonymized 1 users, 2 newsletter consents, 3 newsletter opt-in requests, and 4 booking drafts.',
'Anonymized 1 users, 2 newsletter consents, 3 newsletter opt-in requests, 4 booking drafts, and 5 accommodation bookings.',
$this->normalizeConsoleOutput($tester->getDisplay()),
);
}
+67
View File
@@ -5,9 +5,12 @@ declare(strict_types=1);
namespace App\Tests\Service;
use App\Entity\BookingEditDraft;
use App\Entity\Groups\AccommodationBooking;
use App\Entity\NewsletterConsent;
use App\Entity\NewsletterOptInRequest;
use App\Entity\User;
use App\Enum\Groups\AccommodationBookingOrigin;
use App\Enum\Groups\AccommodationBookingStatus;
use App\Service\DatabaseAnonymizer;
use Doctrine\ORM\EntityManagerInterface;
use PHPUnit\Framework\TestCase;
@@ -127,6 +130,25 @@ class DatabaseAnonymizerTest extends TestCase
$draft->setDateId(55);
$draft->setHotelId(77);
$booking = new AccommodationBooking();
$booking->setGroupName('Gymnasium Musterstadt, Klasse 10b');
$booking->setSalutation('Frau');
$booking->setFirstName('Mia');
$booking->setLastName('Muster');
$booking->setEmail('[email protected]');
$booking->setPhone('+49123456789');
$booking->setStreet('Main Street 1');
$booking->setZip('12345');
$booking->setCity('Berlin');
$booking->setRemarks('Ruft immer donnerstags an.');
$booking->setDateFrom(new \DateTimeImmutable('2027-01-10'));
$booking->setDateTo(new \DateTimeImmutable('2027-01-17'));
$booking->setPaxCount(42);
$booking->setPriceSnapshot(['accommodation' => 1000], 1000, 'EUR', 2);
$booking->setStatus(AccommodationBookingStatus::Confirmed);
$booking->setOrigin(AccommodationBookingOrigin::Direct);
$originalBookingUuid = $booking->getUuid();
$originalConsentCreatedAt = $consent->getCreatedAt();
$originalConsentUpdatedAt = $consent->getUpdatedAt();
$originalRequestCreatedAt = $request->getCreatedAt();
@@ -137,6 +159,7 @@ class DatabaseAnonymizerTest extends TestCase
$service->anonymizeNewsletterConsent($consent);
$service->anonymizeNewsletterOptInRequest($request);
$service->anonymizeBookingEditDraft($draft);
$service->anonymizeAccommodationBooking($booking);
self::assertStringEndsWith('@example.test', $user->getEmail());
self::assertSame('plain-text-password', $user->getPassword());
@@ -186,5 +209,49 @@ class DatabaseAnonymizerTest extends TestCase
self::assertSame(77, $draft->getHotelId());
self::assertSame($originalDraftCreatedAt, $draft->getCreatedAt());
self::assertSame($originalDraftUpdatedAt, $draft->getUpdatedAt());
self::assertStringEndsWith('@example.test', (string) $booking->getEmail());
self::assertSame($user->getEmail(), $booking->getEmail());
self::assertSame($consent->getFirstName(), $booking->getFirstName());
self::assertSame($consent->getLastName(), $booking->getLastName());
self::assertNotSame('Gymnasium Musterstadt, Klasse 10b', $booking->getGroupName());
self::assertNotSame('Ruft immer donnerstags an.', $booking->getRemarks());
self::assertNotSame('+49123456789', $booking->getPhone());
self::assertNotSame('Main Street 1', $booking->getStreet());
self::assertNotSame('12345', $booking->getZip());
self::assertNotSame('Berlin', $booking->getCity());
self::assertSame($originalBookingUuid, $booking->getUuid());
self::assertSame('Frau', $booking->getSalutation());
self::assertSame('2027-01-10', $booking->getDateFrom()?->format('Y-m-d'));
self::assertSame('2027-01-17', $booking->getDateTo()?->format('Y-m-d'));
self::assertSame(42, $booking->getPaxCount());
self::assertSame(1000, $booking->getTotalPrice());
self::assertSame(['accommodation' => 1000], $booking->getPriceBreakdown());
self::assertSame('EUR', $booking->getPricingCurrency());
self::assertSame(AccommodationBookingStatus::Confirmed, $booking->getStatus());
self::assertSame(AccommodationBookingOrigin::Direct, $booking->getOrigin());
}
public function testAnonymizeAccommodationBookingLeavesUnsetContactFieldsNull(): void
{
$service = new DatabaseAnonymizer(
$this->createStub(EntityManagerInterface::class),
new NullLogger(),
);
$booking = new AccommodationBooking();
$booking->setEmail('[email protected]');
$service->anonymizeAccommodationBooking($booking);
self::assertStringEndsWith('@example.test', (string) $booking->getEmail());
self::assertNull($booking->getGroupName());
self::assertNull($booking->getFirstName());
self::assertNull($booking->getLastName());
self::assertNull($booking->getPhone());
self::assertNull($booking->getStreet());
self::assertNull($booking->getZip());
self::assertNull($booking->getCity());
self::assertNull($booking->getRemarks());
}
}