111 lines
3.6 KiB
PHP
Executable File
111 lines
3.6 KiB
PHP
Executable File
<?php
|
|
/**
|
|
* Copyright © Magento, Inc. All rights reserved.
|
|
* See COPYING.txt for license details.
|
|
*/
|
|
declare(strict_types=1);
|
|
|
|
namespace Magento\Rss\Controller\Feed;
|
|
|
|
use Magento\Customer\Api\CustomerRepositoryInterface;
|
|
use Magento\Customer\Model\Session;
|
|
use Magento\TestFramework\TestCase\AbstractBackendController;
|
|
use Magento\Wishlist\Model\Wishlist;
|
|
|
|
/**
|
|
* Test for \Magento\Rss\Controller\Feed\Index.
|
|
*/
|
|
class IndexTest extends AbstractBackendController
|
|
{
|
|
private const RSS_NEW_PRODUCTS_PATH = 'rss/feed/index/type/new_products/';
|
|
|
|
/**
|
|
* @var CustomerRepositoryInterface
|
|
*/
|
|
private $customerRepository;
|
|
|
|
/**
|
|
* @var Wishlist
|
|
*/
|
|
private $wishlist;
|
|
|
|
/**
|
|
* @var Session
|
|
*/
|
|
private $customerSession;
|
|
|
|
/**
|
|
* @inheritDoc
|
|
*/
|
|
protected function setUp(): void
|
|
{
|
|
parent::setUp();
|
|
$this->customerRepository = $this->_objectManager->get(CustomerRepositoryInterface::class);
|
|
$this->wishlist = $this->_objectManager->get(Wishlist::class);
|
|
$this->customerSession = $this->_objectManager->get(Session::class);
|
|
}
|
|
|
|
/**
|
|
* Check Rss response.
|
|
*
|
|
* @magentoAppIsolation enabled
|
|
* @magentoDataFixture Magento/Wishlist/_files/two_wishlists_for_two_diff_customers.php
|
|
* @magentoConfigFixture current_store rss/wishlist/active 1
|
|
* @magentoConfigFixture current_store rss/config/active 1
|
|
*/
|
|
public function testRssResponse()
|
|
{
|
|
$firstCustomerId = 1;
|
|
$this->customerSession->setCustomerId($firstCustomerId);
|
|
$customer = $this->customerRepository->getById($firstCustomerId);
|
|
$customerEmail = $customer->getEmail();
|
|
$wishlistId = $this->wishlist->loadByCustomerId($firstCustomerId)->getId();
|
|
$this->dispatch($this->getLink($firstCustomerId, $customerEmail, $wishlistId));
|
|
$body = $this->getResponse()->getBody();
|
|
$this->assertStringContainsString('<title>John Smith\'s Wishlist</title>', $body);
|
|
}
|
|
|
|
/**
|
|
* Check Rss response from `New Products`.
|
|
*
|
|
* @magentoConfigFixture current_store rss/catalog/new 1
|
|
* @magentoConfigFixture current_store rss/config/active 1
|
|
*
|
|
* @return void
|
|
*/
|
|
public function testRssResponseNewProducts(): void
|
|
{
|
|
$this->dispatch(self::RSS_NEW_PRODUCTS_PATH);
|
|
$body = $this->getResponse()->getBody();
|
|
$this->assertStringContainsString('<title>New Products from Main Website Store</title>', $body);
|
|
}
|
|
|
|
/**
|
|
* Check Rss with incorrect wishlist id.
|
|
*
|
|
* @magentoAppIsolation enabled
|
|
* @magentoDataFixture Magento/Wishlist/_files/two_wishlists_for_two_diff_customers.php
|
|
* @magentoConfigFixture current_store rss/wishlist/active 1
|
|
* @magentoConfigFixture current_store rss/config/active 1
|
|
*/
|
|
public function testRssResponseWithIncorrectWishlistId()
|
|
{
|
|
$firstCustomerId = 1;
|
|
$secondCustomerId = 2;
|
|
$this->customerSession->setCustomerId($firstCustomerId);
|
|
$customer = $this->customerRepository->getById($firstCustomerId);
|
|
$customerEmail = $customer->getEmail();
|
|
$wishlistId = $this->wishlist->loadByCustomerId($secondCustomerId, true)->getId();
|
|
$this->dispatch($this->getLink($firstCustomerId, $customerEmail, $wishlistId));
|
|
$body = $this->getResponse()->getBody();
|
|
$this->assertStringContainsString('<title>404 Not Found</title>', $body);
|
|
}
|
|
|
|
private function getLink($customerId, $customerEmail, $wishlistId)
|
|
{
|
|
return 'rss/feed/index/type/wishlist/data/'
|
|
. base64_encode($customerId . ',' . $customerEmail)
|
|
. '/wishlist_id/' . $wishlistId;
|
|
}
|
|
}
|