feat: make body dimensions optional even with rentals selected

This commit is contained in:
Björn Fromme
2026-06-10 11:43:59 +02:00
parent 33f0cb04e0
commit d08d9dbb9f
2 changed files with 7 additions and 44 deletions
@@ -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(
@@ -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 = [];