fix: 🚚 renaming classes that do not belong directly to Coupons

This commit is contained in:
Alexis Gousseau 2026-10-13 15:41:21 +02:00
parent c3a3d1cb83
commit d75f132ee1
No known key found for this signature in database
GPG key ID: 7F3C786EE12DBB72
26 changed files with 168 additions and 165 deletions

View file

@ -12,11 +12,11 @@ use Domain\Models\ValueObjects\Coupon\CouponDiffusion;
use Domain\Models\ValueObjects\Coupon\CouponLegalInformationArray;
use Domain\Models\ValueObjects\Coupon\CouponName;
use Domain\Models\ValueObjects\Coupon\CouponPicture;
use Domain\Models\ValueObjects\Coupon\CouponProcessingCodeArray;
use Domain\Models\ValueObjects\Coupon\CouponProductArray;
use Domain\Models\ValueObjects\Coupon\CouponQuantity;
use Domain\Models\ValueObjects\Coupon\CouponValidityInformationArray;
use Domain\Models\ValueObjects\MoneyAmount;
use Domain\Models\ValueObjects\ProcessingCodeArray;
use Shared\DDD\UseCases\Input as UseCaseInput;
final readonly class Input implements UseCaseInput
@ -29,7 +29,7 @@ final readonly class Input implements UseCaseInput
public CouponDiffusion $diffusion,
public CouponValidityInformationArray $validityInformations,
public CouponLegalInformationArray $legalInformations,
public CouponProcessingCodeArray $processingCode,
public ProcessingCodeArray $processingCode,
public BrandCode $brandCode,
public ActorId $createdBy,
public CouponProductArray $products,

View file

@ -14,11 +14,11 @@ use Domain\Models\ValueObjects\Coupon\CouponLegalInformationArray;
use Domain\Models\ValueObjects\Coupon\CouponMovementArray;
use Domain\Models\ValueObjects\Coupon\CouponName;
use Domain\Models\ValueObjects\Coupon\CouponPicture;
use Domain\Models\ValueObjects\Coupon\CouponProcessingCodeArray;
use Domain\Models\ValueObjects\Coupon\CouponProductArray;
use Domain\Models\ValueObjects\Coupon\CouponQuantity;
use Domain\Models\ValueObjects\Coupon\CouponValidityInformationArray;
use Domain\Models\ValueObjects\MoneyAmount;
use Domain\Models\ValueObjects\ProcessingCodeArray;
use Shared\DDD\UseCases\Output as UseCaseOutput;
final readonly class Output implements UseCaseOutput
@ -32,7 +32,7 @@ final readonly class Output implements UseCaseOutput
public CouponDiffusion $diffusion,
public CouponValidityInformationArray $validityInformations,
public CouponLegalInformationArray $legalInformations,
public CouponProcessingCodeArray $processingCode,
public ProcessingCodeArray $processingCode,
public BrandCode $brandCode,
public ActorId $createdBy,
public CouponProductArray $products,

View file

