ldc-mesbr-app/tests/Unit/Domain/Models/ValueObjects/Campaign/CampaignCouponTest.php
2026-10-26 17:10:25 +01:00

70 lines
2 KiB
PHP

<?php
declare(strict_types=1);
namespace Tests\Unit\Domain\Models\ValueObjects\Campaign;
use Domain\Models\ValueObjects\Campaign\CampaignCoupon;
use Domain\Models\ValueObjects\Coupon\CouponCode;
use Domain\Models\ValueObjects\PrintRules;
covers(CampaignCoupon::class);
describe('campaign coupon', function (): void {
$couponCode = new CouponCode('AAA01');
$printRules = new PrintRules(maxPerCustomer: 3);
it('creates a valid campaign coupon', function () use ($couponCode, $printRules): void {
// GIVEN / WHEN
$campaignCoupon = new CampaignCoupon(
couponCode: $couponCode,
printRules: $printRules,
);
// THEN
expect($campaignCoupon->couponCode)->toBe($couponCode)
->and($campaignCoupon->printRules)->toBe($printRules);
});
it('creates a valid campaign coupon whitout print rules', function () use ($couponCode): void {
// GIVEN / WHEN
$campaignCoupon = new CampaignCoupon(
couponCode: $couponCode,
);
// THEN
expect($campaignCoupon->couponCode)->toBe($couponCode);
});
it('returns true when coupon codes are identical', function () use ($couponCode, $printRules): void {
// GIVEN
$campaignCoupon = new CampaignCoupon(
couponCode: $couponCode,
printRules: $printRules,
);
// WHEN
$result = $campaignCoupon->hasCouponCode(
new CouponCode('AAA01'),
);
// THEN
expect($result)->toBeTrue();
});
it('returns false when coupon codes are different', function () use ($couponCode, $printRules): void {
// GIVEN
$campaignCoupon = new CampaignCoupon(
couponCode: $couponCode,
printRules: $printRules,
);
// WHEN
$result = $campaignCoupon->hasCouponCode(
new CouponCode('BBB02'),
);
// THEN
expect($result)->toBeFalse();
});
});