Files
2026-09-15 10:35:56 +08:00

45 lines
1.9 KiB
PHP

<?php
declare(strict_types=1);
namespace Esun\SeventeenTrack\Test\Unit\Model;
use Esun\SeventeenTrack\Model\Config;
use Esun\SeventeenTrack\Model\DeliveryStatusUpdater;
use Esun\SeventeenTrack\Model\TrackingRepository;
use Magento\Sales\Api\OrderRepositoryInterface;
use Magento\Sales\Model\Order;
use PHPUnit\Framework\TestCase;
class DeliveryStatusUpdaterTest extends TestCase
{
public function testMarksShippedOrderReceivedWhenEveryPackageIsDelivered(): void
{
$config = $this->createMock(Config::class);
$config->method('shouldAutoReceive')->willReturn(true);
$tracking = $this->createMock(TrackingRepository::class);
$tracking->expects(self::once())->method('isOrderDelivered')->with(29)->willReturn(true);
$order = $this->createMock(Order::class);
$order->method('getStatus')->willReturn('shipped');
$order->expects(self::once())->method('setStatus')->with('received')->willReturnSelf();
$order->expects(self::once())->method('addCommentToStatusHistory')->willReturnSelf();
$orders = $this->createMock(OrderRepositoryInterface::class);
$orders->method('get')->with(29)->willReturn($order);
$orders->expects(self::once())->method('save')->with($order)->willReturn($order);
(new DeliveryStatusUpdater($config, $tracking, $orders))->execute([29, 29]);
}
public function testDoesNotLoadOrderUntilEveryPackageIsDelivered(): void
{
$config = $this->createMock(Config::class);
$config->method('shouldAutoReceive')->willReturn(true);
$tracking = $this->createMock(TrackingRepository::class);
$tracking->method('isOrderDelivered')->with(29)->willReturn(false);
$orders = $this->createMock(OrderRepositoryInterface::class);
$orders->expects(self::never())->method('get');
$orders->expects(self::never())->method('save');
(new DeliveryStatusUpdater($config, $tracking, $orders))->execute([29]);
}
}