feat: refactoring and cleanup
This commit is contained in:
@@ -5,6 +5,10 @@ declare(strict_types=1);
|
||||
namespace App\Tests\BusProNet\DataProcessor;
|
||||
|
||||
use App\BusProNet\DataProcessor\BookingDataProcessor;
|
||||
use App\BusProNet\DataProcessor\BookingPayloadBuilder;
|
||||
use App\BusProNet\DataProcessor\ParticipantServiceProcessor;
|
||||
use App\BusProNet\DataProcessor\PersonalDataSynchronizer;
|
||||
use App\BusProNet\DataProcessor\ServiceMappingCollector;
|
||||
use App\BusProNet\Model\Address;
|
||||
use App\BusProNet\Model\BankAccount;
|
||||
use App\BusProNet\Model\Booking;
|
||||
@@ -44,7 +48,20 @@ class BookingDataProcessorTest extends TestCase
|
||||
$priceCalculatorService->method('calculateIndividualParticipantPriceExcludingInsurance')
|
||||
->willReturn(500.0);
|
||||
|
||||
$this->processor = new BookingDataProcessor($insuranceService, $priceCalculatorService);
|
||||
// Create the new dependencies
|
||||
$mappingCollector = new ServiceMappingCollector();
|
||||
$serviceProcessor = new ParticipantServiceProcessor();
|
||||
$payloadBuilder = new BookingPayloadBuilder($mappingCollector);
|
||||
$personalDataSynchronizer = new PersonalDataSynchronizer();
|
||||
|
||||
$this->processor = new BookingDataProcessor(
|
||||
$insuranceService,
|
||||
$priceCalculatorService,
|
||||
$mappingCollector,
|
||||
$serviceProcessor,
|
||||
$payloadBuilder,
|
||||
$personalDataSynchronizer,
|
||||
);
|
||||
}
|
||||
|
||||
public function testCreateUpdateRequestPayloadWithCompleteData(): void
|
||||
|
||||
@@ -11,24 +11,41 @@ use App\Form\Model\BookingDto;
|
||||
use App\Form\Model\ParticipantDto;
|
||||
use App\Form\Model\RoomSelectionDto;
|
||||
use App\Service\BookingPriceCalculatorService;
|
||||
use App\Service\InsuranceService;
|
||||
use App\Service\ParticipantEligibilityService;
|
||||
use App\Service\ParticipantPricingCalculator;
|
||||
use App\Service\RoomPricingCalculator;
|
||||
use App\Service\ServicePricingCalculator;
|
||||
use PHPUnit\Framework\TestCase;
|
||||
|
||||
class BookingPriceCalculatorServiceTest extends TestCase
|
||||
{
|
||||
private BookingPriceCalculatorService $service;
|
||||
private ParticipantEligibilityService $participantEligibilityService;
|
||||
|
||||
protected function setUp(): void
|
||||
{
|
||||
$participantEligibilityService = $this->createMock(ParticipantEligibilityService::class);
|
||||
$participantEligibilityService->method('isParticipantEligible')->willReturn(true);
|
||||
$this->participantEligibilityService = $this->createMock(ParticipantEligibilityService::class);
|
||||
$this->participantEligibilityService->method('isParticipantEligible')->willReturn(true);
|
||||
|
||||
// Create a real InsuranceService (it will use a mocked price calculator internally when needed)
|
||||
$insuranceService = new \App\Service\InsuranceService($this->service ?? $this->createMock(BookingPriceCalculatorService::class));
|
||||
// Build the calculator chain
|
||||
$roomPricingCalculator = new RoomPricingCalculator();
|
||||
$participantPricingCalculator = new ParticipantPricingCalculator($roomPricingCalculator);
|
||||
|
||||
// Create InsuranceService with a mock price calculator (to avoid circular reference in tests)
|
||||
$mockPriceCalculator = $this->createMock(BookingPriceCalculatorService::class);
|
||||
$insuranceService = new InsuranceService($mockPriceCalculator);
|
||||
|
||||
$servicePricingCalculator = new ServicePricingCalculator(
|
||||
$this->participantEligibilityService,
|
||||
$insuranceService,
|
||||
$participantPricingCalculator
|
||||
);
|
||||
|
||||
$this->service = new BookingPriceCalculatorService(
|
||||
$participantEligibilityService,
|
||||
$insuranceService
|
||||
$roomPricingCalculator,
|
||||
$servicePricingCalculator,
|
||||
$participantPricingCalculator
|
||||
);
|
||||
}
|
||||
|
||||
@@ -493,13 +510,23 @@ class BookingPriceCalculatorServiceTest extends TestCase
|
||||
$participantEligibilityService->method('isParticipantEligible')
|
||||
->willReturnCallback(fn ($booking, $index) => 0 === $index); // Only first participant eligible
|
||||
|
||||
// Create a real InsuranceService with mocked price calculator
|
||||
// Build the calculator chain with the custom eligibility service
|
||||
$roomPricingCalculator = new RoomPricingCalculator();
|
||||
$participantPricingCalculator = new ParticipantPricingCalculator($roomPricingCalculator);
|
||||
|
||||
$mockPriceCalculator = $this->createMock(BookingPriceCalculatorService::class);
|
||||
$insuranceService = new \App\Service\InsuranceService($mockPriceCalculator);
|
||||
$insuranceService = new InsuranceService($mockPriceCalculator);
|
||||
|
||||
$servicePricingCalculator = new ServicePricingCalculator(
|
||||
$participantEligibilityService,
|
||||
$insuranceService,
|
||||
$participantPricingCalculator
|
||||
);
|
||||
|
||||
$this->service = new BookingPriceCalculatorService(
|
||||
$participantEligibilityService,
|
||||
$insuranceService
|
||||
$roomPricingCalculator,
|
||||
$servicePricingCalculator,
|
||||
$participantPricingCalculator
|
||||
);
|
||||
|
||||
$result = $this->service->calculateServicePricing($bookingDto);
|
||||
|
||||
Reference in New Issue
Block a user