<?php
/**
* Copyright © Magento, Inc. All rights reserved.
* See COPYING.txt for license details.
*/
declare(strict_types=1);
namespace Magento\Wishlist\Test\Unit\Block\Rss;
use Magento\Customer\Api\Data\CustomerInterface;
use Magento\Framework\App\Config\ScopeConfigInterface;
use Magento\Framework\App\Rss\UrlBuilderInterface;
use Magento\Framework\TestFramework\Unit\Helper\ObjectManager as ObjectManagerHelper;
use Magento\Framework\Url\EncoderInterface;
use Magento\Store\Model\ScopeInterface;
use Magento\Wishlist\Block\Rss\Link;
use Magento\Wishlist\Helper\Data;
use Magento\Wishlist\Model\Wishlist;
use PHPUnit\Framework\MockObject\MockObject;
use PHPUnit\Framework\TestCase;
class LinkTest extends TestCase
{
/** @var Link */
protected $link;
/** @var ObjectManagerHelper */
protected $objectManagerHelper;
/** @var Data|MockObject */
protected $wishlistHelper;
/** @var UrlBuilderInterface|MockObject */
protected $urlBuilder;
/** @var ScopeConfigInterface|MockObject */
protected $scopeConfig;
/**
* @var EncoderInterface|MockObject
*/
protected $urlEncoder;
protected function setUp(): void
{
$wishlist = $this->createPartialMock(Wishlist::class, ['getId']);
$wishlist->expects($this->any())->method('getId')->willReturn(5);
$customer = $this->getMockForAbstractClass(CustomerInterface::class);
$customer->expects($this->any())->method('getId')->willReturn(8);
$customer->expects($this->any())->method('getEmail')->willReturn('test@example.com');
$this->wishlistHelper = $this->getMockBuilder(Data::class)
->addMethods(['urlEncode'])
->onlyMethods(['getWishlist', 'getCustomer'])
->disableOriginalConstructor()
->getMock();
$this->urlEncoder = $this->createPartialMock(EncoderInterface::class, ['encode']);
$this->wishlistHelper->expects($this->any())->method('getWishlist')->willReturn($wishlist);
$this->wishlistHelper->expects($this->any())->method('getCustomer')->willReturn($customer);
$this->urlEncoder->expects($this->any())
->method('encode')
->willReturnCallback(function ($url) {
return strtr(base64_encode($url), '+/=', '-_,');
});
$this->urlBuilder = $this->getMockForAbstractClass(UrlBuilderInterface::class);
$this->scopeConfig = $this->getMockForAbstractClass(ScopeConfigInterface::class);
$this->objectManagerHelper = new ObjectManagerHelper($this);
$this->link = $this->objectManagerHelper->getObject(
Link::class,
[
'wishlistHelper' => $this->wishlistHelper,
'rssUrlBuilder' => $this->urlBuilder,
'scopeConfig' => $this->scopeConfig,
'urlEncoder' => $this->urlEncoder,
]
);
}
public function testGetLink()
{
$this->urlBuilder->expects($this->atLeastOnce())->method('getUrl')
->with([
'type' => 'wishlist',
'data' => 'OCx0ZXN0QGV4YW1wbGUuY29t',
'_secure' => false,
'wishlist_id' => 5,
])
->willReturn('http://url.com/rss/feed/index/type/wishlist/wishlist_id/5');
$this->assertEquals('http://url.com/rss/feed/index/type/wishlist/wishlist_id/5', $this->link->getLink());
}
public function testIsRssAllowed()
{
$this->scopeConfig
->expects($this->atLeastOnce())
->method('isSetFlag')
->with('rss/wishlist/active', ScopeInterface::SCOPE_STORE)
->willReturn(true);
$this->assertTrue($this->link->isRssAllowed());
}
}
|