toBeInstanceOf(StockAdjustment::class) ->and($adjustment->quantity)->toBe($quantity) ->and($adjustment->reason)->toBe($reason) ->and($adjustment->actorId)->toBe($actorId) ->and($adjustment->createdAt)->toBeNull(); }); it('creates a stock adjustment with an explicit createdAt date', function (): void { // GIVEN $createdAt = new \DateTimeImmutable('2026-06-15 12:00:00', new \DateTimeZone('UTC')); // WHEN $adjustment = new StockAdjustment(10, 'Inventory correction', ActorId::generate(), $createdAt); // THEN expect($adjustment->createdAt)->toBe($createdAt); }); it('rejects a quantity of zero', function (): void { // WHEN $action = fn (): StockAdjustment => new StockAdjustment(0, 'Inventory correction', ActorId::generate()); // THEN expect($action)->toThrow(\DomainException::class, 'Stock Amount should be more than 0.'); }); it('rejects a negative quantity', function (): void { // WHEN $action = fn (): StockAdjustment => new StockAdjustment(-5, 'Inventory correction', ActorId::generate()); // THEN expect($action)->toThrow(\DomainException::class, 'Stock Amount should be more than 0.'); }); });