value)->toBe($coupons); }); it('rejects an empty array', function (): void { // GIVEN / WHEN $action = fn (): CampaignCouponArray => new CampaignCouponArray([]); // THEN expect($action)->toThrow(\DomainException::class, 'Coupons requires at least one CampaignCoupon.'); }); it('rejects a non-coupon element', function (): void { // GIVEN / WHEN $action = fn (): CampaignCouponArray => new CampaignCouponArray(['PC1']); // THEN expect($action)->toThrow(\DomainException::class, 'Coupons must be CampaignCoupon instances.'); }); it('rejects a non-coupon element mixed with valid coupons', function () use ($coupon): void { // GIVEN $coupons = [$coupon, 'PC1']; // WHEN $action = fn (): CampaignCouponArray => new CampaignCouponArray($coupons); // THEN expect($action)->toThrow(\DomainException::class, 'Coupons must be CampaignCoupon instances.'); }); });