Files
magento2/app/code/Magento/Checkout/Test/Unit/Model/GuestShippingInformationManagementTest.php

85 lines
2.9 KiB
PHP

<?php
/**
* Copyright © Magento, Inc. All rights reserved.
* See COPYING.txt for license details.
*/
declare(strict_types=1);
namespace Magento\Checkout\Test\Unit\Model;
use Magento\Checkout\Api\Data\PaymentDetailsInterface;
use Magento\Checkout\Api\Data\ShippingInformationInterface;
use Magento\Checkout\Api\ShippingInformationManagementInterface;
use Magento\Checkout\Model\GuestShippingInformationManagement;
use Magento\Framework\TestFramework\Unit\Helper\ObjectManager;
use Magento\Quote\Model\QuoteIdMask;
use Magento\Quote\Model\QuoteIdMaskFactory;
use PHPUnit\Framework\MockObject\MockObject;
use PHPUnit\Framework\TestCase;
class GuestShippingInformationManagementTest extends TestCase
{
/**
* @var MockObject
*/
protected $shippingInformationManagementMock;
/**
* @var MockObject
*/
protected $quoteIdMaskFactoryMock;
/**
* @var GuestShippingInformationManagement
*/
protected $model;
protected function setUp(): void
{
$objectManager = new ObjectManager($this);
$this->quoteIdMaskFactoryMock = $this->createPartialMock(
QuoteIdMaskFactory::class,
['create']
);
$this->shippingInformationManagementMock = $this->createMock(
ShippingInformationManagementInterface::class
);
$this->model = $objectManager->getObject(
GuestShippingInformationManagement::class,
[
'quoteIdMaskFactory' => $this->quoteIdMaskFactoryMock,
'shippingInformationManagement' => $this->shippingInformationManagementMock
]
);
}
public function testSaveAddressInformation()
{
$cartId = 'masked_id';
$quoteId = '100';
$addressInformationMock = $this->getMockForAbstractClass(ShippingInformationInterface::class);
$quoteIdMaskMock = $this->getMockBuilder(QuoteIdMask::class)
->addMethods(['getQuoteId'])
->onlyMethods(['load'])
->disableOriginalConstructor()
->getMock();
$this->quoteIdMaskFactoryMock->expects($this->once())->method('create')->willReturn($quoteIdMaskMock);
$quoteIdMaskMock->expects($this->once())->method('load')->with($cartId, 'masked_id')->willReturnSelf();
$quoteIdMaskMock->expects($this->once())->method('getQuoteId')->willReturn($quoteId);
$paymentInformationMock = $this->getMockForAbstractClass(PaymentDetailsInterface::class);
$this->shippingInformationManagementMock->expects($this->once())
->method('saveAddressInformation')
->with(
self::callback(fn($actualQuoteId): bool => (int) $quoteId === $actualQuoteId),
$addressInformationMock
)
->willReturn($paymentInformationMock);
$this->model->saveAddressInformation($cartId, $addressInformationMock);
}
}