2026-09-23 13:13:49 +02:00
|
|
|
<?php
|
|
|
|
|
|
|
|
|
|
declare(strict_types=1);
|
|
|
|
|
|
|
|
|
|
namespace Tests\Unit\Domain\Models\ValueObjects\Campaign;
|
|
|
|
|
|
|
|
|
|
use Domain\Models\ValueObjects\Campaign\CampaignCoupon;
|
2026-10-12 17:08:07 +02:00
|
|
|
use Domain\Models\ValueObjects\Coupon\CouponCode;
|
2026-09-23 13:13:49 +02:00
|
|
|
use Domain\Models\ValueObjects\PrintRules;
|
|
|
|
|
|
|
|
|
|
covers(CampaignCoupon::class);
|
|
|
|
|
|
|
|
|
|
describe('campaign coupon', function (): void {
|
2026-10-12 17:08:07 +02:00
|
|
|
$couponCode = new CouponCode('AAA01');
|
|
|
|
|
$printRules = new PrintRules(maxPerCustomer: 3);
|
2026-09-23 13:13:49 +02:00
|
|
|
|
2026-10-12 17:08:07 +02:00
|
|
|
it('creates a valid campaign coupon', function () use ($couponCode, $printRules): void {
|
2026-10-01 12:04:26 +02:00
|
|
|
// GIVEN / WHEN
|
2026-09-29 17:12:16 +02:00
|
|
|
$campaignCoupon = new CampaignCoupon(
|
2026-10-12 17:08:07 +02:00
|
|
|
couponCode: $couponCode,
|
|
|
|
|
printRules: $printRules,
|
2026-09-29 17:12:16 +02:00
|
|
|
);
|
|
|
|
|
|
|
|
|
|
// THEN
|
2026-10-12 17:08:07 +02:00
|
|
|
expect($campaignCoupon->couponCode)->toBe($couponCode)
|
|
|
|
|
->and($campaignCoupon->printRules)->toBe($printRules);
|
2026-09-29 17:12:16 +02:00
|
|
|
});
|
|
|
|
|
|
2026-10-12 17:08:07 +02:00
|
|
|
it('creates a valid campaign coupon whitout print rules', function () use ($couponCode): void {
|
2026-10-01 12:04:26 +02:00
|
|
|
// GIVEN / WHEN
|
|
|
|
|
$campaignCoupon = new CampaignCoupon(
|
2026-10-12 17:08:07 +02:00
|
|
|
couponCode: $couponCode,
|
2026-10-01 12:04:26 +02:00
|
|
|
);
|
2026-09-23 13:13:49 +02:00
|
|
|
|
|
|
|
|
// THEN
|
2026-10-12 17:08:07 +02:00
|
|
|
expect($campaignCoupon->couponCode)->toBe($couponCode);
|
2026-09-23 13:13:49 +02:00
|
|
|
});
|
|
|
|
|
});
|