@ -14,11 +14,11 @@ use Domain\Models\ValueObjects\Coupon\CouponLegalInformationArray;
use Domain\Models\ValueObjects\Coupon\CouponMovementArray;
use Domain\Models\ValueObjects\Coupon\CouponName;
use Domain\Models\ValueObjects\Coupon\CouponPicture;
use Domain\Models\ValueObjects\Coupon\CouponProcessingCodeArray;
use Domain\Models\ValueObjects\Coupon\CouponProductArray;
use Domain\Models\ValueObjects\Coupon\CouponQuantity;
use Domain\Models\ValueObjects\Coupon\CouponValidityInformationArray;
use Domain\Models\ValueObjects\MoneyAmount;
use Domain\Models\ValueObjects\ProcessingCodeArray;
final readonly class CouponFound implements Output
{
@ -35,7 +35,7 @@ final readonly class CouponFound implements Output
public ?CouponAvailabilityCalendar $availabilityCalendar,
public CouponValidityInformationArray $validityInformations,
public CouponLegalInformationArray $legalInformations,
public CouponProcessingCodeArray $processingCode,
public ProcessingCodeArray $processingCode,
public Brand $brand,
public ActorId $createdBy,
public CouponProductArray $products,

View file

@ -15,11 +15,11 @@ use Domain\Models\ValueObjects\Coupon\CouponLegalInformationArray;
use Domain\Models\ValueObjects\Coupon\CouponMovementArray;
use Domain\Models\ValueObjects\Coupon\CouponName;
use Domain\Models\ValueObjects\Coupon\CouponPicture;
use Domain\Models\ValueObjects\Coupon\CouponProcessingCodeArray;
use Domain\Models\ValueObjects\Coupon\CouponProductArray;
use Domain\Models\ValueObjects\Coupon\CouponQuantity;
use Domain\Models\ValueObjects\Coupon\CouponValidityInformationArray;
use Domain\Models\ValueObjects\MoneyAmount;
use Domain\Models\ValueObjects\ProcessingCodeArray;
use Shared\DDD\Models\AggregateRoot;
use Shared\DDD\Models\HasTimestampIdentifier;
@ -37,7 +37,7 @@ final readonly class Coupon implements AggregateRoot, HasTimestampIdentifier
public CouponDiffusion $diffusion,
public CouponValidityInformationArray $validityInformations,
public CouponLegalInformationArray $legalInformations,
public CouponProcessingCodeArray $processingCode,
public ProcessingCodeArray $processingCode,
public BrandCode $brandCode,
public ActorId $createdBy,
public CouponProductArray $products,
@ -76,7 +76,7 @@ final readonly class Coupon implements AggregateRoot, HasTimestampIdentifier
CouponDiffusion $diffusion,
CouponValidityInformationArray $validityInformations,
CouponLegalInformationArray $legalInformations,
CouponProcessingCodeArray $processingCode,
ProcessingCodeArray $processingCode,
BrandCode $brandCode,
ActorId $createdBy,
CouponProductArray $products,
@ -114,7 +114,7 @@ final readonly class Coupon implements AggregateRoot, HasTimestampIdentifier
CouponDiffusion $diffusion,
CouponValidityInformationArray $validityInformations,
CouponLegalInformationArray $legalInformations,
CouponProcessingCodeArray $processingCode,
ProcessingCodeArray $processingCode,
BrandCode $brandCode,
ActorId $createdBy,
CouponProductArray $products,

View file

@ -4,6 +4,7 @@ declare(strict_types=1);
namespace Domain\Models\ValueObjects\Coupon;
use Domain\Models\ValueObjects\ProcessingCodeArray;
use Shared\Enums\Country;
final readonly class CouponCountryCoverage
@ -13,7 +14,7 @@ final readonly class CouponCountryCoverage
}
public static function assert(
CouponProcessingCodeArray $processingCodes,
ProcessingCodeArray $processingCodes,
CouponValidityInformationArray $validityInformations,
CouponLegalInformationArray $legalInformations,
): void {

View file

@ -4,15 +4,17 @@ declare(strict_types=1);
namespace Domain\Models\ValueObjects\Coupon;
use Domain\Models\ValueObjects\IncoCode;
final readonly class CouponProductArray
{
public function __construct(
/** @var CouponIncoCode[] */
/** @var IncoCode[] */
public array $value = [],
) {
foreach ($this->value as $product) {
if (! $product instanceof CouponIncoCode) {
throw new \DomainException('Value of CouponProductArray must be CouponIncoCode instances.');
if (! $product instanceof IncoCode) {
throw new \DomainException('Value of CouponProductArray must be IncoCode instances.');
}
}
}

View file

@ -2,9 +2,9 @@
declare(strict_types=1);
namespace Domain\Models\ValueObjects\Coupon;
namespace Domain\Models\ValueObjects;
final readonly class CouponIncoCode
final readonly class IncoCode
{
/**
* @throws \DomainException

View file

@ -2,12 +2,12 @@
declare(strict_types=1);
namespace Domain\Models\ValueObjects\Coupon;
namespace Domain\Models\ValueObjects;
use Shared\DDD\Models\Equatable;
use Shared\Enums\Country;
final readonly class CouponProcessingCode implements \Stringable, Equatable
final readonly class ProcessingCode implements \Stringable, Equatable
{
private const string PATTERN = '/^\d{13}\z/';

View file

@ -2,31 +2,31 @@
declare(strict_types=1);
namespace Domain\Models\ValueObjects\Coupon;
namespace Domain\Models\ValueObjects;
use Shared\Enums\Country;
final readonly class CouponProcessingCodeArray
final readonly class ProcessingCodeArray
{
public function __construct(
/** @var CouponProcessingCode[] */
/** @var ProcessingCode[] */
public array $value,
) {
if ($this->value === []) {
throw new \DomainException('ProcessingCodes requires at least one CouponProcessingCode.');
throw new \DomainException('ProcessingCodes requires at least one ProcessingCode.');
}
$hasFrance = false;
$countries = [];
foreach ($this->value as $processingCode) {
if (! $processingCode instanceof CouponProcessingCode) {
throw new \DomainException('Value of CouponProcessingCodeArray must be CouponProcessingCode instances.');
if (! $processingCode instanceof ProcessingCode) {
throw new \DomainException('Value of ProcessingCodeArray must be ProcessingCode instances.');
}
if (isset($countries[$processingCode->availableIn->name])) {
throw new \DomainException(sprintf(
'Only one CouponProcessingCode is allowed per country, duplicate for %s.',
'Only one ProcessingCode is allowed per country, duplicate for %s.',
$processingCode->availableIn->name,
));
}
@ -39,7 +39,7 @@ final readonly class CouponProcessingCodeArray
}
if (! $hasFrance) {
throw new \DomainException('CouponProcessingCodes requires a CouponProcessingCode for France.');
throw new \DomainException('ProcessingCodes requires a ProcessingCode for France.');
}
}
}

View file

@ -8,12 +8,12 @@ use Domain\Models\ValueObjects\Coupon\CouponCountryCoverage;
use Domain\Models\ValueObjects\Coupon\CouponLegalInformationArray;
use Domain\Models\ValueObjects\Coupon\CouponName;
use Domain\Models\ValueObjects\Coupon\CouponPicture;
use Domain\Models\ValueObjects\Coupon\CouponProcessingCodeArray;
use Domain\Models\ValueObjects\Coupon\CouponProductArray;
use Domain\Models\ValueObjects\Coupon\CouponValidityInformationArray;
use Domain\Models\ValueObjects\MoneyAmount;
use Domain\Models\ValueObjects\Period;
use Domain\Models\ValueObjects\PrintRules;
use Domain\Models\ValueObjects\ProcessingCodeArray;
final readonly class RequestedCoupon
{
@ -23,7 +23,7 @@ final readonly class RequestedCoupon
public Period $diffusion,
public MoneyAmount $moneyAmount,
public CouponPicture $couponPicture,
public CouponProcessingCodeArray $couponProcessingCodes,
public ProcessingCodeArray $couponProcessingCodes,
public CouponValidityInformationArray $couponValidityInformations,
public CouponLegalInformationArray $couponLegalInformations,
public CouponProductArray $couponProducts,

View file

@ -14,20 +14,20 @@ use Domain\Models\ValueObjects\Campaign\CampaignName;
use Domain\Models\ValueObjects\CampaignRequest\Applicant;
use Domain\Models\ValueObjects\CampaignRequest\CampaignRequestStatus;
use Domain\Models\ValueObjects\CampaignRequest\CampaignRequestType;
use Domain\Models\ValueObjects\Coupon\CouponIncoCode;
use Domain\Models\ValueObjects\Coupon\CouponLegalInformation;
use Domain\Models\ValueObjects\Coupon\CouponLegalInformationArray;
use Domain\Models\ValueObjects\Coupon\CouponName;
use Domain\Models\ValueObjects\Coupon\CouponPicture;
use Domain\Models\ValueObjects\Coupon\CouponProcessingCode;
use Domain\Models\ValueObjects\Coupon\CouponProcessingCodeArray;
use Domain\Models\ValueObjects\Coupon\CouponProductArray;
use Domain\Models\ValueObjects\Coupon\CouponValidityInformation;
use Domain\Models\ValueObjects\Coupon\CouponValidityInformationArray;
use Domain\Models\ValueObjects\IncoCode;
use Domain\Models\ValueObjects\MoneyAmount;
use Domain\Models\ValueObjects\Period;
use Domain\Models\ValueObjects\PicturePath;
use Domain\Models\ValueObjects\PrintRules;
use Domain\Models\ValueObjects\ProcessingCode;
use Domain\Models\ValueObjects\ProcessingCodeArray;
use Domain\Models\ValueObjects\RequestedCoupon\RequestedCoupon;
use Domain\Models\ValueObjects\RequestedCoupon\RequestedCouponQuantity;
use Domain\Ports\Repositories\BrandRepository;
@ -55,8 +55,8 @@ describe('create campaign request use case', function (): void {
new PicturePath('files/thumbnail.jpg'),
new PicturePath('files/mobileThumbnail.jpg')
),
couponProcessingCodes: new CouponProcessingCodeArray([
new CouponProcessingCode('5425003944130', Country::FRANCE),
couponProcessingCodes: new ProcessingCodeArray([
new ProcessingCode('5425003944130', Country::FRANCE),
]),
couponValidityInformations: new CouponValidityInformationArray([
new CouponValidityInformation('Lorem ipsum dolor sit amet consectetur adipiscing elit.', Country::FRANCE),
@ -66,7 +66,7 @@ describe('create campaign request use case', function (): void {
new CouponLegalInformation('Lorem ipsum dolor sit amet consectetur adipiscing elit.', Country::FRANCE),
new CouponLegalInformation('Lorem ipsum dolor sit amet consectetur adipiscing elit.', Country::BENELUX)
]),
couponProducts: new CouponProductArray([new CouponIncoCode(35784), new CouponIncoCode(15522)]),
couponProducts: new CouponProductArray([new IncoCode(35784), new IncoCode(15522)]),
printRules: new PrintRules(maxPerCustomer: 3)
),
);

View file

@ -21,20 +21,20 @@ use Domain\Models\ValueObjects\CampaignRequest\CampaignRequestId;
use Domain\Models\ValueObjects\CampaignRequest\CampaignRequestStatus;
use Domain\Models\ValueObjects\CampaignRequest\CampaignRequestType;
use Domain\Models\ValueObjects\CampaignRequest\RejectionReason;
use Domain\Models\ValueObjects\Coupon\CouponIncoCode;
use Domain\Models\ValueObjects\Coupon\CouponLegalInformation;
use Domain\Models\ValueObjects\Coupon\CouponLegalInformationArray;
use Domain\Models\ValueObjects\Coupon\CouponName;
use Domain\Models\ValueObjects\Coupon\CouponPicture;
use Domain\Models\ValueObjects\Coupon\CouponProcessingCode;
use Domain\Models\ValueObjects\Coupon\CouponProcessingCodeArray;
use Domain\Models\ValueObjects\Coupon\CouponProductArray;
use Domain\Models\ValueObjects\Coupon\CouponValidityInformation;
use Domain\Models\ValueObjects\Coupon\CouponValidityInformationArray;
use Domain\Models\ValueObjects\IncoCode;
use Domain\Models\ValueObjects\MoneyAmount;
use Domain\Models\ValueObjects\Period;
use Domain\Models\ValueObjects\PicturePath;
use Domain\Models\ValueObjects\PrintRules;
use Domain\Models\ValueObjects\ProcessingCode;
use Domain\Models\ValueObjects\ProcessingCodeArray;
use Domain\Models\ValueObjects\RequestedCoupon\RequestedCoupon;
use Domain\Models\ValueObjects\RequestedCoupon\RequestedCouponQuantity;
use Domain\Ports\Repositories\BrandRepository;
@ -59,8 +59,8 @@ describe('find campaign request use case', function (): void {
new PicturePath('files/thumbnail.jpg'),
new PicturePath('files/mobileThumbnail.jpg')
),
couponProcessingCodes: new CouponProcessingCodeArray([
new CouponProcessingCode('5425003944130', Country::FRANCE),
couponProcessingCodes: new ProcessingCodeArray([
new ProcessingCode('5425003944130', Country::FRANCE),
]),
couponValidityInformations: new CouponValidityInformationArray([
new CouponValidityInformation('Lorem ipsum dolor sit amet consectetur adipiscing elit.', Country::FRANCE),
@ -70,7 +70,7 @@ describe('find campaign request use case', function (): void {
new CouponLegalInformation('Lorem ipsum dolor sit amet consectetur adipiscing elit.', Country::FRANCE),
new CouponLegalInformation('Lorem ipsum dolor sit amet consectetur adipiscing elit.', Country::BENELUX)
]),
couponProducts: new CouponProductArray([new CouponIncoCode(35784), new CouponIncoCode(15522)]),
couponProducts: new CouponProductArray([new IncoCode(35784), new IncoCode(15522)]),
printRules: new PrintRules(maxPerCustomer: 3),
);

View file

@ -16,20 +16,20 @@ use Domain\Models\ValueObjects\CampaignRequest\CampaignRequestSortCriteria;
use Domain\Models\ValueObjects\CampaignRequest\CampaignRequestSortField;
use Domain\Models\ValueObjects\CampaignRequest\CampaignRequestStatus;
use Domain\Models\ValueObjects\CampaignRequest\CampaignRequestType;
use Domain\Models\ValueObjects\Coupon\CouponIncoCode;
use Domain\Models\ValueObjects\Coupon\CouponLegalInformation;
use Domain\Models\ValueObjects\Coupon\CouponLegalInformationArray;
use Domain\Models\ValueObjects\Coupon\CouponName;
use Domain\Models\ValueObjects\Coupon\CouponPicture;
use Domain\Models\ValueObjects\Coupon\CouponProcessingCode;
use Domain\Models\ValueObjects\Coupon\CouponProcessingCodeArray;
use Domain\Models\ValueObjects\Coupon\CouponProductArray;
use Domain\Models\ValueObjects\Coupon\CouponValidityInformation;
use Domain\Models\ValueObjects\Coupon\CouponValidityInformationArray;
use Domain\Models\ValueObjects\IncoCode;
use Domain\Models\ValueObjects\MoneyAmount;
use Domain\Models\ValueObjects\Period;
use Domain\Models\ValueObjects\PicturePath;
use Domain\Models\ValueObjects\PrintRules;
use Domain\Models\ValueObjects\ProcessingCode;
use Domain\Models\ValueObjects\ProcessingCodeArray;
use Domain\Models\ValueObjects\RequestedCoupon\RequestedCoupon;
use Domain\Models\ValueObjects\RequestedCoupon\RequestedCouponQuantity;
use Domain\Ports\Repositories\CampaignRequestRepository;
@ -53,8 +53,8 @@ describe('list campaigns request use case', function (): void {
new PicturePath('files/thumbnail.jpg'),
new PicturePath('files/mobileThumbnail.jpg')
),
couponProcessingCodes: new CouponProcessingCodeArray([
new CouponProcessingCode('5425003944130', Country::FRANCE),
couponProcessingCodes: new ProcessingCodeArray([
new ProcessingCode('5425003944130', Country::FRANCE),
]),
couponValidityInformations: new CouponValidityInformationArray([
new CouponValidityInformation('Lorem ipsum dolor sit amet consectetur adipiscing elit.', Country::FRANCE),
@ -64,7 +64,7 @@ describe('list campaigns request use case', function (): void {
new CouponLegalInformation('Lorem ipsum dolor sit amet consectetur adipiscing elit.', Country::FRANCE),
new CouponLegalInformation('Lorem ipsum dolor sit amet consectetur adipiscing elit.', Country::BENELUX)
]),
couponProducts: new CouponProductArray([new CouponIncoCode(35784), new CouponIncoCode(15522)]),
couponProducts: new CouponProductArray([new IncoCode(35784), new IncoCode(15522)]),
printRules: new PrintRules(maxPerCustomer: 3),
);
@ -78,8 +78,8 @@ describe('list campaigns request use case', function (): void {
new PicturePath('files/thumbnail.jpg'),
new PicturePath('files/mobileThumbnail.jpg')
),
couponProcessingCodes: new CouponProcessingCodeArray([
new CouponProcessingCode('5425003944130', Country::FRANCE),
couponProcessingCodes: new ProcessingCodeArray([
new ProcessingCode('5425003944130', Country::FRANCE),
]),
couponValidityInformations: new CouponValidityInformationArray([
new CouponValidityInformation('Lorem ipsum dolor sit amet consectetur adipiscing elit.', Country::FRANCE),
@ -89,7 +89,7 @@ describe('list campaigns request use case', function (): void {
new CouponLegalInformation('Lorem ipsum dolor sit amet consectetur adipiscing elit.', Country::FRANCE),
new CouponLegalInformation('Lorem ipsum dolor sit amet consectetur adipiscing elit.', Country::BENELUX)
]),
couponProducts: new CouponProductArray([new CouponIncoCode(35784), new CouponIncoCode(15522)]),
couponProducts: new CouponProductArray([new IncoCode(35784), new IncoCode(15522)]),
printRules: new PrintRules(maxPerCustomer: 3),
);

View file

@ -19,20 +19,20 @@ use Domain\Models\ValueObjects\CampaignRequest\CampaignRequestId;
use Domain\Models\ValueObjects\CampaignRequest\CampaignRequestStatus;
use Domain\Models\ValueObjects\CampaignRequest\CampaignRequestType;
use Domain\Models\ValueObjects\CampaignRequest\RejectionReason;
use Domain\Models\ValueObjects\Coupon\CouponIncoCode;
use Domain\Models\ValueObjects\Coupon\CouponLegalInformation;
use Domain\Models\ValueObjects\Coupon\CouponLegalInformationArray;
use Domain\Models\ValueObjects\Coupon\CouponName;
use Domain\Models\ValueObjects\Coupon\CouponPicture;
use Domain\Models\ValueObjects\Coupon\CouponProcessingCode;
use Domain\Models\ValueObjects\Coupon\CouponProcessingCodeArray;
use Domain\Models\ValueObjects\Coupon\CouponProductArray;
use Domain\Models\ValueObjects\Coupon\CouponValidityInformation;
use Domain\Models\ValueObjects\Coupon\CouponValidityInformationArray;
use Domain\Models\ValueObjects\IncoCode;
use Domain\Models\ValueObjects\MoneyAmount;
use Domain\Models\ValueObjects\Period;
use Domain\Models\ValueObjects\PicturePath;
use Domain\Models\ValueObjects\PrintRules;
use Domain\Models\ValueObjects\ProcessingCode;
use Domain\Models\ValueObjects\ProcessingCodeArray;
use Domain\Models\ValueObjects\RequestedCoupon\RequestedCoupon;
use Domain\Models\ValueObjects\RequestedCoupon\RequestedCouponQuantity;
use Domain\Ports\Repositories\CampaignRequestRepository;
@ -54,8 +54,8 @@ describe('reject campaign request use case', function (): void {
new PicturePath('files/thumbnail.jpg'),
new PicturePath('files/mobileThumbnail.jpg')
),
couponProcessingCodes: new CouponProcessingCodeArray([
new CouponProcessingCode('5425003944130', Country::FRANCE),
couponProcessingCodes: new ProcessingCodeArray([
new ProcessingCode('5425003944130', Country::FRANCE),
]),
couponValidityInformations: new CouponValidityInformationArray([
new CouponValidityInformation('Lorem ipsum dolor sit amet consectetur adipiscing elit.', Country::FRANCE),
@ -65,7 +65,7 @@ describe('reject campaign request use case', function (): void {
new CouponLegalInformation('Lorem ipsum dolor sit amet consectetur adipiscing elit.', Country::FRANCE),
new CouponLegalInformation('Lorem ipsum dolor sit amet consectetur adipiscing elit.', Country::BENELUX)
]),
couponProducts: new CouponProductArray([new CouponIncoCode(35784), new CouponIncoCode(15522)]),
couponProducts: new CouponProductArray([new IncoCode(35784), new IncoCode(15522)]),
printRules: new PrintRules(maxPerCustomer: 3),
);

View file

@ -21,8 +21,6 @@ use Domain\Models\ValueObjects\Coupon\CouponMovement;
use Domain\Models\ValueObjects\Coupon\CouponMovementArray;
use Domain\Models\ValueObjects\Coupon\CouponName;
use Domain\Models\ValueObjects\Coupon\CouponPicture;
use Domain\Models\ValueObjects\Coupon\CouponProcessingCode;
use Domain\Models\ValueObjects\Coupon\CouponProcessingCodeArray;
use Domain\Models\ValueObjects\Coupon\CouponProductArray;
use Domain\Models\ValueObjects\Coupon\CouponQuantity;
use Domain\Models\ValueObjects\Coupon\CouponValidityInformation;
@ -30,6 +28,8 @@ use Domain\Models\ValueObjects\Coupon\CouponValidityInformationArray;
use Domain\Models\ValueObjects\MoneyAmount;
use Domain\Models\ValueObjects\Period;
use Domain\Models\ValueObjects\PicturePath;
use Domain\Models\ValueObjects\ProcessingCode;
use Domain\Models\ValueObjects\ProcessingCodeArray;
use Domain\Ports\Repositories\BrandRepository;
use Domain\Ports\Repositories\CouponRepository;
use Shared\DDD\UseCases\Input as BaseInput;
@ -58,8 +58,8 @@ describe('create coupon use case', function (): void {
'legalInformations' => new CouponLegalInformationArray([
new CouponLegalInformation('Lorem ipsum dolor sit amet consectetur adipiscing elit.', Country::FRANCE),
]),
'processingCode' => new CouponProcessingCodeArray([
new CouponProcessingCode('5425003944130', Country::FRANCE),
'processingCode' => new ProcessingCodeArray([
new ProcessingCode('5425003944130', Country::FRANCE),
]),
'brandCode' => new BrandCode('TST89'),
'createdBy' => ActorId::generate(),
@ -197,9 +197,9 @@ describe('create coupon use case', function (): void {
it('creates a GS1 coupon with France and Benelux', function () use ($makeInput): void {
// GIVEN
$processingCode = new CouponProcessingCodeArray([
new CouponProcessingCode('5425003944130', Country::FRANCE),
new CouponProcessingCode('5425003944147', Country::BENELUX),
$processingCode = new ProcessingCodeArray([
new ProcessingCode('5425003944130', Country::FRANCE),
new ProcessingCode('5425003944147', Country::BENELUX),
]);
$validityInformations = new CouponValidityInformationArray([
new CouponValidityInformation('Lorem ipsum dolor sit amet consectetur adipiscing elit.', Country::FRANCE),
@ -236,8 +236,8 @@ describe('create coupon use case', function (): void {
it('rejects a coupon that targets only benelux', function () use ($makeInput): void {
// GIVEN / WHEN
$action = fn (): Input => $makeInput([
'processingCode' => new CouponProcessingCodeArray([
new CouponProcessingCode('5425003944147', Country::BENELUX),
'processingCode' => new ProcessingCodeArray([
new ProcessingCode('5425003944147', Country::BENELUX),
]),
'validityInformations' => new CouponValidityInformationArray([
new CouponValidityInformation('Lorem ipsum dolor sit amet consectetur adipiscing elit.', Country::BENELUX),
@ -254,9 +254,9 @@ describe('create coupon use case', function (): void {
it('rejects a benelux processing code without benelux legal information', function () use ($makeInput): void {
// GIVEN
$input = $makeInput([
'processingCode' => new CouponProcessingCodeArray([
new CouponProcessingCode('5425003944130', Country::FRANCE),
new CouponProcessingCode('5425003944147', Country::BENELUX),
'processingCode' => new ProcessingCodeArray([
new ProcessingCode('5425003944130', Country::FRANCE),
new ProcessingCode('5425003944147', Country::BENELUX),
]),
'validityInformations' => new CouponValidityInformationArray([
new CouponValidityInformation('Lorem ipsum dolor sit amet consectetur adipiscing elit.', Country::FRANCE),
@ -283,9 +283,9 @@ describe('create coupon use case', function (): void {
it('rejects a benelux processing code without benelux validity information', function () use ($makeInput): void {
// GIVEN
$input = $makeInput([
'processingCode' => new CouponProcessingCodeArray([
new CouponProcessingCode('5425003944130', Country::FRANCE),
new CouponProcessingCode('5425003944147', Country::BENELUX),
'processingCode' => new ProcessingCodeArray([
new ProcessingCode('5425003944130', Country::FRANCE),
new ProcessingCode('5425003944147', Country::BENELUX),
]),
'legalInformations' => new CouponLegalInformationArray([
new CouponLegalInformation('Lorem ipsum dolor sit amet consectetur adipiscing elit.', Country::FRANCE),
@ -312,9 +312,9 @@ describe('create coupon use case', function (): void {
it('rejects two processing codes for the same country', function () use ($makeInput): void {
// GIVEN / WHEN
$action = fn (): Input => $makeInput([
'processingCode' => new CouponProcessingCodeArray([
new CouponProcessingCode('5425003944130', Country::FRANCE),
new CouponProcessingCode('5425003944147', Country::FRANCE),
'processingCode' => new ProcessingCodeArray([
new ProcessingCode('5425003944130', Country::FRANCE),
new ProcessingCode('5425003944147', Country::FRANCE),
]),
]);

View file

@ -21,22 +21,22 @@ use Domain\Models\ValueObjects\Campaign\CampaignCouponArray;
use Domain\Models\ValueObjects\Campaign\CampaignName;
use Domain\Models\ValueObjects\Coupon\CouponCode;
use Domain\Models\ValueObjects\Coupon\CouponDiffusion;
use Domain\Models\ValueObjects\Coupon\CouponIncoCode;
use Domain\Models\ValueObjects\Coupon\CouponLegalInformation;
use Domain\Models\ValueObjects\Coupon\CouponLegalInformationArray;
use Domain\Models\ValueObjects\Coupon\CouponMovement;
use Domain\Models\ValueObjects\Coupon\CouponMovementArray;
use Domain\Models\ValueObjects\Coupon\CouponName;
use Domain\Models\ValueObjects\Coupon\CouponPicture;
use Domain\Models\ValueObjects\Coupon\CouponProcessingCode;
use Domain\Models\ValueObjects\Coupon\CouponProcessingCodeArray;
use Domain\Models\ValueObjects\Coupon\CouponProductArray;
use Domain\Models\ValueObjects\Coupon\CouponQuantity;
use Domain\Models\ValueObjects\Coupon\CouponValidityInformation;
use Domain\Models\ValueObjects\Coupon\CouponValidityInformationArray;
use Domain\Models\ValueObjects\IncoCode;
use Domain\Models\ValueObjects\MoneyAmount;
use Domain\Models\ValueObjects\Period;
use Domain\Models\ValueObjects\PicturePath;
use Domain\Models\ValueObjects\ProcessingCode;
use Domain\Models\ValueObjects\ProcessingCodeArray;
use Domain\Ports\Repositories\BrandRepository;
use Domain\Ports\Repositories\CampaignRepository;
use Domain\Ports\Repositories\CouponRepository;
@ -83,14 +83,14 @@ describe('find coupon use case', function (): void {
Country::FRANCE
),
]),
processingCode: new CouponProcessingCodeArray([
new CouponProcessingCode('5425003944130', Country::FRANCE),
processingCode: new ProcessingCodeArray([
new ProcessingCode('5425003944130', Country::FRANCE),
]),
brandCode: $brand->code,
createdBy: ActorId::generate(),
products: new CouponProductArray([
new CouponIncoCode(35784),
new CouponIncoCode(15522),
new IncoCode(35784),
new IncoCode(15522),
]),
movements: new CouponMovementArray([
new CouponMovement(1000)

View file

@ -16,24 +16,24 @@ use Domain\Models\ValueObjects\Coupon\CouponAvailabilityCalendar;
use Domain\Models\ValueObjects\Coupon\CouponCode;
use Domain\Models\ValueObjects\Coupon\CouponDiffusion;
use Domain\Models\ValueObjects\Coupon\CouponId;
use Domain\Models\ValueObjects\Coupon\CouponIncoCode;
use Domain\Models\ValueObjects\Coupon\CouponLegalInformation;
use Domain\Models\ValueObjects\Coupon\CouponLegalInformationArray;
use Domain\Models\ValueObjects\Coupon\CouponMovement;
use Domain\Models\ValueObjects\Coupon\CouponMovementArray;
use Domain\Models\ValueObjects\Coupon\CouponName;
use Domain\Models\ValueObjects\Coupon\CouponPicture;
use Domain\Models\ValueObjects\Coupon\CouponProcessingCode;
use Domain\Models\ValueObjects\Coupon\CouponProcessingCodeArray;
use Domain\Models\ValueObjects\Coupon\CouponProductArray;
use Domain\Models\ValueObjects\Coupon\CouponQuantity;
use Domain\Models\ValueObjects\Coupon\CouponSortCriteria;
use Domain\Models\ValueObjects\Coupon\CouponSortField;
use Domain\Models\ValueObjects\Coupon\CouponValidityInformation;
use Domain\Models\ValueObjects\Coupon\CouponValidityInformationArray;
use Domain\Models\ValueObjects\IncoCode;
use Domain\Models\ValueObjects\MoneyAmount;
use Domain\Models\ValueObjects\Period;
use Domain\Models\ValueObjects\PicturePath;
use Domain\Models\ValueObjects\ProcessingCode;
use Domain\Models\ValueObjects\ProcessingCodeArray;
use Domain\Ports\Repositories\CouponRepository;
use Shared\DDD\UseCases\Input as BaseInput;
use Shared\Enums\Country;
@ -65,12 +65,12 @@ describe('list coupons use case', function (): void {
legalInformations: new CouponLegalInformationArray([
new CouponLegalInformation('Lorem ipsum dolor sit amet.', Country::FRANCE),
]),
processingCode: new CouponProcessingCodeArray([
new CouponProcessingCode('ABC1234567890', Country::FRANCE),
processingCode: new ProcessingCodeArray([
new ProcessingCode('5425003944130', Country::FRANCE),
]),
brandCode: new BrandCode('AAA01'),
createdBy: ActorId::generate(),
products: new CouponProductArray([new CouponIncoCode(35784)]),
products: new CouponProductArray([new IncoCode(35784)]),
movements: new CouponMovementArray([new CouponMovement(100)]),
quantity: new CouponQuantity(100),
availabilityCalendar: new CouponAvailabilityCalendar([
@ -97,12 +97,12 @@ describe('list coupons use case', function (): void {
legalInformations: new CouponLegalInformationArray([
new CouponLegalInformation('Lorem ipsum dolor sit amet.', Country::FRANCE),
]),
processingCode: new CouponProcessingCodeArray([
new CouponProcessingCode('DEF0123456789', Country::FRANCE),
processingCode: new ProcessingCodeArray([
new ProcessingCode('5425003944147', Country::FRANCE),
]),
brandCode: new BrandCode('BBB02'),
createdBy: ActorId::generate(),
products: new CouponProductArray([new CouponIncoCode(35784)]),
products: new CouponProductArray([new IncoCode(35784)]),
movements: new CouponMovementArray([new CouponMovement(100)]),
quantity: new CouponQuantity(100),
);

View file

@ -14,20 +14,20 @@ use Domain\Models\ValueObjects\CampaignRequest\CampaignRequestId;
use Domain\Models\ValueObjects\CampaignRequest\CampaignRequestStatus;
use Domain\Models\ValueObjects\CampaignRequest\CampaignRequestType;
use Domain\Models\ValueObjects\CampaignRequest\RejectionReason;
use Domain\Models\ValueObjects\Coupon\CouponIncoCode;
use Domain\Models\ValueObjects\Coupon\CouponLegalInformation;
use Domain\Models\ValueObjects\Coupon\CouponLegalInformationArray;
use Domain\Models\ValueObjects\Coupon\CouponName;
use Domain\Models\ValueObjects\Coupon\CouponPicture;
use Domain\Models\ValueObjects\Coupon\CouponProcessingCode;
use Domain\Models\ValueObjects\Coupon\CouponProcessingCodeArray;
use Domain\Models\ValueObjects\Coupon\CouponProductArray;
use Domain\Models\ValueObjects\Coupon\CouponValidityInformation;
use Domain\Models\ValueObjects\Coupon\CouponValidityInformationArray;
use Domain\Models\ValueObjects\IncoCode;
use Domain\Models\ValueObjects\MoneyAmount;
use Domain\Models\ValueObjects\Period;
use Domain\Models\ValueObjects\PicturePath;
use Domain\Models\ValueObjects\PrintRules;
use Domain\Models\ValueObjects\ProcessingCode;
use Domain\Models\ValueObjects\ProcessingCodeArray;
use Domain\Models\ValueObjects\RequestedCoupon\RequestedCoupon;
use Domain\Models\ValueObjects\RequestedCoupon\RequestedCouponQuantity;
use Ramsey\Uuid\Uuid;
@ -49,8 +49,8 @@ describe('campaign request', function (): void {
new PicturePath('files/thumbnail.jpg'),
new PicturePath('files/mobileThumbnail.jpg')
),
couponProcessingCodes: new CouponProcessingCodeArray([
new CouponProcessingCode('5425003944130', Country::FRANCE),
couponProcessingCodes: new ProcessingCodeArray([
new ProcessingCode('5425003944130', Country::FRANCE),
]),
couponValidityInformations: new CouponValidityInformationArray([
new CouponValidityInformation('Lorem ipsum dolor sit amet consectetur adipiscing elit.', Country::FRANCE),
@ -60,7 +60,7 @@ describe('campaign request', function (): void {
new CouponLegalInformation('Lorem ipsum dolor sit amet consectetur adipiscing elit.', Country::FRANCE),
new CouponLegalInformation('Lorem ipsum dolor sit amet consectetur adipiscing elit.', Country::BENELUX)
]),
couponProducts: new CouponProductArray([new CouponIncoCode(35784), new CouponIncoCode(15522)]),
couponProducts: new CouponProductArray([new IncoCode(35784), new IncoCode(15522)]),
printRules: new PrintRules(maxPerCustomer: 3),
);
$code = new BrandCode('AAA01');

View file

@ -6,7 +6,6 @@ namespace Tests\Unit\Domain\Models\Entities;
use Carbon\CarbonImmutable;
use DateTime;
use Shared\Enums\Country;
use Domain\Models\Entities\Coupon;
use Domain\Models\ValueObjects\Actor\ActorId;
use Domain\Models\ValueObjects\Brand\BrandCode;
@ -14,23 +13,24 @@ use Domain\Models\ValueObjects\Coupon\CouponAvailabilityCalendar;
use Domain\Models\ValueObjects\Coupon\CouponCode;
use Domain\Models\ValueObjects\Coupon\CouponDiffusion;
use Domain\Models\ValueObjects\Coupon\CouponId;
use Domain\Models\ValueObjects\Coupon\CouponIncoCode;
use Domain\Models\ValueObjects\Coupon\CouponLegalInformation;
use Domain\Models\ValueObjects\Coupon\CouponLegalInformationArray;
use Domain\Models\ValueObjects\Coupon\CouponMovement;
use Domain\Models\ValueObjects\Coupon\CouponMovementArray;
use Domain\Models\ValueObjects\Coupon\CouponName;
use Domain\Models\ValueObjects\Coupon\CouponPicture;
use Domain\Models\ValueObjects\Coupon\CouponProcessingCode;
use Domain\Models\ValueObjects\Coupon\CouponProcessingCodeArray;
use Domain\Models\ValueObjects\Coupon\CouponProductArray;
use Domain\Models\ValueObjects\Coupon\CouponQuantity;
use Domain\Models\ValueObjects\Coupon\CouponValidityInformation;
use Domain\Models\ValueObjects\Coupon\CouponValidityInformationArray;
use Domain\Models\ValueObjects\IncoCode;
use Domain\Models\ValueObjects\MoneyAmount;
use Domain\Models\ValueObjects\Period;
use Domain\Models\ValueObjects\PicturePath;
use Domain\Models\ValueObjects\ProcessingCode;
use Domain\Models\ValueObjects\ProcessingCodeArray;
use Ramsey\Uuid\Uuid;
use Shared\Enums\Country;
use Shared\Enums\Currency;
use Shared\ValueObjects\Money;
@ -58,12 +58,12 @@ describe('coupon', function (): void {
Country::FRANCE,
)
]);
$processingCode = new CouponProcessingCodeArray([
new CouponProcessingCode('5425003944130', Country::FRANCE),
$processingCode = new ProcessingCodeArray([
new ProcessingCode('5425003944130', Country::FRANCE),
]);
$brandCode = new BrandCode('AAA01');
$createdBy = ActorId::generate();
$products = new CouponProductArray([new CouponIncoCode(35784), new CouponIncoCode(15522)]);
$products = new CouponProductArray([new IncoCode(35784), new IncoCode(15522)]);
$movements = new CouponMovementArray([new CouponMovement(100)]);
$quantity = new CouponQuantity(100);
$availabilityCalendar = new CouponAvailabilityCalendar([

View file

@ -7,17 +7,17 @@ namespace Tests\Unit\Domain\Models\ValueObjects\Coupon;
use Domain\Models\ValueObjects\Coupon\CouponCountryCoverage;
use Domain\Models\ValueObjects\Coupon\CouponLegalInformation;
use Domain\Models\ValueObjects\Coupon\CouponLegalInformationArray;
use Domain\Models\ValueObjects\Coupon\CouponProcessingCode;
use Domain\Models\ValueObjects\Coupon\CouponProcessingCodeArray;
use Domain\Models\ValueObjects\Coupon\CouponValidityInformation;
use Domain\Models\ValueObjects\Coupon\CouponValidityInformationArray;
use Domain\Models\ValueObjects\ProcessingCode;
use Domain\Models\ValueObjects\ProcessingCodeArray;
use Shared\Enums\Country;
covers(CouponCountryCoverage::class);
describe('coupon country coverage', function (): void {
$franceCode = new CouponProcessingCode('5425003944130', Country::FRANCE);
$beneluxCode = new CouponProcessingCode('5425003944147', Country::BENELUX);
$franceCode = new ProcessingCode('5425003944130', Country::FRANCE);
$beneluxCode = new ProcessingCode('5425003944147', Country::BENELUX);
$franceValidity = new CouponValidityInformation('Lorem ipsum dolor sit amet consectetur adipiscing elit.', Country::FRANCE);
$beneluxValidity = new CouponValidityInformation('Lorem ipsum dolor sit amet consectetur adipiscing elit.', Country::BENELUX);
$franceLegal = new CouponLegalInformation('Lorem ipsum dolor sit amet consectetur adipiscing elit.', Country::FRANCE);
@ -26,7 +26,7 @@ describe('coupon country coverage', function (): void {
it('accepts a france only coupon', function () use ($franceCode, $franceValidity, $franceLegal): void {
// GIVEN / WHEN
$action = fn () => CouponCountryCoverage::assert(
new CouponProcessingCodeArray([$franceCode]),
new ProcessingCodeArray([$franceCode]),
new CouponValidityInformationArray([$franceValidity]),
new CouponLegalInformationArray([$franceLegal]),
);
@ -45,7 +45,7 @@ describe('coupon country coverage', function (): void {
): void {
// GIVEN / WHEN
$action = fn () => CouponCountryCoverage::assert(
new CouponProcessingCodeArray([$franceCode, $beneluxCode]),
new ProcessingCodeArray([$franceCode, $beneluxCode]),
new CouponValidityInformationArray([$franceValidity, $beneluxValidity]),
new CouponLegalInformationArray([$franceLegal, $beneluxLegal]),
);
@ -63,7 +63,7 @@ describe('coupon country coverage', function (): void {
): void {
// GIVEN / WHEN
$action = fn () => CouponCountryCoverage::assert(
new CouponProcessingCodeArray([$franceCode, $beneluxCode]),
new ProcessingCodeArray([$franceCode, $beneluxCode]),
new CouponValidityInformationArray([$franceValidity]),
new CouponLegalInformationArray([$franceLegal, $beneluxLegal]),
);
@ -81,7 +81,7 @@ describe('coupon country coverage', function (): void {
): void {
// GIVEN / WHEN
$action = fn () => CouponCountryCoverage::assert(
new CouponProcessingCodeArray([$franceCode, $beneluxCode]),
new ProcessingCodeArray([$franceCode, $beneluxCode]),
new CouponValidityInformationArray([$franceValidity, $beneluxValidity]),
new CouponLegalInformationArray([$franceLegal]),
);

View file

@ -4,17 +4,17 @@ declare(strict_types=1);
namespace Tests\Unit\Domain\Models\ValueObjects\Coupon;
use Domain\Models\ValueObjects\Coupon\CouponProcessingCode;
use Domain\Models\ValueObjects\ProcessingCode;
use Shared\Enums\Country;
covers(CouponProcessingCode::class);
covers(ProcessingCode::class);
describe('coupon processing code', function (): void {
$value = '5425003944130';
it('creates a valid processing code', function () use ($value): void {
// GIVEN / WHEN
$code = new CouponProcessingCode($value, Country::FRANCE);
$code = new ProcessingCode($value, Country::FRANCE);
// THEN
expect($code->value)->toBe($value)
@ -23,7 +23,7 @@ describe('coupon processing code', function (): void {
it('rejects an invalid value', function (string $invalidValue): void {
// GIVEN / WHEN
$action = fn (): CouponProcessingCode => new CouponProcessingCode($invalidValue, Country::FRANCE);
$action = fn (): ProcessingCode => new ProcessingCode($invalidValue, Country::FRANCE);
// THEN
expect($action)->toThrow(\DomainException::class, 'Processing Code must be exactly 13 numeric characters');
@ -39,8 +39,8 @@ describe('coupon processing code', function (): void {
it('is equal to another processing code with the same value', function () use ($value): void {
// GIVEN
$code = new CouponProcessingCode($value, Country::FRANCE);
$other = new CouponProcessingCode($value, Country::FRANCE);
$code = new ProcessingCode($value, Country::FRANCE);
$other = new ProcessingCode($value, Country::FRANCE);
// WHEN / THEN
expect($code->equals($other))->toBeTrue();
@ -48,8 +48,8 @@ describe('coupon processing code', function (): void {
it('ignores the country when comparing', function () use ($value): void {
// GIVEN
$france = new CouponProcessingCode($value, Country::FRANCE);
$benelux = new CouponProcessingCode($value, Country::BENELUX);
$france = new ProcessingCode($value, Country::FRANCE);
$benelux = new ProcessingCode($value, Country::BENELUX);
// WHEN / THEN
expect($france->equals($benelux))->toBeTrue();
@ -57,8 +57,8 @@ describe('coupon processing code', function (): void {
it('is not equal to a processing code with a different value', function () use ($value): void {
// GIVEN
$code = new CouponProcessingCode($value, Country::FRANCE);
$other = new CouponProcessingCode('4006381333931', Country::FRANCE);
$code = new ProcessingCode($value, Country::FRANCE);
$other = new ProcessingCode('4006381333931', Country::FRANCE);
// WHEN / THEN
expect($code->equals($other))->toBeFalse();
@ -66,7 +66,7 @@ describe('coupon processing code', function (): void {
it('is not equal to a value that is not a processing code', function () use ($value): void {
// GIVEN
$code = new CouponProcessingCode($value, Country::FRANCE);
$code = new ProcessingCode($value, Country::FRANCE);
// WHEN / THEN
expect($code->equals($value))->toBeFalse()
@ -75,7 +75,7 @@ describe('coupon processing code', function (): void {
it('is converted to its value as a string', function () use ($value): void {
// GIVEN
$code = new CouponProcessingCode($value, Country::FRANCE);
$code = new ProcessingCode($value, Country::FRANCE);
// WHEN / THEN
expect((string) $code)->toBe($value);

View file

@ -4,14 +4,14 @@ declare(strict_types=1);
namespace Tests\Unit\Domain\Models\ValueObjects\Coupon;
use Domain\Models\ValueObjects\Coupon\CouponIncoCode;
use Domain\Models\ValueObjects\Coupon\CouponProductArray;
use Domain\Models\ValueObjects\IncoCode;
covers(CouponProductArray::class);
describe('coupon product array', function (): void {
$firstProduct = new CouponIncoCode(35784);
$secondProduct = new CouponIncoCode(15522);
$firstProduct = new IncoCode(35784);
$secondProduct = new IncoCode(15522);
it('is empty by default', function (): void {
// GIVEN / WHEN
@ -47,7 +47,7 @@ describe('coupon product array', function (): void {
// THEN
expect($action)->toThrow(
\DomainException::class,
'Value of CouponProductArray must be CouponIncoCode instances.',
'Value of CouponProductArray must be IncoCode instances.',
);
});
@ -61,7 +61,7 @@ describe('coupon product array', function (): void {
// THEN
expect($action)->toThrow(
\DomainException::class,
'Value of CouponProductArray must be CouponIncoCode instances.',
'Value of CouponProductArray must be IncoCode instances.',
);
});
});

View file

@ -4,9 +4,9 @@ declare(strict_types=1);
namespace Tests\Unit\Domain\Models\ValueObjects;
use Domain\Models\ValueObjects\Coupon\CouponIncoCode;
use Domain\Models\ValueObjects\IncoCode;
covers(CouponIncoCode::class);
covers(IncoCode::class);
describe('inco code', function (): void {
$value = 1010100101;
@ -14,7 +14,7 @@ describe('inco code', function (): void {
it('creates a valid inco code', function () use ($value): void {
// GIVEN / WHEN
$incoCode = new CouponIncoCode($value);
$incoCode = new IncoCode($value);
// THEN
expect($incoCode->value)->toBe($value);
@ -22,7 +22,7 @@ describe('inco code', function (): void {
it('rejects invalid inco code', function () use ($zeroValue): void {
// GIVEN / WHEN / THEN
expect(fn (): CouponIncoCode => new CouponIncoCode($zeroValue))
expect(fn (): IncoCode => new IncoCode($zeroValue))
->toThrow(\DomainException::class);
});
});

View file

@ -4,10 +4,10 @@ declare(strict_types=1);
namespace Tests\Unit\Domain\Models\ValueObjects;
use Domain\Models\ValueObjects\Coupon\CouponProcessingCode;
use Domain\Models\ValueObjects\ProcessingCode;
use Shared\Enums\Country;
covers(CouponProcessingCode::class);
covers(ProcessingCode::class);
describe('processing code', function (): void {
$value = '5425003944130';
@ -15,7 +15,7 @@ describe('processing code', function (): void {
it('creates a valid processing code FRANCE', function () use ($value): void {
// GIVEN / WHEN
$processingCode = new CouponProcessingCode(
$processingCode = new ProcessingCode(
$value,
Country::FRANCE,
);
@ -26,7 +26,7 @@ describe('processing code', function (): void {
it('creates a valid processing code BENELUX', function () use ($value): void {
// GIVEN / WHEN
$processingCode = new CouponProcessingCode(
$processingCode = new ProcessingCode(
$value,
Country::BENELUX,
);
@ -37,7 +37,7 @@ describe('processing code', function (): void {
it('rejects invalid processing code', function () use ($emptyValue): void {
// GIVEN / WHEN / THEN
expect(fn (): CouponProcessingCode => new CouponProcessingCode(
expect(fn (): ProcessingCode => new ProcessingCode(
$emptyValue,
Country::FRANCE,
))->toThrow(\DomainException::class);

View file

@ -4,22 +4,22 @@ declare(strict_types=1);
namespace Tests\Unit\Domain\Models\ValueObjects\Coupon;
use Domain\Models\ValueObjects\Coupon\CouponProcessingCode;
use Domain\Models\ValueObjects\Coupon\CouponProcessingCodeArray;
use Domain\Models\ValueObjects\ProcessingCode;
use Domain\Models\ValueObjects\ProcessingCodeArray;
use Shared\Enums\Country;
covers(CouponProcessingCodeArray::class);
covers(ProcessingCodeArray::class);
describe('coupon processing code array', function (): void {
$franceCode = new CouponProcessingCode('5425003944130', Country::FRANCE);
$beneluxCode = new CouponProcessingCode('5425003944147', Country::BENELUX);
$franceCode = new ProcessingCode('5425003944130', Country::FRANCE);
$beneluxCode = new ProcessingCode('5425003944147', Country::BENELUX);
it('creates an array containing a France processing code', function () use ($franceCode): void {
// GIVEN
$processingCodes = [$franceCode];
// WHEN
$array = new CouponProcessingCodeArray($processingCodes);
$array = new ProcessingCodeArray($processingCodes);
// THEN
expect($array->value)->toBe($processingCodes);
@ -30,7 +30,7 @@ describe('coupon processing code array', function (): void {
$processingCodes = [$beneluxCode, $franceCode];
// WHEN
$array = new CouponProcessingCodeArray($processingCodes);
$array = new ProcessingCodeArray($processingCodes);
// THEN
expect($array->value)->toBe($processingCodes);
@ -38,12 +38,12 @@ describe('coupon processing code array', function (): void {
it('rejects an empty array', function (): void {
// GIVEN / WHEN
$action = fn (): CouponProcessingCodeArray => new CouponProcessingCodeArray([]);
$action = fn (): ProcessingCodeArray => new ProcessingCodeArray([]);
// THEN
expect($action)->toThrow(
\DomainException::class,
'ProcessingCodes requires at least one CouponProcessingCode.',
'ProcessingCodes requires at least one ProcessingCode.',
);
});
@ -52,27 +52,27 @@ describe('coupon processing code array', function (): void {
// GIVEN
$informations = [
$franceCode,
new CouponProcessingCode('5425003944130', Country::FRANCE),
new ProcessingCode('5425003944130', Country::FRANCE),
];
// WHEN
$action = fn (): CouponProcessingCodeArray => new CouponProcessingCodeArray($informations);
$action = fn (): ProcessingCodeArray => new ProcessingCodeArray($informations);
// THEN
expect($action)->toThrow(
\DomainException::class,
'Only one CouponProcessingCode is allowed per country, duplicate for FRANCE.',
'Only one ProcessingCode is allowed per country, duplicate for FRANCE.',
);
});
it('rejects a non processing code element', function (): void {
// GIVEN / WHEN
$action = fn (): CouponProcessingCodeArray => new CouponProcessingCodeArray(['ABC1234567890']);
$action = fn (): ProcessingCodeArray => new ProcessingCodeArray(['ABC1234567890']);
// THEN
expect($action)->toThrow(
\DomainException::class,
'Value of CouponProcessingCodeArray must be CouponProcessingCode instances.',
'Value of ProcessingCodeArray must be ProcessingCode instances.',
);
});
@ -81,12 +81,12 @@ describe('coupon processing code array', function (): void {
$processingCodes = [$franceCode, 'ABC1234567890'];
// WHEN
$action = fn (): CouponProcessingCodeArray => new CouponProcessingCodeArray($processingCodes);
$action = fn (): ProcessingCodeArray => new ProcessingCodeArray($processingCodes);
// THEN
expect($action)->toThrow(
\DomainException::class,
'Value of CouponProcessingCodeArray must be CouponProcessingCode instances.',
'Value of ProcessingCodeArray must be ProcessingCode instances.',
);
});
@ -95,12 +95,12 @@ describe('coupon processing code array', function (): void {
$processingCodes = [$beneluxCode];
// WHEN
$action = fn (): CouponProcessingCodeArray => new CouponProcessingCodeArray($processingCodes);
$action = fn (): ProcessingCodeArray => new ProcessingCodeArray($processingCodes);
// THEN
expect($action)->toThrow(
\DomainException::class,
'CouponProcessingCodes requires a CouponProcessingCode for France.',
'ProcessingCodes requires a ProcessingCode for France.',
);
});
});

View file

@ -5,20 +5,20 @@ declare(strict_types=1);
namespace Tests\Unit\Domain\Models\ValueObjects\RequestedCoupon;
use DateTime;
use Domain\Models\ValueObjects\Coupon\CouponIncoCode;
use Domain\Models\ValueObjects\Coupon\CouponLegalInformation;
use Domain\Models\ValueObjects\Coupon\CouponLegalInformationArray;
use Domain\Models\ValueObjects\Coupon\CouponName;
use Domain\Models\ValueObjects\Coupon\CouponPicture;
use Domain\Models\ValueObjects\Coupon\CouponProcessingCode;
use Domain\Models\ValueObjects\Coupon\CouponProcessingCodeArray;
use Domain\Models\ValueObjects\Coupon\CouponProductArray;
use Domain\Models\ValueObjects\Coupon\CouponValidityInformation;
use Domain\Models\ValueObjects\Coupon\CouponValidityInformationArray;
use Domain\Models\ValueObjects\IncoCode;
use Domain\Models\ValueObjects\MoneyAmount;
use Domain\Models\ValueObjects\Period;
use Domain\Models\ValueObjects\PicturePath;
use Domain\Models\ValueObjects\PrintRules;
use Domain\Models\ValueObjects\ProcessingCode;
use Domain\Models\ValueObjects\ProcessingCodeArray;
use Domain\Models\ValueObjects\RequestedCoupon\RequestedCoupon;
use Domain\Models\ValueObjects\RequestedCoupon\RequestedCouponQuantity;
use Shared\Enums\Country;
@ -38,9 +38,9 @@ describe('requested coupon', function (): void {
new PicturePath('files/mobileThumbnail.jpg')
);
$franceProcessingCode = new CouponProcessingCode('5425003944130', Country::FRANCE);
$beneluxProcessingCode = new CouponProcessingCode('5425003944147', Country::BENELUX);
$couponProcessingCodes = new CouponProcessingCodeArray([
$franceProcessingCode = new ProcessingCode('5425003944130', Country::FRANCE);
$beneluxProcessingCode = new ProcessingCode('5425003944147', Country::BENELUX);
$couponProcessingCodes = new ProcessingCodeArray([
$franceProcessingCode,
$beneluxProcessingCode,
]);
@ -72,8 +72,8 @@ describe('requested coupon', function (): void {
]);
$couponProducts = new CouponProductArray([
new CouponIncoCode(35784),
new CouponIncoCode(15522),
new IncoCode(35784),
new IncoCode(15522),
]);
$printRules = new PrintRules(maxPerCustomer: 3);
@ -193,7 +193,7 @@ describe('requested coupon', function (): void {
diffusion: $diffusion,
moneyAmount: $moneyAmount,
couponPicture: $couponPicture,
couponProcessingCodes: new CouponProcessingCodeArray([
couponProcessingCodes: new ProcessingCodeArray([
$franceProcessingCode,
]),
couponValidityInformations: new CouponValidityInformationArray([
@ -227,13 +227,13 @@ describe('requested coupon', function (): void {
diffusion: $diffusion,
moneyAmount: $moneyAmount,
couponPicture: $couponPicture,
couponProcessingCodes: new CouponProcessingCodeArray([
couponProcessingCodes: new ProcessingCodeArray([
$beneluxProcessingCode,
]),
couponValidityInformations: $couponValidityInformations,
couponLegalInformations: $couponLegalInformations,
couponProducts: $couponProducts,
))->toThrow(\DomainException::class, 'CouponProcessingCodes requires a CouponProcessingCode for France.');
))->toThrow(\DomainException::class, 'ProcessingCodes requires a ProcessingCode for France.');
});
it('throws when a benelux processing code has no benelux validity information', function () use (