name)->toBe($name) ->and($coupon->productName)->toBe($productName) ->and($coupon->quantity)->toBe($quantity) ->and($coupon->warningThresholdQuantity)->toBe($warningThresholdQuantity) ->and($coupon->period)->toBe($period) ->and($coupon->moneyAmount)->toBe($moneyAmount) ->and($coupon->processingCode)->toBe($processingCode) ->and($coupon->couponPicture)->toBe($couponPicture) ->and($coupon->gs1)->toBe($gs1) ->and($coupon->couponValidity)->toBe($couponValidity); }); it('hydrates a requested coupon without a GS1', function (): void { // WHEN $coupon = new RequestedCoupon( new CouponName('Coupon A'), new CouponProductName('Product A'), new RequestedCouponQuantity(100), new WarningThresholdQuantity(10), new Period(new DateTime('2026-01-01'), new DateTime('2026-02-01')), new MoneyAmount(new Money(Currency::EUR, 300)), new ProcessingCode('PC1'), new CouponPicture(new PicturePath('coupons/product.jpg'), new PicturePath('coupons/thumbnail.jpg')), null, new CouponValidity(30, new DateTime()), ); // THEN expect($coupon->gs1)->toBeNull(); }); });