From af4ee64fd9ea09ceb6fa40953d58579c8d81f4ce Mon Sep 17 00:00:00 2001 From: Noah Lancien Date: Fri, 30 Oct 2026 09:19:08 +0100 Subject: [PATCH] chore: :rotating_light: linters --- .../Transform/TransformCampaignRequest.php | 4 +++- .../Transform/TransformCampaignRequestTest.php | 10 +++++++++- .../Create/CreatePrintableCouponTest.php | 11 ++++++----- 3 files changed, 18 insertions(+), 7 deletions(-) diff --git a/src/Application/UseCases/CampaignRequest/Transform/TransformCampaignRequest.php b/src/Application/UseCases/CampaignRequest/Transform/TransformCampaignRequest.php index 35dc329..b18dba6 100644 --- a/src/Application/UseCases/CampaignRequest/Transform/TransformCampaignRequest.php +++ b/src/Application/UseCases/CampaignRequest/Transform/TransformCampaignRequest.php @@ -16,7 +16,6 @@ use Domain\Models\ValueObjects\Campaign\CampaignCoupon; use Domain\Models\ValueObjects\Campaign\CampaignCouponArray; use Domain\Models\ValueObjects\CampaignRequest\CampaignRequestStatus; use Domain\Models\ValueObjects\CampaignRequest\CampaignRequestType; -use Domain\Models\ValueObjects\Coupon\CouponCode; use Domain\Models\ValueObjects\Coupon\CouponDiffusion; use Domain\Models\ValueObjects\Coupon\CouponMovement; use Domain\Models\ValueObjects\Coupon\CouponMovementArray; @@ -59,6 +58,9 @@ final readonly class TransformCampaignRequest implements UseCase, Transactional $createdCoupon = self::createCouponFromRequest($campaignRequest, $actorId); + if (! $createdCoupon instanceof Coupon) { + return new CouponAlreadyExists(); + } $campaignCoupon = new CampaignCoupon($createdCoupon->code, $campaignRequest->requestedCoupon->printRules); diff --git a/tests/Unit/Application/UseCases/CampaignRequest/Transform/TransformCampaignRequestTest.php b/tests/Unit/Application/UseCases/CampaignRequest/Transform/TransformCampaignRequestTest.php index 84b0c98..83d9f91 100644 --- a/tests/Unit/Application/UseCases/CampaignRequest/Transform/TransformCampaignRequestTest.php +++ b/tests/Unit/Application/UseCases/CampaignRequest/Transform/TransformCampaignRequestTest.php @@ -80,9 +80,14 @@ describe('transform campaign request use case', function (): void { requestedCoupon: $overrides['coupon'] ?? $requestedCoupon, ); - it('transforms a campaign request to a campaign and a coupon', function () use ($existingCampaignRequest, $campaignName): void { + it('transforms a campaign request to a campaign and a coupon', function () use ( + $existingCampaignRequest, + $campaignName + ): void { // GIVEN $campaignRequest = $existingCampaignRequest(); + $processingCodes = $campaignRequest->requestedCoupon->couponProcessingCodes; + $campaignRequestRepository = \Mockery::mock(CampaignRequestRepository::class); $campaignRequestRepository->shouldReceive('findById')->once()->with($campaignRequest->id)->andReturn($campaignRequest); @@ -90,6 +95,9 @@ describe('transform campaign request use case', function (): void { $campaignRepository = \Mockery::mock(CampaignRepository::class); $campaignRepository->shouldReceive('save')->once()->with(\Mockery::type(Campaign::class)); $couponRepository = \Mockery::mock(CouponRepository::class); + foreach ($processingCodes->toArray() as $processingCode) { + $couponRepository->shouldReceive('existsByProcessingCode')->with($processingCode->value)->andReturn(false); + } $couponRepository->shouldReceive('save')->once()->with(\Mockery::type(Coupon::class)); $input = new Input($campaignRequest->id); diff --git a/tests/Unit/Application/UseCases/PrintableCoupon/Create/CreatePrintableCouponTest.php b/tests/Unit/Application/UseCases/PrintableCoupon/Create/CreatePrintableCouponTest.php index dc2caf8..011c9fc 100644 --- a/tests/Unit/Application/UseCases/PrintableCoupon/Create/CreatePrintableCouponTest.php +++ b/tests/Unit/Application/UseCases/PrintableCoupon/Create/CreatePrintableCouponTest.php @@ -24,7 +24,6 @@ use Domain\Models\ValueObjects\Campaign\CampaignId; use Domain\Models\ValueObjects\Campaign\CampaignName; use Domain\Models\ValueObjects\Coupon\CouponAvailabilityCalendar; use Domain\Models\ValueObjects\Coupon\CouponCode; -use Domain\Models\ValueObjects\Coupon\CouponName; use Domain\Models\ValueObjects\CrmHashcode; use Domain\Models\ValueObjects\Period; use Domain\Models\ValueObjects\PrintableCoupon\MarketingDirectCode; @@ -47,10 +46,12 @@ describe('create coupon use case', function (): void { $brandCode = new BrandCode('AAA01'); $campaignCode = CampaignCode::generate(); $couponCode = CouponCode::generate(); - $printRules = fn (?int $maxPerCustomer = null, ?int $cooldownDays = null): ?PrintRules => ($maxPerCustomer || $cooldownDays) ? new PrintRules( - maxPerCustomer: $maxPerCustomer, - cooldownDays: $cooldownDays, - ) : null; + $printRules = fn (?int $maxPerCustomer = null, ?int $cooldownDays = null): ?PrintRules => ($maxPerCustomer || $cooldownDays) + ? new PrintRules( + maxPerCustomer: $maxPerCustomer, + cooldownDays: $cooldownDays, + ) + : null; $makeCoupon = fn (array $overrides = []): Coupon => CouponFactory::make( diffusionStart: $overrides['diffusionStart'] ?? null,