quantity)->toBe(2); }); it('throws exception if quantity is zero or less for OrderPlacedLine', function () { // GIVEN $productName = 'Product'; $incoId = new IncoId(1); $unit = OrderUnit::PCE; $price = new Money(2000, new Currency('EUR')); // WHEN $action = fn () => new OrderPlacedLine($productName, $incoId, false, null, $unit, 0, $price); // THEN expect($action)->toThrow(\DomainException::class, 'Quantity must be greater than 0'); }); }); describe('OrderPlacedShop', function () { it('creates OrderPlacedShop correctly', function () { // GIVEN $name = 'Name'; $address = 'Addr'; $zip = '12345'; $city = 'City'; // WHEN $shop = new OrderPlacedShop($name, $address, $zip, $city); // THEN expect($shop->name)->toBe('Name'); }); it('throws exception if shop name is empty', function () { // GIVEN $name = ' '; $address = 'Addr'; $zip = '12345'; $city = 'City'; // WHEN $action = fn () => new OrderPlacedShop($name, $address, $zip, $city); // THEN expect($action)->toThrow(\DomainException::class, 'Shop name is required'); }); it('throws exception if shop address is empty', function () { // GIVEN $name = 'Name'; $address = ''; $zip = '12345'; $city = 'City'; // WHEN $action = fn () => new OrderPlacedShop($name, $address, $zip, $city); // THEN expect($action)->toThrow(\DomainException::class, 'Shop address is required'); }); it('throws exception if shop postcode is empty', function () { // GIVEN $name = 'Name'; $address = 'Addr'; $zip = ''; $city = 'City'; // WHEN $action = fn () => new OrderPlacedShop($name, $address, $zip, $city); // THEN expect($action)->toThrow(\DomainException::class, 'Shop postcode is required'); }); it('throws exception if shop city is empty', function () { // GIVEN $name = 'Name'; $address = 'Addr'; $zip = '12345'; $city = ' '; // WHEN $action = fn () => new OrderPlacedShop($name, $address, $zip, $city); // THEN expect($action)->toThrow(\DomainException::class, 'Shop city is required'); }); }); describe('RegateOrderCsvGenerated', function () { it('creates RegateOrderCsvGenerated correctly', function () { // GIVEN $csvContent = 'csv'; $fileName = 'file.csv'; // WHEN $dto = new RegateOrderCsvGenerated($csvContent, $fileName); // THEN expect($dto->csvContent)->toBe('csv') ->and($dto->fileName)->toBe('file.csv'); }); }); describe('SalariesHaveBeenSynced', function () { it('creates SalariesHaveBeenSynced correctly', function () { // GIVEN $matricules = [new Matricule('1234567')]; // WHEN $dto = new SalariesHaveBeenSynced($matricules); // THEN expect($dto->matricules)->toBe($matricules); }); it('throws exception if SalariesHaveBeenSynced gets non-matricule', function () { // GIVEN /** @var array $matricules */ $matricules = ['1234567']; // WHEN $action = fn () => new SalariesHaveBeenSynced($matricules); // THEN expect($action)->toThrow(\UnexpectedValueException::class); }); });