From d08d9dbb9f4c631fce71cc44850ffabf772b0892 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B6rn=20Fromme?= Date: Wed, 10 Jun 2026 11:43:59 +0200 Subject: [PATCH] feat: make body dimensions optional even with rentals selected --- .../Constraints/ParticipantValidator.php | 31 ------------------- .../Constraints/ParticipantValidatorTest.php | 20 +++++------- 2 files changed, 7 insertions(+), 44 deletions(-) diff --git a/src/Validator/Constraints/ParticipantValidator.php b/src/Validator/Constraints/ParticipantValidator.php index 21acf83..2b7084b 100644 --- a/src/Validator/Constraints/ParticipantValidator.php +++ b/src/Validator/Constraints/ParticipantValidator.php @@ -39,7 +39,6 @@ class ParticipantValidator extends ConstraintValidator $this->assertPickupSelected($participant); $this->assertDropOffSelected($participant); if (true === $this->hasRentalsSelected($participant)) { - $this->assertBodyDimensionsWhenRentalsSelected($participant); $this->assertBodyDimensionsInRange($participant); } } @@ -82,36 +81,6 @@ class ParticipantValidator extends ConstraintValidator } } - public function assertBodyDimensionsWhenRentalsSelected(ParticipantDto $participant): void - { - // Check if any rental services are selected - if (true === empty($participant->rentals)) { - return; - } - - // Require body dimensions when rentals are selected - if (null === $participant->height || '' === $participant->height) { - $this->context->buildViolation('Bitte auswählen') - ->atPath('height') - ->addViolation() - ; - } - - if (null === $participant->weight || '' === $participant->weight) { - $this->context->buildViolation('Bitte auswählen') - ->atPath('weight') - ->addViolation() - ; - } - - if (null === $participant->shoeSize || '' === $participant->shoeSize) { - $this->context->buildViolation('Bitte auswählen') - ->atPath('shoeSize') - ->addViolation() - ; - } - } - private function assertBodyDimensionsInRange(ParticipantDto $participant): void { $this->assertInRange( diff --git a/tests/Validator/Constraints/ParticipantValidatorTest.php b/tests/Validator/Constraints/ParticipantValidatorTest.php index fd8c73e..963e1e0 100644 --- a/tests/Validator/Constraints/ParticipantValidatorTest.php +++ b/tests/Validator/Constraints/ParticipantValidatorTest.php @@ -31,7 +31,7 @@ class ParticipantValidatorTest extends ConstraintValidatorTestCase $this->assertNoViolation(); } - public function testParticipantWithRentalsButNoHeightFailsValidation(): void + public function testParticipantWithRentalsAndMissingHeightPassesValidation(): void { $participant = $this->createValidParticipant(); $participant->rentals = [$this->createMockService()]; @@ -41,12 +41,10 @@ class ParticipantValidatorTest extends ConstraintValidatorTestCase $this->validator->validate($participant, new Participant()); - $this->buildViolation('Bitte auswählen') - ->atPath('property.path.height') - ->assertRaised(); + $this->assertNoViolation(); } - public function testParticipantWithRentalsButNoWeightFailsValidation(): void + public function testParticipantWithRentalsAndMissingWeightPassesValidation(): void { $participant = $this->createValidParticipant(); $participant->rentals = [$this->createMockService()]; @@ -56,12 +54,10 @@ class ParticipantValidatorTest extends ConstraintValidatorTestCase $this->validator->validate($participant, new Participant()); - $this->buildViolation('Bitte auswählen') - ->atPath('property.path.weight') - ->assertRaised(); + $this->assertNoViolation(); } - public function testParticipantWithRentalsButNoShoeSizeFailsValidation(): void + public function testParticipantWithRentalsAndMissingShoeSizePassesValidation(): void { $participant = $this->createValidParticipant(); $participant->rentals = [$this->createMockService()]; @@ -71,9 +67,7 @@ class ParticipantValidatorTest extends ConstraintValidatorTestCase $this->validator->validate($participant, new Participant()); - $this->buildViolation('Bitte auswählen') - ->atPath('property.path.shoeSize') - ->assertRaised(); + $this->assertNoViolation(); } public function testParticipantWithoutRentalsAndNoBodyMeasurementsPassesValidation(): void @@ -89,7 +83,7 @@ class ParticipantValidatorTest extends ConstraintValidatorTestCase $this->assertNoViolation(); } - public function testParticipantWithoutRentalsIgnoresOutOfRangeBodyMeasurements(): void + public function testParticipantWithoutRentalsAndOutOfRangeBodyMeasurementsPassValidation(): void { $participant = $this->createValidParticipant(); $participant->rentals = [];