<?php
/**
* Copyright © Magento, Inc. All rights reserved.
* See COPYING.txt for license details.
*/
declare(strict_types=1);
namespace Magento\Sales\Test\Unit\Block\Order;
use Magento\Customer\Model\Session;
use Magento\Framework\App\ObjectManager;
use Magento\Framework\ObjectManagerInterface;
use Magento\Framework\View\Element\Template\Context;
use Magento\Framework\View\Page\Title;
use Magento\Sales\Block\Order\History;
use Magento\Sales\Model\Order\Config;
use Magento\Sales\Model\ResourceModel\Order\Collection;
use Magento\Sales\Model\ResourceModel\Order\CollectionFactory;
use Magento\Sales\Model\ResourceModel\Order\CollectionFactoryInterface;
use PHPUnit\Framework\MockObject\MockObject;
use PHPUnit\Framework\TestCase;
class HistoryTest extends TestCase
{
/**
* @var History
*/
protected $model;
/**
* @var Context|MockObject
*/
protected $context;
/**
* @var CollectionFactory|MockObject
*/
protected $orderCollectionFactory;
/**
* @var CollectionFactoryInterface|MockObject
*/
private $orderCollectionFactoryInterface;
/**
* @var ObjectManager|MockObject
*/
private $objectManager;
/**
* @var Session|MockObject
*/
protected $customerSession;
/**
* @var Config|MockObject
*/
protected $orderConfig;
/**
* @var \Magento\Framework\View\Page\Config|MockObject
*/
protected $pageConfig;
/**
* @var Title|MockObject
*/
protected $pageTitleMock;
/**
* @inheirtDoc
*/
protected function setUp(): void
{
$this->context = $this->createMock(Context::class);
$this->orderCollectionFactory =
$this->getMockBuilder(CollectionFactory::class)
->disableOriginalConstructor()
->onlyMethods(['create'])
->getMock();
$this->orderCollectionFactoryInterface =
$this->getMockBuilder(CollectionFactoryInterface::class)
->disableOriginalConstructor()
->onlyMethods(['create'])
->getMockForAbstractClass();
$this->objectManager = $this->getMockForAbstractClass(ObjectManagerInterface::class);
$this->objectManager->expects($this->any())
->method('get')
->willReturn($this->orderCollectionFactoryInterface);
ObjectManager::setInstance($this->objectManager);
$this->customerSession = $this->getMockBuilder(Session::class)
->onlyMethods(['getCustomerId'])
->disableOriginalConstructor()
->getMock();
$this->orderConfig = $this->getMockBuilder(Config::class)
->onlyMethods(['getVisibleOnFrontStatuses'])
->disableOriginalConstructor()
->getMock();
$this->pageConfig = $this->getMockBuilder(\Magento\Framework\View\Page\Config::class)
->disableOriginalConstructor()
->getMock();
$this->pageTitleMock = $this->getMockBuilder(Title::class)
->disableOriginalConstructor()
->getMock();
}
/**
* @return void
*/
public function testConstructMethod(): void
{
$data = [];
$customerId = 25;
$this->customerSession->expects($this->once())
->method('getCustomerId')
->willReturn($customerId);
$statuses = ['pending', 'processing', 'comlete'];
$this->orderConfig->expects($this->once())
->method('getVisibleOnFrontStatuses')
->willReturn($statuses);
$orderCollection = $this->createPartialMock(
Collection::class,
['addFieldToSelect', 'addFieldToFilter', 'setOrder']
);
$this->context->expects($this->any())
->method('getPageConfig')
->willReturn($this->pageConfig);
$orderCollection
->method('addFieldToSelect')
->with('*')
->willReturn($orderCollection);
$orderCollection
->method('setOrder')
->with('created_at', 'desc')
->willReturn($orderCollection);
$orderCollection
->method('addFieldToFilter')
->with('status', ['in' => $statuses])
->willReturn($orderCollection);
$this->orderCollectionFactoryInterface->expects($this->atLeastOnce())
->method('create')
->willReturn($orderCollection);
$this->pageConfig->expects($this->atLeastOnce())
->method('getTitle')
->willReturn($this->pageTitleMock);
$this->pageTitleMock->expects($this->atLeastOnce())
->method('set')
->willReturnSelf();
$this->model = new History(
$this->context,
$this->orderCollectionFactory,
$this->customerSession,
$this->orderConfig,
$data
);
$this->assertEquals($orderCollection, $this->model->getOrders());
}
}
|