45 lines
1.9 KiB
PHP
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]);
|
|
}
|
|
}
|